oracle数据库迁移到人大金仓kingbase

1)迁移前的准备工作

        kingbase服务器上,新建一个数据库用来接收迁移后的oracle库。

        配置一些参数:数据库编码需要和原库一致、日期格式等。参数在kingbase.conf文件中配置。

在kingbase.conf文件末尾添加:

#修改时间格式
datestyle = 'iso, ymd'

#as字段别名全转大写
enable_upper_colname=on

#字段长度默认为byte
NLS_LENGTH_SEMANTICS = byte

#兼容oracle的rowid伪列
default_with_oids = true

启动数据库 :

进入安装路径 server的bin目录 执行命令sys_ctl start -D 数据文件路径

或简便方法:

        1.配置环境变量 path 添加server的bin目录

        2.KINGBASE_DATA = 数据文件路径

        具体可以参考金仓的文档 【kingbase_PDF\PDF\2_应用开发及迁移\1_应用开发及迁移指南\Oracle至KingbaseES迁移最佳实践】

        一个坑:kingbase和oracle的实例、数据库、用户、模式 这些概念不太一样。oracle一个实例对应一个数据库,数据库可有多个用户,每个用户对应一个模式。kingbase一个实例可对应多个数据库,数据库下面设用户,用户可对应多个模式。(模式就是对象的集合,相当于一个文件夹)需要注意的是,kingbase中一个用户可以操作实例中的所有对象。

        迁移前,需要在kingbase中做的就是新建数据库、用户、模式;以及配置kingbase.conf文件

2)开始迁移

        金仓有一个工具ktds专门用于数据库的迁移。填好两边的url就行。

        迁移过程中的报错看日志。表和序列等常规对象都迁移成功了。少数函数和视图报错,要再找找原因

3)应用程序中配置kingbase数据库连接

        安装目录下有数据库驱动所需的jar包,复制到lib目录下

        比如我的程序中用jdbc连接,hibernate框架,在配置文件中写好驱动类、url等

##运行程序后出现的一些问题:

1)字段别名大小写

        select password as PW from ...

kingbase默认把别名转为小写pw,而oracle是默认大写

解决方法:

        配置文件kingbase.conf 添加参数enable_upper_colname=on 然后重启数据库

2)返回的小数会在末尾补0

        对于一个数据类型为number(12,6)的字段 数值9.7 在jdbc连接中会返回9.700000  

        数据库没有参数可以配置。只好改程序

2)偶发:写入数据库的日期会多出1秒导致查询失败

        原因:程序传过来的Date类型有毫秒位,写入数据库时被四舍五入了。而oracle的date类型写入时会自动舍去毫秒位所以没有此问题

##一些记录:

1)迁移后,kingbase数据库的体积比原oracle库要小很多。(原库1400多M,迁移后接近700M)

2)kingbase从pg数据库进化而来,许多命令是一样的。

常用的比如:

清除缓存、重新分析统计信息——vacuum

查看sql执行记录——select * from pg_stat_activity

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
人大金仓数据库可以通过使用持久连接和DBLink来实现远程访问Oracle数据库。首先,我们需要使用以下语句在人大金仓数据库中创建一个到目标Oracle数据库的持久连接: SELECT dblink_connect_u('myconn_db_b', 'hostaddr=xxx.xxx.xxx.xxx port=54321 dbname=db_b user=u_b password=密码'); 其中,xxx.xxx.xxx.xxx是目标Oracle数据库的主机地址,54321是目标Oracle数据库的端口号,db_b是要访问的数据库名称,u_b和密码是用于连接目标Oracle数据库的用户名和密码。这将会创建一个名为myconn_db_b的持久连接。 接下来,您可以使用人大金仓数据库的DBLink功能来访问远程Oracle数据库。具体使用方法可以参考人大金仓数据库的相关文档或者使用以下语句: SELECT * FROM tablename@myconn_db_b; 其中,tablename是您要访问的远程Oracle数据库中的表名,myconn_db_b是上一步创建的持久连接名称。通过这种方式,您可以在人大金仓数据库中访问并操作远程Oracle数据库的数据。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [数据库审计系统需求说明.docx](https://download.csdn.net/download/qq_43934844/87590316)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [.NET CORE ORM 达梦 人大金仓 操作数据库 访问 连接](https://blog.csdn.net/jhl52771/article/details/109631622)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [人大金仓Kingbase数据库使用dblink进行跨库操作示例](https://blog.csdn.net/wsdhla/article/details/130963638)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值