重庆卓光网站建设,如何做视频网站 需要注意的地方,做网站一年的维护费用是多少,石家庄哪里做网站达梦#xff1a;【1】达梦常用操作 一、登录达梦二、创建表空间及用户模式三、查看表空间、用户、模式四、系统查询五、角色管理六、数据库导入导出七、达梦数据库汉字存储八、根据表生成ctl控制文件九、本地连多台数据库(RAC) 一、登录达梦
./disql username/passwordip:por… 达梦【1】达梦常用操作 一、登录达梦二、创建表空间及用户模式三、查看表空间、用户、模式四、系统查询五、角色管理六、数据库导入导出七、达梦数据库汉字存储八、根据表生成ctl控制文件九、本地连多台数据库(RAC) 一、登录达梦
./disql username/passwordip:portselect * from dual;二、创建表空间及用户模式
1、一个用户下可以有多个模式名一个模式只能跟着一个用户创建用户会自己生成模式先创建表空间再创建用户绑定表空间
create tablespace 表空间名称 datafile 表空间名称.DBF size 32 CACHE NORMAL; --创建表空间
create user 用户名称 identified by 用户密码 default tablespace 表空间名称; --创建用户2、创建模式
CREATE SCHEMA 模式名称 AUTHORIZATION SYSDBA;三、查看表空间、用户、模式
1、查看表空间
select * from dba_data_files; --查看所有表空间
select * from dba_free_files; --查看所有剩余表空间2、查看用户
select * from dba_users; --查看所有用户3、查看模式
SELECT DISTINCT object_name FROM ALL_OBJECTS WHERE OBJECT_TYPE SCH --查询所有的模式名4、查看模式所属用户
selectSCH_OBJ.NAME ,SCH_OBJ.ID ,SCH_OBJ.CRTDATE,USER_OBJ.NAME
from(select NAME, ID, PID, CRTDATE from SYS.SYSOBJECTS where TYPE$SCH)SCH_OBJ,(select NAME, ID from SYS.SYSOBJECTS where TYPE$UR and SUBTYPE$USER)USER_OBJ
whereSCH_OBJ.PIDUSER_OBJ.ID
ORDER BYSCH_OBJ.NAME;5、查看用户所属角色
SELECT * FROM DBA_ROLE_PRIVS WHERE GRANTEE用户名四、系统查询
1、查看达梦版本
select name,create_time from v$database;2、查看数据库大小写是否敏感
SELECT CASE_SENSITIVE();3、查看用户权限角色
select * from DBA_SYS_PRIVS ;4、查看所有用户
select username from dba_users;5、查看表空间
select TABLESPACE_NAME from user_tablespaces;6、查看指定表字段
select * from all_tab_columns where owner用户名 and Table_Name表名;五、角色管理
1、查询角色的权限
select * from dba_sys_privs where grantee角色名;2、创建角色
CREATE ROLE 角色名;3、给角色授予resource和public的权限
GRANT CREATE TABLE,CREATE INDEX TO 角色名;4、给角色授予创建表和索引的权限
GRANT CREATE TABLE,CREATE INDEX TO 角色名;5、给角色授予查询DMHR模式下CITY表的查询权限
GRANT SELECT ON DMHR.CITY TO 角色名;6、授予角色的权限给用户
GRANT 角色名 TO 用户名;7、回收用户的角色权限
REVOKE 角色名 FROM 用户名;8、启用角色
sp_set_role(角色名,1);9、禁用角色
sp_set_role(角色名,0);10、删除角色
DROP ROLE 角色名;六、数据库导入导出
1、数据库导出
./dexp SYSDBA/SYSDBAIP:PORT directory/data/sdb/snn fileimp_exp.dmp schemasfuck
file导出文件名
directory导出文件存放路径
schemas导出模式名2、数据库导入
./dimp SYSDBA/SYSDBAIP:PORT file/data/sdb/snn/imp_exp.dmp remap_schemafuck:
file导入文件路径及名称
remap_schema原导出模式名:待导入模式名七、达梦数据库汉字存储 UNICODE_FLAG和LENGTH_IN_CHAR两个跟字符集相关的参数UNICODE_FLAG 此参数表示了数据库中所有数据的字符集包括数据字典的字符集需要注意的是数据库一旦初始化完成字符集就无法修改可以用select Unicode查询当前数据库的字符集0代表GB18030,1代表utf-8LENGTH_IN_CHARLENGTH_IN_CHAR 此参数决定了数据库中的varchar类型对象的长度是否以字符为单位取值1则是设置以字符为单位将存储长度值按照理论字符长度进行放大。取值为0则所有varchar类型对象长度以字节为单位
1、场景一
Unicode_flag和length_in_char都设置为0字符集GB18030varchar长度以字节为单位
GB18030字符集下一个汉字需要占用两个字节所以varchar(3)可以插入一个汉字加上一个半角字符但是无法插入两个汉字。2、场景二
UNICODE_FLAG1LENGTH_IN_CHAR0
字符集为utf-8varchar长度以字节为单位
Utf-8字符集的情况下一个汉字需要占用三个字节所以varchar(3)只能插入一个汉字。3、场景三
UNICODE_FLAG0LENGTH_IN_CHAR1
字符集为GB18030varchar长度以字节为单位
在length_in_char1的情况下varchar的实际可存储字节数会按一定比例放大所以在使用GB18030的时候varchar(3)实际可以存储3个汉字也就是3*2个字节的数据4、场景四
UNICODE_FLAG1LENGTH_IN_CHAR1
字符集为utf-8varchar长度以字符为长度
这里我们会发现一个奇怪的情况明明设置是 varchar(3)为什么可以插入 4 个汉字呢。这是因为在 DM7 中数据库实际存储数据是以字节为单位。在 lengtg_in_char1 且字符集为 utf-8 的时候VARCHAR 类型对象的实际存放的最大长度是 VARCHAR 类型定义的长度*4 字节。也就是说这里一个 varchar(3) 的结构可以存放的数据为 3*412 个字节。然而事实上 UTF-8 中的一个汉字一般只用占用 3 个字节所以这里我们可以插入 12/34 个汉字
总结当 LENGTH_IN_CHAR0 的情况下varchar() 的长度是以字节数为单位。这时我们只需要考虑汉字和全角字符所占用字节数其中 gb18030 的一个汉字是两个字节utf-8 的一个汉字一般是三个字节。如果插入数据的总字节数大于 varchar 定义的长度则会插入失败。
当 LENGTH_IN_CHAR1 的情况下varchar() 所能存储的字节数将会按照一定比例扩展。字符集为 gb18030 时 varchar 的字节数等于定义长度 *2字符集为 utf-8 时 varchar 的字节数为定义长度 *4
八、根据表生成ctl控制文件
装载数据经常会使用到ctl控制文件进行状态批量生成表对应控制文件 1、ctl控制文件的framemark模板[dmCtl.ftl]
LOAD DATA
INFILE * STR X 0A
REPLACE
INTO TABLE ${schemaName}
FIELDS ${middleDiv}
TRAILING NULLCOLS
(
${fieldDelimiter}
)2、生成服务类
package com.yzj.plutus.executor.service.Impl;import cn.hutool.core.io.FileUtil;
import freemarker.template.Template;
import freemarker.template.TemplateException;
import lombok.Data;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.springframework.context.annotation.Configuration;
import org.springframework.stereotype.Service;import java.io.File;
import java.io.IOException;
import java.io.StringWriter;
import java.util.*;/*** 根据数据库表生成ctl控制文件*/
Slf4j
RequiredArgsConstructor
Service
public class GenerateCtlFileServiceImpl {private final GenerateCtlMapper generateCtlMapper;private final Config config;private final freemarker.template.Configuration configuration;public void generateCtl(String tableName) throws IOException, TemplateException {//1.获取表字段ListString fields generateCtlMapper.generateCtl(config.getSchemaName(), tableName);StringBuffer sb new StringBuffer();for (int i 0; i fields.size(); i) {//1.1、第一位是ID不需要if (i 0 ID.equalsIgnoreCase(fields.get(i))){continue;}//1.2、最后一位不加,,但是增加sysdate【入库时间[个性化]】if (i fields.size() - 1){sb.append(fields.get(i)).append( \SYSDATE\);} else if (i fields.size() - 2) {//1.3、倒数第二位加 TERMINATED BY sb.append(fields.get(i)).append( TERMINATED BY ).append(config.getEndDiv()).append(,);}else {sb.append(fields.get(i)).append(,);}}MapString, Object data new HashMap();data.put(schemaName, tableName);data.put(fieldDelimiter, sb.toString());data.put(middleDiv, config.getMiddleDiv());//2、拼接ctl模板需要部分configuration.setDirectoryForTemplateLoading(new File(Objects.requireNonNull(this.getClass().getClassLoader().getResource(template)).getPath()));Template template configuration.getTemplate(config.getTemplateCtlFileName());//3、生成ctl文件StringWriter sw new StringWriter();template.process(data, sw);log.info(拼接后的数据为【{}】, sw.toString());FileUtil.writeLines(Collections.singletonList(sw.toString()), new File(config.getCtlFilePath() File.separatorChar tableName .ctl), UTF-8);log.info(数据库表【{}】的ctl控制文件生成完成, 存放路径【{}】, config.getSchemaName() . tableName, config.getCtlFilePath());}Mapperpublic interface GenerateCtlMapper{Select(SELECT A.COLUMN_NAME FROM ALL_TAB_COLUMNS A WHERE A.OWNER#{schemaName} AND A.TABLE_NAME#{tableName})ListString generateCtl(Param(schemaName) String schemaName, Param(tableName) String tableName);}DataConfigurationpublic class Config{private String schemaName;/*** 字段分隔符*/private char middleDiv \u0003;/*** 字段结尾符*/private char endDiv \u0002;/*** CTL模板文件名称*/private String templateCtlFileName;/*** ctl文件存放路径*/private String ctlFilePath;}
}九、本地连多台数据库(RAC)
1、服务器创建文件【/etc/dm_svc.conf】,写入如下内容
TIME_ZONE(480)
LANGUAGE(cn)
SUPERIP(123.123.123.1:5236,123.123.123.2:5236,123.123.123.3:5236)#EP_SGLJYTOR 0:均匀分布1定向连接服务名的第一个IP,
#每次定向连接服务名的第一个IP。当IP1发生故障间隔1s进行重连尝试60次若无
#法连接再自动连接IP2。若IP2先起来IP1后起来。因为AUT0_RECONNECT(1),所以连
#接在IP2的连接不会切回IP1上。[SUPERIP]
LOGIN_MODE(1)
SWITCH_TIMES(60)
SWITCH_INTERVAL(1000)
EP_SGLJYTOR(1)
AUTO_RECONNECT(1)2、应用连接配置
driverdm.jdbc.driver.DmDriver/driver
urljdbc:dm://SUPERIP/url3、应用连接达梦数据库【指定schema[1用户多个schema]】
# 达梦 模式名就相当于库名
# 写法一【本人使用此种】url: jdbc:dm://localhost:5236?schemaPERSONcompatibleModemysqlcharacterEncodingUTF-8useUnicodetrueuseSSLfalsetinyInt1isBitfalseallowPublicKeyRetrievaltrueserverTimezoneAsia/Shanghai
#写法二【尝试过失败】#url: jdbc:dm://localhost:5236/PERSONcompatibleModemysqlcharacterEncodingUTF-8useUnicodetrueuseSSLfalsetinyInt1isBitfalseallowPublicKeyRetrievaltrueserverTimezoneAsia/Shanghai