DB2V9.7和Oracle的兼容性

从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 数据类型 1
启用 NUMBER 数据类型以及相关联的数字处理。

6(0x20)
VARCHAR2 数据类型 1
启用 VARCHAR2 和 NVARCHAR2 数据类型以及相关联的字符串处理。

7(0x40)
DATE 数据类型 1
允许将 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)
兼容数据字典的视图 1
允许创建兼容数据字典的视图。

12(0x800)
PL/SQL 编译 2
允许编译和执行 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 © 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。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值