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 数据类型 <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
设置完该环境变量后,我创建了一个测试库,名称为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。
文章来源:http://blog.csdn.net/liufeng1980423/article/details/6108146
要使用这些功能,必须得先设置
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
- 只有在数据库创建期间才适用。启用或禁用此功能只影响以后创建的数据库。
- 要启用所有受支持的 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。
文章来源:http://blog.csdn.net/liufeng1980423/article/details/6108146
0 个评论
相关问题
- arcgis版本兼容性
- 通过桌面链接sde oracle 怎么样可以创建空间数据库? 现在新建没有要素类可以选择? 是不是新建有什么顺序
- arcgis点击连接oracle数据(或者双击连接)时,arcgis闪退,是什么原因?
- 多边形压盖问题oracle存储机制
- FAQ: 安装Oracle的Instant客户端是否可以建立ArcSDE的直连
- arcgis发布空间叠加分析的gp服务,不知源数据和结果数据是否能够从Oracle数据库里获取和存储,如果能,大体思路是什么,求大神解答。
- 10.0server和10.2桌面兼容性
- 用服务对象扩展(SOE)连接数据库oracle结果不显示
- ArcGIS Server注册Oracle数据库出错 [ORA-12504]:监听程序无法获得SERVICE_NAME
- 服务器装32位oracle服务端软件+arcgis server+arcmap,将oracle注册到server失败
- 在没有创建企业级地理数据库的前提下,如何使用桌面创建以oracle spatial存储格式存储的图层?