DB2V9.7和Oracle的兼容性

0
分享 2015-12-10
从DB2V9.7开始,DB2进一步的增强了与Oracle的兼容性,不但增加了类似于sqllplus的命令行工具,还增加了DBA_*的数据字典,DBMS_OUTPUT等包,更重要的还增加了对Oracle数据库的PL/SQL的支持,使用了一下果然是比较爽。
要使用这些功能,必须得先设置
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 数据类型 <sup>1</sup> 启用 NUMBER 数据类型以及相关联的数字处理。
6(0x20) VARCHAR2 数据类型 <sup>1</sup> 启用 VARCHAR2 和 NVARCHAR2 数据类型以及相关联的字符串处理。
7(0x40) DATE 数据类型 <sup>1</sup> 允许将 DATE 数据类型用作 TIMESTAMP(0),即,组合的日期和时间值。
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) 兼容数据字典的视图 <sup>1</sup> 允许创建兼容数据字典的视图。
12(0x800) PL/SQL 编译 <sup>2</sup> 允许编译和执行 PL/SQL 语句和语言元素。
13 (0x1000) 不敏感游标 在 SELECT 语句未显式指定 FOR UPDATE 的情况下,使定义为 WITH RETURN 的游标不敏感
14 (0x2000) INOUT 参数 允许对 INOUT 参数声明指定 DEFAULT
  1. 只有在数据库创建期间才适用。启用或禁用此功能只影响以后创建的数据库。
  2. 要启用所有受支持的 Oracle 兼容性功能,请将此注册表变量设置为值 ORA(相当于十六进制值 FFF)。

设置完该环境变量后,我创建了一个测试库,名称为MYDB,并使用CLPPLUS(该工具类似于oracle的sqlplus)连接了一下库:
[db2inst1@lstest ~]$ clpplus sde/esrichina@192.168.100.228:60000/mydb
数据库连接信息

主机名 = 192.168.100.228
数据库服务器 = DB2/LINUXX8664 SQL09071
SQL 授权标识 = sde
本地数据库别名 = MYDB
端口 = 60000

CLPPlus: 版本 1.1
Copyright &copy; 2009, IBM CORPORATION. All rights reserved.

其中sde/esrichina分别是登录数据库的用户名和密码。
@后面的是数据库服务器的机器名或者IP地址
:后面的数字为DB2实例所监听的端口
/后面的为所要连接的数据库名称
可以使用set current schema命令查看改变一下当前的schema为sysibmadm,
SQL> set current schema sysibmadm;

DB250000I: 成功地完成该命令。

查看一下所有的数据字典:
SQL> desc dictionary

VIEW - DICTIONARY
********************************************************************************

名称 数据类型 类型模式 长度 小数位 可空
-------------------- --------------- --------------- -------- -------- --------
TABLE_SCHEMA VARCHAR SYSIBM 128 0 N
TABLE_NAME VARCHAR SYSIBM 128 0 N
COMMENTS VARCHAR SYSIBM 254 0 Y

********************************************************************************

SQL> select table_name from dictionary;

TABLE_NAME
--------------------------------------------------
ALL_ALL_TABLES
ALL_ARGUMENTS
ALL_CATALOG
ALL_COL_COMMENTS
ALL_CONSTRAINTS
ALL_CONS_COLUMNS
ALL_DEPENDENCIES
ALL_ERRORS
ALL_INDEXES
ALL_IND_COLUMNS
ALL_IND_PARTITIONS
ALL_OBJECTS
ALL_PART_INDEXES
ALL_PART_KEY_COLUMNS
ALL_PART_TABLES
ALL_PROCEDURES
ALL_SEQUENCES
ALL_SOURCE
ALL_SYNONYMS
ALL_TABLES
ALL_TAB_COLUMNS
ALL_TAB_COL_STATISTICS

TABLE_NAME
--------------------------------------------------
ALL_TAB_COMMENTS
ALL_TAB_PARTITIONS
ALL_TAB_PRIVS
ALL_TAB_PRIVS_MADE
ALL_TAB_PRIVS_RECD
ALL_TRIGGERS
ALL_VIEWS
ALL_VIEW_COLUMNS
DBA_ALL_TABLES
DBA_ARGUMENTS
DBA_CATALOG
DBA_COL_COMMENTS
DBA_CONSTRAINTS
DBA_CONS_COLUMNS
DBA_DEPENDENCIES
DBA_ERRORS
DBA_INDEXES
DBA_IND_COLUMNS
DBA_IND_PARTITIONS
DBA_OBJECTS
DBA_PART_INDEXES
DBA_PART_KEY_COLUMNS

TABLE_NAME
--------------------------------------------------
DBA_PART_TABLES
DBA_PROCEDURES
DBA_ROLES
DBA_ROLE_PRIVS
DBA_SEQUENCES
DBA_SOURCE
DBA_SYNONYMS
DBA_SYS_PRIVS
DBA_TABLES
DBA_TABLESPACES
DBA_TAB_COLUMNS
DBA_TAB_COL_STATISTICS
DBA_TAB_COMMENTS
DBA_TAB_PARTITIONS
DBA_TAB_PRIVS
DBA_TRIGGERS
DBA_VIEWS
DBA_VIEW_COLUMNS
DICTIONARY
DICT_COLUMNS
ROLE_ROLE_PRIVS
ROLE_SYS_PRIVS

TABLE_NAME
--------------------------------------------------
ROLE_TAB_PRIVS
SESSION_PRIVS
SESSION_ROLES
USER_ALL_TABLES
USER_ARGUMENTS
USER_CATALOG
USER_COL_COMMENTS
USER_CONSTRAINTS
USER_CONS_COLUMNS
USER_DEPENDENCIES
USER_ERRORS
USER_INDEXES
USER_IND_COLUMNS
USER_IND_PARTITIONS
USER_OBJECTS
USER_PART_INDEXES
USER_PART_KEY_COLUMNS
USER_PART_TABLES
USER_PROCEDURES
USER_ROLE_PRIVS
USER_SEQUENCES
USER_SOURCE

TABLE_NAME
--------------------------------------------------
USER_SYNONYMS
USER_SYS_PRIVS
USER_TABLES
USER_TABLESPACES
USER_TAB_COLUMNS
USER_TAB_COL_STATISTICS
USER_TAB_COMMENTS
USER_TAB_PARTITIONS
USER_TAB_PRIVS
USER_TAB_PRIVS_MADE
USER_TAB_PRIVS_RECD
USER_TRIGGERS
USER_VIEWS
USER_VIEW_COLUMNS

检索到 102 行。

接着查看一下数据库中表明为SERVER_CONFIG的表结构:
SQL> desc sde.server_config

TABLE - SERVER_CONFIG
********************************************************************************

名称 数据类型 类型模式 长度 小数位 可空
-------------------- --------------- --------------- -------- -------- --------
PROP_NAME VARCHAR SYSIBM 32 0 N
CHAR_PROP_VALUE VARCHAR SYSIBM 512 0 Y
NUM_PROP_VALUE INTEGER SYSIBM 4 0 Y

********************************************************************************

使用一下DBMS_OUTPUT包:
SQL> set serveroutput on
SQL> exec dbms_output.put_line('this is a testline'
);
this
is
a testline
DB250000I: 成功地完成该命令。


该工具虽然和Oracle的sqlplus相比有些差距,相信会越做越好的,因为IBM毕竟就是IBM。
文章来源:http://blog.csdn.net/liufeng1980423/article/details/6108146

0 个评论

要回复文章请先登录注册