正文
通常,异构数据库移植的工作量繁重。从Oracle向KingbasES移植的情况也如此。为降低移植工作量,KingbaseES在内部实现了大量的Oracle兼容特性。这些特性从语法或功能上对Oracle 提供了原生支持。因此,在移植过程中,Oracle 程序只需很少甚至不做任何改动就能在KingbaseES 环境中运行。
KingbaseES用户可通过设置相关的数据库兼容开关,部分或全部启用Oracle兼容特性。在实际应用中,用户可采用以下途径设置Oracle兼容开关:
• 在数据库实例data 目录下的kingbase.conf文件中配置
• 在数据库初始化时设置
• 在用户会话中设置
兼容特性开关 用途说明
ora_input_emptystr_isnull 开关开启时,系统将输入的空串当做NULL处理会话级参数,oracle模式下默认是on , PG模式下默认是off)。
ora_forbid_func_polymorphism 开关开启时,表示开启禁用多态,同模式下不能创建同名的函数或存储过程(会话级参数,缺省值是false)
ora_open_cursors 设置一个会话中可以同时打开的DBMS_SQL 游标的最大数目。(限制为:0~65535,默认为300)
ora_statement_level_rollback 指定plsql 中是否启用语句级回滚。当指定为true 时,启动语句级回滚功能;当指定为false 时,关闭语句级回滚功能。(会话级参数,缺省值是false)
enable_func_colname 启用或禁用函数兼容oracle 函数输出格式,设置为on 启用此功能,函数作为投影列时,输出函数名和其参数列表。设置为off 时关闭该功能,函数作为投影列时,只输出函数名。(会话级参数,缺省值是false)
enable_upper_colname 开关开启时,查询结果的列名将转换为大写。(会话级参数,缺省值是false)
ignore_zero_number 开关开启时,number 类型输出时忽略末尾连续的”0”。(会话级参数,缺省值是false)
nls_length_semantics 设置字符串类型的长度单位(char 或byte),它和Oracle 参数NLS_LENGTH_SEMATICS 的含义一致(会话级参数,缺省值是char)
trunc_compatible 开关开启时,trunc函数返回的timestamp值与oracle一致(会话级参数,缺省值是false)
除了兼容性参数,KingbaseES还提供了大量扩展包来支持oracle的常用功能。
扩展名称 功能说明
kdb_orafce 实现对oracle一些函数和包的兼容
dbms_session 实现对session中内容的操作。
dbms_random 提供一个随机数或者字符的生成器。
kdb_raw 实现对raw数据类型的操作
dbms_lob 对CLOB/BLOB大对象就行的操作。
dbms_ddl 创建一个PL/SQL包体、函数、过程。
kdb_oracle_datatype 初始化内置,兼容Oracle数据类型
dbms_obfuscation_toolkit 提供DES或3DES算法进行数据的加解密
sys_ksh 历史会话分析工具。类似oracle ash工具
dbms_output 提供将文本行写入缓冲区、供以后提取和显示的功能。
dbms_mview 刷新物化视图工具包
utl_file 一些对于文件操作的函数。
dbms_metadata 创建特定类型对象的DDL语句。
kdb_schedule 基于后台进程来实现自动作业功能。
sys_kwr 负载信息记录和保存,并提供相关的性能报告。类似awr报告
kdb_utils_function 工具函数,包括xml,字符操作等
sys_bulkload 快速加载数据的命令行工具。类似 sqlldr 工具
dbms_utility 提供一些具有通用功能的子程序
参考文档
《Oracle至KingbaseESV8迁移最佳实践》