DB2 10.5 for Linux, UNIX, and Windows

兼容 Oracle 数据字典的视图

如果设置 DB2_COMPATIBILITY_VECTOR 注册表变量以支持兼容 Oracle 数据字典的视图,那么在创建数据库时会自动创建这些视图。

通过将 DB2_COMPATIBILITY_VECTOR 注册表变量设置为十六进制值 0x400(位位置 11),然后停止并重新启动该实例以使新设置生效,从而启用与 Oracle 数据字典兼容的视图支持。
db2set DB2_COMPATIBILITY_VECTOR=400
   db2stop
   db2start
要充分利用 Oracle 应用程序的 DB2 兼容性功能部件,DB2_COMPATIBILITY_VECTOR 的推荐设置是 ORA,这将设置所有兼容性位。

数据字典是一个数据库元数据存储库。数据字典视图会进行自我描述。DICTIONARY 视图将返回一个列表,该列表中包含所有的数据字典视图以及用于描述各视图内容的注释。DICT_COLUMNS 视图将返回一个列表,该列表包含所有数据字典视图中的所有列。对于这两个视图,可确定可用信息及访问方式。

每个数据字典视图都有三个不同版本,每个版本都通过视图名称前缀加以标识。
  • ALL_* 视图返回有关当前用户可访问的对象的信息。
  • DBA_* 视图返回有关数据库中的所有对象的信息(不管谁拥有这些对象)。
  • USER_* 视图返回有关当前数据库用户拥有的对象的信息。
一部分版本不适用于每个视图。

对于每个与 Oracle 数据字典兼容的视图,数据字典定义包含 CREATE VIEW、CREATE PUBLIC SYNONYM 和 COMMENT 语句。表 1 中列示了这些在 SYSIBMADM 模式中创建的视图。

表 1. 兼容 Oracle 数据字典的视图
类别 定义的视图
常规

DICTIONARY、DICT_COLUMNS、
USER_CATALOG、DBA_CATALOG、ALL_CATALOG、
USER_DEPENDENCIES、DBA_DEPENDENCIES、ALL_DEPENDENCIES、
USER_OBJECTS、DBA_OBJECTS、ALL_OBJECTS、
USER_SEQUENCES、DBA_SEQUENCES、ALL_SEQUENCES、
USER_TABLESPACES 和 DBA_TABLESPACES

表或视图

USER_CONSTRAINTS、DBA_CONSTRAINTS、ALL_CONSTRAINTS、
USER_CONS_COLUMNS、DBA_CONS_COLUMNS、ALL_CONS_COLUMNS、
USER_INDEXES、DBA_INDEXES、ALL_INDEXES、
USER_IND_COLUMNS、DBA_IND_COLUMNS、ALL_IND_COLUMNS、
USER_TAB_PARTITIONS、DBA_TAB_PARTITIONS、ALL_TAB_PARTITIONS、
USER_PART_TABLES、DBA_PART_TABLES、ALL_PART_TABLES、
USER_PART_KEY_COLUMNS、DBA_PART_KEY_COLUMNS、ALL_PART_KEY_COLUMNS、
USER_SYNONYMS、DBA_SYNONYMS、ALL_SYNONYMS、
USER_TABLES、DBA_TABLES、ALL_TABLES、
USER_TAB_COMMENTS、DBA_TAB_COMMENTS、ALL_TAB_COMMENTS、
USER_TAB_COLUMNS、DBA_TAB_COLUMNS、ALL_TAB_COLUMNS、
USER_COL_COMMENTS、DBA_COL_COMMENTS、ALL_COL_COMMENTS、
USER_TAB_COL_STATISTICS、DBA_TAB_COL_STATISTICS、ALL_TAB_COL_STATISTICS、
USER_VIEWS、DBA_VIEWS、ALL_VIEWS、
USER_VIEW_COLUMNS、DBA_VIEW_COLUMNS 和 ALL_VIEW_COLUMNS

编程对象

USER_PROCEDURES、DBA_PROCEDURES、ALL_PROCEDURES、
USER_SOURCE、DBA_SOURCE、ALL_SOURCE、
USER_TRIGGERS、DBA_TRIGGERS、ALL_TRIGGERS、
USER_ERRORS、DBA_ERRORS、ALL_ERRORS、
USER_ARGUMENTS、DBA_ARGUMENTS 和 ALL_ARGUMENTS

安全性

USER_ROLE_PRIVS、DBA_ROLE_PRIVS、ROLE_ROLE_PRIVS、
SESSION_ROLES、
USER_SYS_PRIVS、DBA_SYS_PRIVS、ROLE_SYS_PRIVS、
SESSION_PRIVS、
USER_TAB_PRIVS、DBA_TAB_PRIVS、ALL_TAB_PRIVS、ROLE_TAB_PRIVS、
USER_TAB_PRIVS_MADE、ALL_TAB_PRIVS_MADE、
USER_TAB_PRIVS_RECD、ALL_TAB_PRIVS_RECD 和
DBA_ROLES

示例

下列示例说明如何启用和使用名为 MYDB 的数据库的与数据字典兼容的视图并获得相关信息:
  • 启用创建与数据字典兼容的视图:
       db2set DB2_COMPATIBILITY_VECTOR=ORA
          db2stop
       db2start
       db2 create db mydb
  • 确定有哪些与数据字典兼容的视图可用:
       connect to mydb
       select * from dictionary
  • 使用 USER_SYS_PRIVS 视图来显示所有已授予当前用户的系统特权:
       connect to mydb
       select * from user_sys_privs
  • 确定 DBA_TABLES 视图的列定义:
       connect to mydb
       describe select * from dba_tables