达梦在用dminit初始化数据库时,要特别注意参数的设定,有些参数一旦设置,就不能更改了,必须要重新初始化数据库才能更改,所以在初始化数据库时,一定要了解清楚这些参数的含义和作用,避免踩坑,一旦踩坑,就有可能是一个血淋淋的教训,下面是对一些重要参数的解释。
示例:
./dminit PATH=/dmdata PAGE_SIZE=32 LOG_SIZE=2048 SYSDBA_PWD=xxxx SYSAUDITOR_PWD=xxxx DB_NAME=testdb INSTANCE_NAME=testdb1 PORT_NUM=5236 CHARSET=1 CASE_SENSITIVE=1 BLANK_PAD_MODE=1 LENGTH_IN_CHAR=0
CHARSET(字符集)
数据库字符集,默认值为0,0代表GB18030,1代表UTF-8,2代表韩文字符集EUC-KP。如果你的系统是要从oracle或者其它数据库迁移数据到达梦数据库,字符集要保持和原来数据库一致。
PAGE_SIZE(页大小)
除去Clob、Blob等大字段外,数据库中一行记录的所有字段的实际长度的和不能超过页大小的一半。建议页大小设置为32K,防止在后期进行数据迁移和开发过程中出现记录超长的问题;
LOG_SIZE(日志文件的大小)
数据库redo日志文件的大小,单位为M,正式环境日志文件的大小一般设置为2048,数据库默认会生成两个redo日志文件。
CASE_SENSITIVE(字符串比较大小写敏感)
默认为大小写敏感的,根据具体情况进行设置。迁移实施中如果原始库为Oracle和DB2数据库的话需设置为大小写敏感,若为SQL Server和MySQL数据库则需设置为大小写不敏感,所以在数据库初始化库的过程中需要根据具体情况来选择。取值:Y、y、1表示敏感;N、n、0表示不敏感。默认值为Y。可选参数。
达梦,oracle大小写敏感,创建表空间,模式,表,字段名不带双引号,名字会自动转换为大写,查询,插入等语句时,也是把表名,字段名等转换为大小,这样大小写不敏感。在大小写敏感设置下,表内容大小写是敏感。
用管理界面创建ddl语句,管理界面创建ddl语句会带双引号,如果名字含有大小或者小写,名字不会自动转换为大写,而数据库查询,插入会把表名,字段名转换为大写,故会查询不到数据,查询的时候表名和字段名同样要带上双引号。
LENGTH_IN_CHAR(varchar类型以字节为单位)
默认为0,1表示启用,当LENGTH_IN_CHAR=0的情况下,varchar()的长度是以字节数为单位。这时我们只需要考虑汉字和全角字符所占用字节数,其中gb18030的一个汉字是两个字节,utf-8的一个汉字一般是三个字节。如果插入数据的总字节数大于varchar定义的长度,则会插入失败。
当LENGTH_IN_CHAR=1的情况下,varchar()所能存储的字节数将会按照一定比例扩展。字符集为gb18030时varchar的字节数等于定义长度*2,字符集为utf8时varchar的字节数为定义长度*4。
BLANK_PAD_MODE(空格填充模式)
默认为0,1表示启用。如果数据要区别'a'和'a ',就是查询where column='a'和where column='a '是一条记录,而不是两条记录,则要启用。这个参数在初始化的时候一定要考虑要不要启用,如果你的是oracle数据库迁移到达梦,建议启用这个参数,因为oracle默认就是采用空格填充模式。
注意:如果两个实例的初始化参数不一样,用dexp,dimp导入导出工具从一个实例导数据到另外一个实例,可能会出现报错,导入失败的情况。