db2 系统表

db2 系统表信息
|
字号

 订阅

 
 

 

 

DB2 CLP 简介

DB2 Command Line Processor(DB2 CLP)是所有 DB2 产品中都有的,可以使用这个应用程序运行 DB2 命令、操作系统命令或 SQL 语句。DB2 CLP 可以成为强大的工具,因为它能够将经常使用的命令或语句序列存储在批处理文件中,可以在必要的时候运行这些批处理文件。在 Windows 系统中,必须先(从普通命令窗口)运行 db2cmd 命令来启动 DB2 命令行环境。

在什么时候使用本文介绍的脚本?

脚本的优势在于可以重复执行。如果一个任务会被执行多次,或者被多人执行。那么将该任务编写成脚本会提高任务的执行效率和准确性。本文介绍的脚本都是一些在我们进行存储过程开发和调试中经常用到的。读者在后面会渐渐体会到脚本给我们带来的便利。

DB2 系统表的功能

编写针对 DB2 的脚本,我们需要首先了解 DB2 为我们提供了哪些命令和信息。DB2 为我们提供了大量的命令例如连接数据库,执行一个 SQL 文件,获得表结构的信息等等。我们会在下面解释具体的脚本的同时对一些简单的 DB2 命令进行解释说明。同时,DB2 把数据库对象的很多信息都存储到了系统表中。熟悉这些系统表就能够通过 SQL 语句获得我们需要的信息。下面我们先来学习一下 DB2 系统表。

在 DB2 数据库被创建的时候,DB2 会创建一些系统表。这些系统表中记录了所有数据库对象的信息,表或视图的列的数据类型,约束的定义,对象的权限和对象之间的依赖关系等。这些系统表的模式为 SYSIBM,其表名以 SYS 作为前缀。例如: SYSTABLES、SYSVIEWS 等等。DB2 为这些系统表建立了相对应的只读视图。这些视图的模式是 SYSCAT,它们的内容是其相对应的系统表的全部或者部分内容。这些视图的名字没有 SYS 的前缀。例如:SYSCAT.TABLES 是 SYSIBM.SYSTABLES 的视图。

我们可以通过 LIST TABLES FOR SYSTEM 或 LIST TABLES FOR SCHEMA schemaname 命令查看所有的系统表和相关的视图信息。下面我们会介绍一些本文用到的系统表和视图。

SYSCAT.TABLES:数据库中对象的信息,包括 table,view,nickname 和 alias 的一些定义。详细说明见表 1。


表 1. SYSCAT.TABLES 视图的说明
列名 数据类型 描述 TABSCHEMA TABNAME TYPE COLCOUNT ……
VARCHAR(128) 记录 schema 的名字
VARCHAR(128) 记录数据库对象的名称。包括表、视图、别名等
CHAR(1) 表示该数据库对象是表,视图还是别名 ('T'表示table; 'V'表示 view; 'N' 表示nickname; 'A' 表示 alias。)
SMALLINT 表或视图中列的个数
   

SYSCAT.VIEWS:视图的定义信息。详细说明见表 2。


表 2. SYSCAT.VIEWS 视图的说明
列名 数据类型 描述 VIEWSCHEMA VIEWNAME READONLY VALID TEXT ……
VARCHAR(128) 视图的 Schema
VARCHAR(128) 视图名称
CHAR(1) 视图是否只读:
  • Y = 视图是只读
  • N = 视图不是只读
CHAR(1) 视图状态是否合法:
  • Y = 视图状态合法(valid)
  • X = 视图状态不合法(invalid)
CLOB (64K) 视图的源程序(DDL)
   

SYSCAT.ROUTINES:DB2 UDF,系统方法(system-generated method),用户定义方法(user-defined method)和存储过程(SP)的定义。我们可以认为该视图包含了数据库中程序的定义。见表 3。


表 3. SYSCAT.ROUTINES 视图的说明
列名 数据类型 描述 ROUTINESCHEMA ROUTINENAME ROUTINETYPE SPECIFICNAME VALID TEXT …
VARCHAR(128) 记录程序的 schema
VARCHAR(128) 记录程序名称
CHAR(1) 记录程序类型:
  • F = Function
  • M = Method
  • P = Procedure
VARCHAR(128) 程序实例的名称(可以指定,也可以由系统自动生成)
CHAR(1) 如果存储过程依赖的一些对象被删除或修改了,该存储过程必须要被重建
  • Y = SQL 存储过程是合法的
  • N = SQL 存储过程是非法的
  • X = SQL 存储过程是不可操作的
CLOB(1M) 如果是用 SQL 编写的程序,该字段记录了其创建的 DDL
   

表 4 所示的 SYSCAT.ROUTINEDEP 说明了 DB2 UDF与其他对象的依赖关系。


表 4. SYSCAT.ROUTINEDEP 视图的说明
列名 数据类型 描述 ROUTINESCHEMA ROUTINENAME BTYPE BSCHEMA BNAME
VARCHAR(128) 依赖于其他对象的 DB2 程序的 schema
VARCHAR(128) 依赖于其他对象的 DB2 程序的名称
CHAR(1) 依赖对象的类型:
  • A = Alias
  • S = Materialized query table
  • T = Table
  • V = View
VARCHAR(128) 被依赖的对象的 schema
VARCHAR(128) 被依赖的对象的名称

表 5 所示的 SYSCAT.COLUMNS 说明了表或视图的每一个列的信息。


表 5. SYSCAT.COLUMNS 视图的说明
列名 数据类型 描述 TABSCHEMA TABNAME COLNAME KEYSEQ
VARCHAR(128) 表或视图的 Schema
VARCHAR(128) 表或视图名称
VARCHAR(128) 列名称
SMALLINT 记录列在其表的主键的位置

表 6 所示的 SYSCAT.PACKAGEDEP 说明了 Pachage 与其他数据库对象的依赖关系。


表 6. SYSCAT.PACKAGEDEP 视图的说明
列名 数据类型 描述 PKGSCHEMA PKGNAME BTYPE BSCHEMA BNAME
VARCHAR(128) Package 的 schema
VARCHAR(18) Package 的名称
CHAR(1) 依赖对象的类型:
  • A = Alias
  • B = Trigger
  • I = Index
  • S = Materialized query table
  • T = Table
  • V = View
VARCHAR(128) 被依赖的对象的 schema
VARCHAR(128) 被依赖的对象的名称

表 7 所示的 SYSCAT.TABDEP 说明了视图或者固化视图和 DB2 对象之间的依赖关系。


表 7. SYSCAT.TABDEP 视图的说明
列名 数据类型 描述 TABSCHEMA TABNAME DTYPE BTYPE BS
VARCHAR(128) 视图或者固化视图的 schema
VARCHAR(128) 视图或者固化视图的名称
CHAR(1) 视图的类型:
  • S = Materialized query table
  • V = View (untyped)
  • W = Typed view
CHAR(1) 依赖对象的类型:
  • A = Alias
  • S = Materialized query table
  • T = Table
  • V = View

猜你喜欢

转载自jetway.iteye.com/blog/1930830