db2中通過設置DB2_COMPATIBILITY_VECTOR 註冊表變量啓用DB2兼容性功能

DB2_COMPATIBILITY_VECTOR 註冊表變量啓用一個或多個 DB2® 兼容性功能。這些功能使您可輕鬆完成將爲 DB2 產品之外的關係數據庫產品編寫的應用程序遷移至 DB2 產品的任務。

註冊表變量設置

值如下所示:

  • NULL(缺省值)。這表示不支持兼容性功能。
  • 0000 - FFFF 的十六進制值。 變量值中的每一位啓用單獨的兼容性功能。針對每個位的含義,請參見表 1。
  • ORA。此值相當於十六進制值 70FFF,可爲 Oracle 應用程序啓用所有 DB2 兼容性功能。
  • SYB。此值相當於十六進制值 3004,可爲 Sybase 應用程序啓用所有 DB2 兼容性功能。
  • MYS。此值相當於十六進制值 4000,可爲 MySQL 應用程序啓用所有 DB2 兼容性功能。當前,唯一受支持的 MySQL 兼容性功能是啓用 LIMIT 和 OFFSET 子句。

設置 ORA、SYB 或 MYS 可啓用所有兼容性功能。

要點:僅當需要將這些功能用於特定兼容性用途時,才啓用兼容性功能。如果啓用 DB2 兼容性功能,那麼 SQL 引用信息中描述的一些 SQL 行爲會更改。要確定 SQL 應用程序的兼容性功能的潛在作用,請參閱與該兼容性功能相關聯的文檔。

下表指定啓用各個兼容功能所需的設置。

表 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) 數據類型,即組合日期和時間值。例如,日期兼容性方式的“VALUES CURRENT DATE”返回 2011-02-17-10.43.55 之類的值。創建啓用了此支持的數據庫之後,將 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) Oracle 數據字典兼容視圖 1 允許創建 Oracle 數據字典兼容視圖。
12 (0x800) PL/SQL 編譯 2 允許編譯和執行 PL/SQL 語句和語言元素。
13 (0x1000) 不敏感遊標 在 SELECT 語句未顯式指定 FOR UPDATE 的情況下,使定義爲 WITH RETURN 的遊標不敏感。
14 (0x2000) INOUT 參數 允許對 INOUT 參數聲明指定 DEFAULT。
15 (0x4000) LIMIT 和 OFFSET 子句 支持在全查詢、UPDATE 和 DELETE 語句中使用與 MySQL 兼容和與 PostgreSQL 兼容的 LIMIT 和 OFFSET 子句。
17 (0x10000) SQL 數據訪問級別強制 允許例程強制在運行時實施 SQL 數據訪問級別。
18 (0x20000) Oracle 數據庫鏈接語法 啓用 Oracle 數據庫鏈接語法可訪問其他數據庫中的對象。
19 (0x40000) 同義詞使用 禁止在一些 SQL 語句中使用同義詞。將 DB2_COMPATIBILITY_VECTOR 註冊表變量設置爲限制同義詞的使用時,無法在將表同義詞作爲目標的情況下,發出 alter、drop、rename 或 truncate 語句。 無法在將視圖同義詞作爲目標的情況下,發出 alter 或 drop 語句。無法在將序列同義詞作爲目標的情況下,發出 alter 或 drop 語句。
  1. 此功能僅在創建數據庫期間適用。在創建數據庫後啓用或禁用此功能僅影響後續創建的數據庫。
  2. 請參閱針對 PL/SQL 支持的限制

用法

請使用 db2set 命令來設置和更新 DB2_COMPATIBILITY_VECTOR 註冊表變量。您可以通過添加與兼容性功能關聯的十六進制值的數字,使用兼容性功能組合設置 DB2_COMPATIBILITY_VECTOR 註冊表變量。註冊表變量的新設置直到您停止然後重新啓動實例後纔會生效。而且,必須重新綁定 DB2 程序包,更改才能生效。您未顯式重新綁定的程序包將在下一次隱式重新綁定時實現更改。

如果設置 DB2_COMPATIBILITY_VECTOR 註冊表變量,請創建數據庫作爲 Unicode 數據庫。

示例 1

此示例說明如何設置該註冊表變量以啓用所有受支持的 Oracle 兼容性功能:

db2set DB2_COMPATIBILITY_VECTOR=ORA
db2stop
db2start

示例 2

此示例說明如何設置該註冊表變量以提供上表中指定的 ROWNUM 僞列 (0x01) 和 DUAL 表 (0x02) 支持:

db2set DB2_COMPATIBILITY_VECTOR=03
db2stop
db2start

示例 3

此示例說明如何通過重置 DB2_COMPATIBILITY_VECTOR 註冊表變量來禁用所有兼容性功能:

db2set DB2_COMPATIBILITY_VECTOR=
db2stop
db2start

如果在啓用下列任何功能後創建數據庫,然後禁用所有兼容性功能,那麼仍會針對此數據庫啓用這些功能:

  • NUMBER 數據類型
  • VARCHAR2 數據類型
  • 將 DATE 數據類型作爲 TIMESTAMP(0)
  • 創建與 Oracle 數據字典兼容的視圖
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章