一、常用参数建议(windows环境与liunx环境都是)
1、簇大小(EXTENT_SIZE),簇是每次申请的页数,表存满了以后会一次性连续申请(参数设置)个页的空间,比如设置为32,即每次扩容 32*PAGE_SIZE
2、页大小(PAGE_SIZE)为 32 影响每一行能存储的最大值,和查询效率
3、日志大小(LOG_SIZE)为 2048
4、大小写(CASE_SENSITIVE)为敏感 1,影响 SQL 编写,对小写对象是否需要添加双引号
5、字符集(CHARSET)为 GB18030,影响所用的字符集后期是否支持对应的生僻字等
6、VARCHAR 类型对象的长度是否以字符为单位(LENGTH_IN_CHAR) 为 1
总结:如果是从mysql,或者sql server迁移库,建议按以上设置
二、参数详解
1、簇大小(EXTENT_SIZE)
1、簇是数据页的上级逻辑单元,由同一个数据文件中 16 个或 32 个或 64 个连续的数据页组成。在 DM 数据库中,簇的大小由用户在创建数据库时指定,默认大小为 16。
2、假定某个数据文件大小为 32MB,页大小为 8KB,则共有 32MB/8KB/16=256 个簇,每个簇的大小为 8K*16=128K。
3、和数据页的大小一样,一旦创建好数据库,此后该数据库的簇的大小就不能够改变。
2、页大小(PAGE_SIZE)
1、在创建好实例后,该参数是不能够改变的。如果要改变大小,要重新初始化实例。
2、页设置越大,最后数据文件的物理大小就会越大,系统运行时,每次从磁盘调入内存的数据单位也就越大。除了每个字段的最大长度限制外,每条记录总长度不能大于页面大小的一半。
3、页大小对字符数据类型实际最大长度及每行记录、表空间数据文件大小的影响如图
3、日志大小(LOG_SIZE)
1、该参数在创建实例后是可以进行修改的,修改后重启实例
2、该参数控制日志文件使用的簇大小,以 M为单位, 默认每个日志文件大小为 256M,可以配置为64和 2048之间的整数。每个数据库实例至少有两个重做日志文件,循环使用。
3、如果设置过小,更新等较大的事务,可能会导致redo log 频繁切换,从而影响数据库性能。 推荐值:2048M。
4、大小写(CASE_SENSITIVE)为敏感
1、当大小写敏感时,小写的标识符应当用 "" 括起,否则被系统自动转换为大写;当大小写不敏感时,系统不会转换标识符的大小写,在标识符比较时也不能区分大小写。取值:Y、y、1 表示敏感;N、n、0 表示不敏感。默认值为 Y
2、建议从 MYSQL 和 SQLSERVER 迁移过来的系统,使用大小写不敏感,ORACLE 迁移过来的系统,使用大小写敏感,以便和原来系统匹配
3、这个参数在创建实例后,也是不能改变,要改变就需要重新初始化实例。
5、字符集(CHARSET)为 GB18030
1、建议采用默认值 GB18030,如果需要国际字符可以采用 Unicode。
2、GB18030 数字字母占 1 个字节,普通汉字占 2 个字节,部分繁体及少数民族文字占 4 字节。
3、Unicode 在达梦中采用 UTF-8 编码格式,欧洲的字母字符占 1 到 2 个字节,亚洲的大部分字符占 3 个字节,附加字符为 4 个字节。如果只存储中文和字母数字,一般来说 GB18030 更节省空间一些。
6、LENGTH_IN_CHAR
1、取值为 1 或者 Y 表示是,取值为 0 或 N 表示否。默认值为 0。可选参数。
2、取值为 1 或者 Y 表示所有 VARCHAR 类型对象的长度以字符为单位。
这种情况下,定义长度并非真正按照字符长度调整,而是将存储长度值按照理论字符长度进行放大。
所以会出现实际可插入字符数超过定义长度的情况,这种情况也是允许的。
同时,存储的字节长度 8188 上限仍然不变,也就是说,即使定义列长度为 8188 字符,
其实际能插入的字符串占用总字节长度仍然不能超过 8188;
3、取值为 0 或 N 表示所有 VARCHAR 类型对象的长度以字节为单位。
4、建议设置为1
总结:0 或 N:否,所有 VARCHAR 类型对象的长度以字节为单位。默认是0。
该参数影响的仅仅是VARCHAR数据类型,对CHAR类型不影响。
三、参数的查询语句
1、查询大小写是否敏感
SELECT SF_GET_CASE_SENSITIVE_FLAG();
或
SELECT CASE_SENSITIVE();
2、查询页大小
SELECT SF_GET_PAGE_SIZE(); /* 32768/1024=32KB */
或
SELECT CAST(PAGE()/1024 AS VARCHAR);
3、查询簇大小
SELECT SF_GET_EXTENT_SIZE();
4、查询字符集
SELECT SF_GET_UNICODE_FLAG();
或
SELECT unicode();
或
SELECT (CASE SF_GET_UNICODE_FLAG() WHEN '0' THEN 'GBK18030' WHEN '1' THEN 'UTF-8' WHEN '2' THEN 'EUC-KR' END);
5、查询查询LENGTH_IN_CHAR参数
select para_name,para_value from v$dm_ini where para_name='LENGTH_IN_CHAR';
6、查询当前日志大小(LOG_SIZE)
select PATH,RLOG_SIZE/1024/1024 MB from v$rlogfile;
四、DM 数据库管理常用 SQL 命令
--查询数据库版本
select * from v$version;--DM7
select id_code();--DM8
--查询授权信息
select * from v$license;
--查询服务器信息
select * from V$SYSTEMINFO;
--查询会话连接信息
select * from v$sessions;
select count(*),state from v$sessions group by state;
select count(*),clnt_ip from v$sessions group by clnt_ip;
--查看数据库服务器配置参数
select * from v$dm_ini;
--查询最近的 sql 执行记录
select * from v$sql_history;
--查询某个用户下所有的表
select * from user_tables; --查询当前用户下所有的表
select * from all_tables where owner='TEST'; --dba 用户查询某个模式下的所有表
--查询某个用户下所有表字段
select * from all_tab_cols where owner='TEST';
--查看表注释
select * from ALL_TAB_COMMENTS where owner='TEST';
--查看字段注释
select * from ALL_COL_COMMENTS where owner='TEST';
select '实例名称' 数据库选项,INSTANCE_NAME 数据库集群相关参数值 FROM v$instance union all
select '数据库版本',substr(svr_version,instr(svr_version,'(')) FROM v$instance union all SELECT '字符集',CASE SF_GET_UNICODE_FLAG() WHEN '0' THEN 'GBK18030' WHEN '1' then 'UTF-8' when '2' then 'EUC-KR' end union all
SELECT '页大小',cast(PAGE()/1024 as varchar) union all SELECT '簇大小',cast(SF_GET_EXTENT_SIZE() as varchar) union all
SELECT '大小写敏感',cast(SF_GET_CASE_SENSITIVE_FLAG() as varchar) union all
select '数据库模式',MODE$ from v$instance union all
select '唯一魔数',cast(permanent_magic as varchar) union all
select 'LSN',cast(cur_lsn as varchar) from v$rlog;
五、创建实例后的步骤建议
1、创建表空间
CREATE TABLESPACE SXWH DATAFILE 'CESHI.DBF' size 256;
2、设置密码策略参数,数据库密码,小于9位数的用户都无法创建,解决办法
sp_set_para_value(1,'PWD_POLICY',0);
3、创建用户
CREATE USER CESHI IDENTIFIED by CESHI DEFAULT TABLESPACE CESHI DEFAULT INDEX TABLESPACE CESHI;
4、给用户权限
GRANT DBA TO CESHI;
GRANT PUBLIC TO CESHI;
GRANT RESOURCE TO CESHI;
GRANT VTI TO CESHI;
以上参数的详细解释请参阅官网