---
title: Oracle迁移至金仓数据库常见适配问题
description: "详见官方KDTS迁移工具使用指南(https://bbs.kingbase.com.cn/kingbase-doc/v8/development/develop-transfer/kdts-plus/index.html)和Oracle迁移至金仓最佳实践(https://bbs.kingbase.com.cn/kingbase-doc/v8/development/develop-transfer/transplant-oracle/index.html)。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengdevps/portingadvisor/systemmigration/DevKit_Porting_0077.html
sourcePath: /source/zh/kunpengdevps/portingadvisor/systemmigration/DevKit_Porting_0077.html
indexId: af795c9d113030978b9681b17f8ccf3ba160a83f3c04a85d84809f806f91410779
---
# Oracle迁移至金仓数据库常见适配问题

#### KDTS迁移工具使用指导

详见官方KDTS迁移工具使用指南(https://bbs.kingbase.com.cn/kingbase-doc/v8/development/develop-transfer/kdts-plus/index.html)和Oracle迁移至金仓最佳实践(https://bbs.kingbase.com.cn/kingbase-doc/v8/development/develop-transfer/transplant-oracle/index.html)。


#### 金仓数据库管理员账户密码修改

金仓数据库安装完成后，系统管理员账户system的初始密码是随机生成的，用户可通过以下命令修改初始密码。

1. 进入数据库安装目录。
  1 cd /opt/Kingbase/ES/V8/KESRealPro/V008R006C008B0020/Server/bin

2. 连接数据库。
  1 ./ksql -U system -d KINGBASE

  请根据提示输入system用户密码：

  1 Password for user system:

3. 修改密码，“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”决定的，可通过下方语句进行查询：
```
select value from nls_database_parameters where parameter = 'NLS_LENGTH_SEMANTICS';
```

如果未修改可能会出现：迁移char类型时，由于数据库存储的类型不同，导致迁移的数据存在多余空格的情况。
可通过以下方式修改：

  1. 进入数据目录。
    1 cd /opt/Kingbase/ES/V8/data

  2. 打开kingbase.conf文件，修改如下内容，若不存在该参数请添加。
    1 nls_length_semantics = byte

    以byte为例，该值需要与Oracle配置保持一致，若Oracle配置为char，请修改为char。

  3. 切换至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. 进入数据目录。
    1 cd /opt/Kingbase/ES/V8/data

  2. 打开kingbase.conf文件，修改如下内容，若不存在该参数请添加。
    1 default_with_oids = on

  3. 切换至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. 进入数据目录。
  1 cd /opt/Kingbase/ES/V8/data

2. 打开kingbase.conf文件。查看“ora_input_emptystr_isnull”是否为on，若不为on，请修改为on。
3. 修改完成后切换至kingbase用户，重启数据库。
  1 /opt/Kingbase/ES/V8/Server/bin/sys_ctl -D /opt/Kingbase/ES/V8/data restart


#### 金仓数据库与Oracle兼容性说明

详见官方兼容性说明指导(https://bbs.kingbase.com.cn/kingbase-doc/v8/development/develop-transfer/kes-vs-oracle/index.html)。


本指导仅提供基本信息，若需获取更多金仓数据库使用信息，请参见金仓数据库官方文档(https://help.kingbase.com.cn/v8/index.html)。
