DB2 V9.7 for Linux, UNIX, and Windows

DB2_COMPATIBILITY_VECTOR 注册表变量

DB2_COMPATIBILITY_VECTOR 注册表变量用于启用一项或多项自从 DB2® 版本 9.5 开始引入的 DB2 兼容性功能。

这些功能使您能够方便地将面向其他关系数据库供应商编写的应用程序迁移到 DB2 版本 9.5 或更高版本

要点: 仅当为了实现某个特定兼容性而需要这些功能时,再将其启用。如果启用了 DB2 兼容性功能,某些 SQL 行为将会更改,不同于 SQL 参考信息中所记录的行为。要确定对您的 SQL 应用程序的潜在影响,请参阅与每个兼容性设置相关联的文档。
此 DB2 注册表变量以十六进制值表示,此变量中的每个位用于启用其中一项 DB2 兼容性功能。
  • 操作系统:全部
  • 缺省值:NULL;值:NULL 或 00FFFF。 要充分利用这些 DB2 兼容性功能,对于 Oracle 应用程序,请将值设置为 ORA;对于 Sybase 应用程序,请将值设置为 SYB;对于 MySQL 应用程序,请将值设置为 MYS。这些是建议的设置。

注册表变量设置

表 1. DB2_COMPATIBILITY_VECTOR 的值
位的位置 兼容性功能 描述
1(0x01) ROWNUM 允许使用 ROWNUM 作为 ROW_NUMBER() OVER() 的同义词,并允许 ROWNUM 在 SQL 语句的 WHERE 子句中出现。
2(0x02) DUAL 将对“DUAL”进行的未限定表引用解析为 SYSIBM.DUAL。
3(0x04) 外连接运算符 启用对外连接运算符(+)的支持。
4(0x08) 分层查询 启用对使用 CONNECT BY 子句进行的分层查询的支持。
5(0x10) NUMBER 数据类型 1 启用 NUMBER 数据类型以及相关联的数字处理。创建启用了此支持的数据库之后,将 number_compat 数据库配置参数设置为 ON。
6 (0x20) VARCHAR2 数据类型 1 启用 VARCHAR2 和 NVARCHAR2 数据类型以及相关联的字符串处理。创建启用了此支持的数据库之后,将 varchar2_compat 数据库配置参数设置为 ON。
7 (0x40) DATE 数据类型 1 允许将 DATE 数据类型用作 TIMESTAMP(0),即,组合的日期和时间值。创建启用了此支持的数据库之后,将 date_compat 数据库配置参数设置为 ON。
8 (0x80) TRUNCATE TABLE 启用 TRUNCATE 语句的备用语义,在此语义下,IMMEDIATE 是可选关键字,如果未指定此关键字,那么将假定它是缺省关键字。如果 TRUNCATE 语句不是逻辑工作单元中的第一条语句,那么将在执行 TRUNCATE 语句前执行隐式的落实操作。
9 (0x100) 字符文字 允许将 CHAR 或 GRAPHIC 数据类型(而不是 VARCHAR 或 VARGRAPHIC 数据类型)赋予字节长度小于或等于 254 的字符和图形字符串常量。
10 (0x200) 集合方法 允许使用方法对数组执行操作,例如 first、last、next 和 previous。并且,允许在对特定数组元素的引用中使用圆括号来代替方括号;例如,array1(i) 引用 array1 的元素 i
11 (0x400) 兼容数据字典的视图 1 允许创建兼容数据字典的视图。
12 (0x800) PL/SQL 编译 2 允许编译和执行 PL/SQL 语句和语言元素。
13 (0x1000) 不敏感游标 在 SELECT 语句未显式指定 FOR UPDATE 的情况下,使定义为 WITH RETURN 的游标不敏感
14 (0x2000) INOUT 参数 允许对 INOUT 参数声明指定 DEFAULT
17 (0x10000) SQL 数据访问级别强制执行 启用运行时例程 SQL 数据访问级别强制执行
  1. 只有在数据库创建期间才适用。启用或禁用此功能只影响以后创建的数据库。
  2. 请参阅“PL/SQL 支持方面的限制”。

用法

请使用 db2set 命令来设置和更新 DB2_COMPATIBILITY_VECTOR 注册表变量。在创建数据库之前设置 DB2_COMPATIBILITY_VECTOR
  • 要启用所有受支持的 Oracle 兼容性功能,请将该注册表变量设置为值 ORA(相当于十六进制值 10FFF)。
  • 要启用所有受支持的 Sybase 兼容性功能,请将此注册表变量设置为值 SYB(相当于十六进制值 3004)。
如果设置了 DB2_COMPATIBILITY_VECTOR 注册表变量,那么创建的所有数据库均会创建为 UNICODE 数据库。

注册表变量的新设置直到实例停止并重新启动后才会生效。必须对现有的 DB2 程序包进行重新绑定才能使更改生效;未以显式方式进行重新绑定的程序包将在下次隐式重新绑定时接受更改。

示例 1

此示例设置该注册表变量以启用所有受支持的 Oracle 兼容性功能:
db2set DB2_COMPATIBILITY_VECTOR=ORA
db2stop
db2start

示例 2

此示例说明如何通过重置 DB2_COMPATIBILITY_VECTOR 注册表变量来禁用所有兼容性功能:
db2set DB2_COMPATIBILITY_VECTOR=
db2stop
db2start
注意,如果在启用了 NUMBER 数据类型或 VARCHAR2 数据类型的情况下、在允许使用 DATE 数据类型作为 TIMESTAMP(0) 的情况下或者在允许创建兼容 Oracle 数据字典的视图的情况下创建数据库,那么执行此 db2set 命令后,该数据库仍支持这些功能。