Oracle迁移至金仓数据库常见适配问题
金仓数据库管理员账户密码修改
金仓数据库安装完成后,系统管理员账户system的初始密码是随机生成的,用户可通过以下命令修改初始密码。
- 进入数据库安装目录。
1
cd /opt/Kingbase/ES/V8/KESRealPro/V008R006C008B0020/Server/bin
- 连接数据库。
1
./ksql -U system -d KINGBASE
请根据提示输入system用户密码:
1
Password for user system:
- 修改密码,“xxxxxx”请替换为修改后的密码。
1
alter user system with password 'xxxxxx';
金仓数据库兼容性设置
根据实际情况,应对目标数据库KingbaseES进行适当的Oracle兼容配置。通常,应配置以下会话级兼容参数:
- nls_length_semantics:设定char类型字段默认单位是byte还是char。此外,标识符最大长度以此值为单位。如果为char,则标识符最大长度为63个char,否则为63byte。
在KingbaseES系统,参数“nls_length_semantics”缺省值为“char”,需要与待迁移的Oracle相同。Oracle字符类型的byte|char属性默认值是由Oracle提供的数据库参数“NLS_LENGTH_SEMANTICS”决定的,可通过下方语句进行查询:
1
select value from nls_database_parameters where parameter = 'NLS_LENGTH_SEMANTICS';
如果未修改可能会出现:迁移char类型时,由于数据库存储的类型不同,导致迁移的数据存在多余空格的情况。
可通过以下方式修改:
- 进入数据目录。
1
cd /opt/Kingbase/ES/V8/data
- 打开kingbase.conf文件,修改如下内容,若不存在该参数请添加。
1
nls_length_semantics = byte
以byte为例,该值需要与Oracle配置保持一致,若Oracle配置为char,请修改为char。
- 切换至kingbase用户,重启数据库。
1
/opt/Kingbase/ES/V8/Server/bin/sys_ctl -D /opt/Kingbase/ES/V8/data restart
- 进入数据目录。
- default_with_oids:OID伪列开关。KingbaseES的OID伪列可兼容Oracle的ROWID伪列。因此,如果Oracle移植对象有ROWID伪列,则建议用OID伪列替代。
- 进入数据目录。
1
cd /opt/Kingbase/ES/V8/data
- 打开kingbase.conf文件,修改如下内容,若不存在该参数请添加。
1
default_with_oids = on
- 切换至kingbase用户,重启数据库。
1
/opt/Kingbase/ES/V8/Server/bin/sys_ctl -D /opt/Kingbase/ES/V8/data restart
- 进入数据目录。
金仓数据库空值设置
金仓数据库中ora_input_emptystr_isnull参数默认为off,如果插入字段信息为空时,不会自动转化为NULL写入数据库。需将ora_input_emptystr_isnull修改为on。具体修改步骤:
- 进入数据目录。
1
cd /opt/Kingbase/ES/V8/data
- 打开kingbase.conf文件。查看“ora_input_emptystr_isnull”是否为on,若不为on,请修改为on。
- 修改完成后切换至kingbase用户,重启数据库。
1
/opt/Kingbase/ES/V8/Server/bin/sys_ctl -D /opt/Kingbase/ES/V8/data restart
父主题: 数据库迁移相关指导