每个数据库都有它自己的系统目录表和视图。它们存储关于数据对象的元数据。你可以像使用
普通的数据库表一样查询这些表。有三种模式用来识别系统目录表:
? SYSIBM: 基本表, 对 DB2使用进行最优化
? SYSCAT: 基于SYSIBM表的视图, 对平常轻负荷使用进行优化
? SYSSTAT: 数据库分析
(一下具体表列明详细注解请见《DB2应该开发教程》)
SYSIBM.SYSCHECKS : 存放系统中的CHECK约束的信息,系统为每个表的每一个CHECK约束建立一条记录。
SYSIBM.SYSCOLUMNS:表中存放有系统中所有表的数据列的描述信息,系统为DB2里定义的每个表的每一行建立 一条记录。
SYSIBM.SYSDATABASE:系统为每个DATABASE保存一条记录
SYSIBM.SYSFOREIGNKEYS:为每个FOREIGN KEY约束建立一条记录
SYSIBM.SYSINDEXES: 为每个索引建立一条记录。
SYSIBM.SYSKEYS: 系统为每个INDEX的每个键值创建一条记录。
SYSIBM.SYSTABLES:系统为每一个表,视图和别名在该表中创建一行记录。
SYSIBM.SYSPACKSTMT 每个PACKAGE 中的每条SQL语句有一条记录
SYSIBM.SYSPACKAGE 每个PACKAGE有一条记录
SYSIBM.SYSPACKLIST 每个PLAN相关的每个PACKAGE LIST有一条或一条以上记录
SYSIBM.SYSPLAN 每个PLAN有一条记录
联邦对象 | SYSCAT 编目视图 | 描述 |
包装器 | SYSCAT.WRAPPERS
SYSCAT.WRAPOPTIONS |
这两个视图显示被注册的包装器和它们特定的选项 |
Servers | SYSCAT.SERVERS
SYSCAT.SERVEROPTIONS |
这两个视图显示被注册的远程数据源和它们的特定选项 |
用户映射 | SYSCAT.USEROPTIONS | 这个视图显示被注册的一个 DB2 用户用于特定服务器的用户认证。密码设置存储在 encrypted 中 |
昵称 | SYSCAT.TABLES
SYSCAT.TABOPTIONS SYSCAT.COLUMNS SYSCAT.COLOPTIONS SYSCAT.INDEXES SYSCAT.INDOPTIONS SYSCAT.INDEXCOLUSE SYSCAT.KEYCOLUSE |
这组视图显示和被注册昵称相关的信息
在 SYSCAT.TABLES 中,昵称是通过被设为“N”的 TYPE 来标识的。 SYSCAT.TABOPTIONS 显示关于昵称的特定选项 SYSCAT.COLOPTIONS 显示关于昵称列的特定选项 SYSCAT.INDEXCOLUSE 列出参与一个索引的列 SYSCAT.KEYCOLUSE 存储关于主键的信息 |
索引规范 | SYSCAT.INDEXES
SYSCAT.INDEXCOLUSE |
这两个视图显示为昵称创建的索引规范 |
信息约束 | SYSCAT.TABCONST
SYSCAT.CHECKS SYSCAT.COLCHECKS SYSCAT.CONSTDEP SYSCAT.REFERENCES |
这组视图显示为昵称定义的信息约束
SYSCAT.TABCONST 显示每个定义的约束 SYSCAT.CHECKS 和 SYSCAT.COLCHECKS 显示关于检查约束的信息 SYSCAT.CONSTDEP 列出约束所依赖的对象 SYSCAT.REFERENCES 列出参照约束 |
类型映射 | SYSCAT.TYPEMAPPINGS | 这个视图显示在昵称注册和远程表创建中使用的用户定义类型映射。默认的内置类型映射不存储在这个编目视图中 |
函数模板 | SYSCAT.FUNCTIONS
SYSCAT.ROUTINES |
这两个视图显示被注册的用户定义函数
在 V8 中,SYSCAT.ROUTINES 取代了 SYSCAT.FUNCTIONS(SYSCAT.FUNCTIONS 仍然存在,但是文档中没有说明) |
函数映射 | SYSCAT.FUNCMAPPINGS
SYSCAT.FUNCMAPOPTIONS SYSCAT.FUNCMAPPARMOPTIONS |
这些视图显示用于将一个本地函数映射为远程函数的用户定义函数映射 |
Passthru 权限 | SYSCAT.PASSTHRUAUTH | 这个视图显示允许用户使用 PASSTHRU 查询特定服务器的授权 |
例如:
SELECT DISTINCT NAME FROM SYSIBM.SYSTABLES WHERE CREATOR ='ADMINISTRATOR'
select * from syscat.ROUTINES where owner = 'ADMINISTRATOR'
select * from syscat.TABLES where owner = 'ADMINISTRATOR'
select * from syscat.VIEWS where owner = 'ADMINISTRATOR'
select * from syscat.SEQUENCES where owner = 'ADMINISTRATOR'