db2look - Db2 统计信息和 DDL 抽取工具命令

抽取数据定义语言 (DDL) 语句,用于在测试数据库上重新生成生产数据库的数据库对象。

db2look 命令按对象类型生成 DDL 语句。 请注意,此命令会忽略 SYSTOOLS 模式下的所有对象(用户定义的函数和存储过程除外)。

通常最好让测试系统包含生产系统的部分数据,但是,针对此类测试系统选择的访问方案不一定与针对生产系统选择的访问方案相同。然而,通过使用 db2look 工具,您可以创建访问方案与生产系统上使用的方案相似的测试系统。您可以使用此工具来生成 UPDATE 语句,用于在测试数据库上复制生产数据库中对象的目录统计信息。另外,还可以使用此工具生成 UPDATE DATABASE CONFIGURATIONUPDATE DATABASE MANAGER CONFIGURATIONdb2set 命令,以使测试数据库上的查询优化器相关配置参数和注册表变量的值与生产数据库的相应值匹配。

您应该检查 db2look 命令所生成的 DDL 语句,因为它们可能不会重现原始 SQL 对象的所有特征。对于分区数据库环境中的表空间,如果某些数据库分区处于不活动状态,那么 DDL 可能不完整。请使用 ACTIVATE DATABASE 命令,确保所有数据库分区都处于活动状态。

权限

对系统目录表的 SELECT 特权。

在某些情况下,例如生成表空间容器 DDL,您需要下列其中一项权限:
  • SYSADM
  • SYSCTRL
  • SYSMAINT
  • SYSMON
  • DBADM
  • 对 ADMIN_GET_STORAGE_PATHS 表函数的 EXECUTE 特权

需要的连接

命令语法

阅读语法图跳过直观语法图db2look-dDBname-createdb-printdbcfg-e-ucreator-zschema-tTname-twTname-ct-dp-vVname-h-ap-oFname-a-m-c-r-l1-x-xdep2-xd-xddep-f-tddelimiter-noview-iuserid-wpassword-wlm-wrap-wrapperWname-serverSname-nofed-fedonly-mod-xs-xdirdirname-cor-noimplschema
注:
  • 1 不能同时指定 -x 参数和 -xdep 参数
  • 2 不能同时指定 -xd 参数和 -xddep 参数

命令参数

-d DBname
要查询的生产数据库的别名。DBname 可以是 Db2Db2 for z/OS® 数据库的名称。如果 DBnameDb2 for z/OS 数据库,那么 db2look 命令会生成以下语句:
  • 针对表、索引、视图和用户定义单值类型的 DDL 语句
  • 针对表、列、列分布和索引的 UPDATE 统计信息语句
这些 DDL 和 UPDATE 统计信息语句适用于 Db2 数据库,但不适用于 Db2 for z/OS 数据库。您想要抽取 Db2 for z/OS 对象并在 Db2 数据库中重新创建这些对象时,这些语句十分有用。
-createdb
生成用来创建源数据库的 CREATE DATABASE 命令。
生成的 CREATE DATABASE 命令包含 CREATE DATABASE 语法中的常规参数和选项,但下列参数除外:
  • ALIAS
  • NUMSEGS
  • RESTRICTIVE
  • WITH
  • AUTOCONFIGURE
-printdbcfg
生成针对数据库配置参数的 UPDATE DB CFG 命令。printdbcfg 命令生成 UPDATE DB CFG 命令的顺序与 GET DB CFG 命令所返回的结果类似。

对于支持 AUTOMATIC 值的参数,可能需要在生成的 UPDATE DB CFG 命令末尾添加 AUTOMATIC。

生成的 UPDATE DB CFG 命令包含 UPDATE DATABASE CONFIGURATION 语法中的常规参数和选项,但下列参数除外:
  • PAGE_AGE_TRGT_MCR
  • DFT_TABLE_ORG
  • STRING_UNITS
  • NCHAR_MAPPING
  • EXTENDED_ROW_SZ
  • CONNECT_PROC
-e
针对下列数据库对象抽取 DDL 语句:
注: 从 DB2 z/OS 中生成 DDL 对象受下列数据库对象的限制:
  • 用户定义函数
  • 索引(不包括主键/唯一键)
  • 系统/业务周期时态表
  • 别名
  • 审计策略
  • 检查约束
  • 函数映射
  • 函数模板
  • 全局变量
  • 索引(包括分区表上的分区索引)
  • 索引规范
  • 具体化查询表 (MQT)
  • 昵称
  • 主键、引用完整性和检查约束
  • 引用完整性约束
  • 角色
  • 模式
  • 安全标号
  • 安全标号组件
  • 安全策略
  • 序列
  • 服务器
  • 存储过程
  • 注: 不会包括 SYSIBM.SYSTABLES 目录表中 STATISTICS_PROFILE 列的值。
  • 触发器
  • 可信上下文
  • 类型映射
  • 用户映射
  • 用户定义的单值类型
  • 用户定义的函数
  • 用户定义的方法
  • 用户定义的结构化类型
  • 用户定义的变换
  • 视图
  • 包装器
如果使用 db2look 命令所生成的 DDL 语句来重新创建用户定义的函数,那么该函数所引用的源代码(例如,EXTERNAL NAME 子句)必须可以获得,该函数才会可用。
-u creator
针对使用所指定创建者标识创建的对象生成 DDL 语句。将输出限制为使用所指定创建者标识创建的对象。输出不会包括任何不可操作的对象。要显示不可操作的对象,请使用 -a 参数。如果指定了 -a 参数,那么将会忽略 -u 参数。
-z schema
针对具有所指定模式名称的对象生成 DDL 语句。将输出限制为具有所指定模式名称的对象。输出不会包括任何不可操作的对象。要显示不可操作的对象,请使用 -a 参数。如果未指定 -z 参数,那么将会抽取具有任何模式名称的对象。如果指定了 -a 参数,那么将会忽略 -z 参数。对于联合的 DDL 语句,也会忽略此参数。
-t Tname1 Tname2 ... TnameN
针对指定的表及其从属对象生成 DDL 语句。将输出限制为表列表中指定的表,并针对用户所指定的所有表的所有从属对象生成 DDL 语句。最大表数目为 30。
从属对象包括:
  • 注释
  • 索引
  • 主键
  • 唯一键
  • 别名
  • 外键约束
  • 检查约束
  • 视图
  • 触发器
请以如下方式指定列表:
  • 以空格分隔表名。
  • 以反斜杠 (\) 加双引号 (" ") 将区分大小写的名称和双字节字符集 (DBCS) 名称括起来(例如,\" MyTabLe \")。
  • 以反斜杠加两组双引号将多字表名称括起来(例如,"\"My Table\""),以防命令行处理器 (CLP) 逐字对该配对进行求值。如果仅使用一组双引号(例如,"My Table"),那么所有的字都会转换为大写,并且 db2look 命令会查找大写的表名(例如,MY TABLE)。

同时指定 -t 参数和 -l 参数时,支持分区表。

可以使用由两部分组成的表名(格式为 schema.table),以便完全限定表名,而无需使用 -z schema 参数。当表的从属对象与该表不在同一个模式中,而且您需要针对这些从属对象生成 DDL 语句时,请使用两部分的表名。如果使用 -z schema 参数来指定模式,那么该参数会排除不具有相同父模式的从属对象,从而导致无法针对这些从属对象生成 DDL 语句。

-tw Tname
针对名称与您使用 Tname 指定的模式匹配的表生成 DDL 语句,并针对这些表的所有从属对象生成 DDL 语句。Tname 必须仅为单个值。Tname 中的下划线字符 (_) 表示任意单个字符。百分号 (%) 表示零个或零个以上字符的字符串。指定了 -tw 时,将会忽略 -t 选项。

可以使用由两部分组成的表名(格式为 schema.table),以便完全限定表名,而无需使用 -z schema 参数。当表的从属对象与该表不在同一个模式中,而且您需要针对这些从属对象生成 DDL 语句时,请使用两部分的表名。如果使用 -z schema 参数来指定模式,那么该参数会排除不具有相同父模式的从属对象,从而导致无法针对这些从属对象生成 DDL 语句。

-ct
按对象创建时间生成 DDL 语句。对象 DDL 语句可能不会以正确的依赖关系顺序显示。如果指定了 -ct 参数,那么 db2look 命令仅支持下列附加参数:-e-a-u-z-t-tw-v-l-noview-wlm。如果将 -ct 参数与 -z-t 参数配合使用,那么 db2look 命令会生成所需的 UPDATE 语句,以复制有关表、统计视图、列和索引的统计信息。
-dp
先生成 DROP 语句再生成 CREATE 语句。如果有依赖于所删除对象的对象,那么该 DROP 语句可能不会起作用。例如,存在依赖于模式的表时无法删除该模式,而存在依赖于用户定义类型或用户定义函数的类型、函数、触发器或表时,无法删除该用户定义类型或用户定义函数。对于类型表,仅会针对根表生成 DROP TABLE HIERARCHY 语句。对于索引、主键和外键以及约束,不会生成 DROP 语句,因为删除表时始终会删除这些对象。无法删除具有 RESTRICT ON DROP 属性的表。
-v Vname1 Vname2 ... VnameN
针对指定的视图生成 DDL 语句,但不针对其从属对象生成 DDL 语句。最大视图数为 30。管理区分大小写、DBCS 和多字表名的规则也适用于视图名称。如果指定了 -t 参数,那么将会忽略 -v 参数。

可以使用两部分的视图名称(格式为 schema.view)来完全限定视图。

-h
显示帮助信息。如果指定了此参数,那么将忽略所有其他参数。
-ap
生成将审计策略与其他数据库对象相关联所需的 AUDIT USING 语句。
-o Fname
将输出写入 Fname 文件。未指定扩展名时,将会使用 .sql 扩展名。未指定此参数时,输出会写入标准输出。
-a
针对任何用户所创建的对象(包括不可操作的对象)生成 DDL 语句。例如,如果同时指定此参数和 -e 参数,那么将会针对数据库中的所有对象抽取 DDL 语句。如果同时指定此参数和 -m 参数,那么将会针对数据库中所有由用户创建的表和索引抽取 UPDATE 统计信息语句。

如果未指定 -u-a 参数,那么将使用 USER 环境变量。在 UNIX 操作系统上,不必显式设置此变量。但是,在 Windows 操作系统上,USER 环境变量没有缺省值。因此,必须在 SYSTEM 变量中设置用户变量,或者在会话中发出 set USER=username 命令。

-m
生成复制有关表、统计视图、列和索引的统计信息所需的 UPDATE 语句。使用 -m 参数表示以模拟方式运行。
-c
如果指定了此选项,那么 db2look 命令不会生成 COMMIT、CONNECT 和 CONNECT RESET 语句。缺省操作是生成这些语句。除非还指定了 -m-e 参数,否则将会忽略此选项。
-r
如果同时指定此选项和 -m 参数,那么 db2look 命令不会生成 RUNSTATS 命令。缺省操作是生成 RUNSTATS 命令。
要点: 如果您打算针对另一个数据库运行使用带有 -m 参数的 db2look 命令所创建的命令处理器脚本(例如,以使测试数据库的目录统计信息与生产数据库中的相应信息匹配),那么这两个数据库必须使用相同的代码集、地域、整理和唯一性确定。
-l
针对下列数据库对象生成 DDL 语句:
  • 用户定义的表空间
  • 用户定义的存储器组
  • 用户定义的数据库分区组
  • 用户定义的缓冲池
-x
生成授权 DDL 语句,例如 GRANT 语句。
支持的权限包括:
  • 列:UPDATE 和 REFERENCES
  • 数据库:ACCESSCTRL、BINDADD、CONNECT、CREATETAB、CREATE_EXTERNAL_ROUTINE、CREATE_NOT_FENCED_ROUTINE、DATAACCESS、DBADM、EXPLAIN、IMPLICIT_SCHEMA、LOAD、QUIESCE_CONNECT、SECADM、SQLADM 和 WLMADM
  • 免除
  • 全局变量
  • 索引:CONTROL
  • 程序包:CONTROL、BIND 和 EXECUTE
  • 角色
  • 模式:CREATEIN、DROPIN 和 ALTERIN
  • 安全标号
  • 序列:USAGE 和 ALTER
  • 存储过程:EXECUTE
  • 表:ALTER、SELECT、INSERT、DELETE、UPDATE、INDEX、REFERENCE 和 CONTROL
  • 视图:SELECT、INSERT、DELETE、UPDATE 和 CONTROL
  • 用户定义的函数 (UDF):EXECUTE
  • 用户定义的方法:EXECUTE
  • 表空间:USE
  • 工作负载:USAGE
注:-t-tw 参数配合使用时,此参数不会针对从属对象生成授权 DDL 语句。请使用 -xdep 参数针对父对象和从属对象生成授权 DDL 语句。
-xdep
针对父对象和从属对象生成授权 DDL 语句,例如 GRANT 语句。如果未指定 -t-tw 参数,那么将会忽略此参数。支持的权限包括:
  • 列:UPDATE 和 REFERENCES
  • 索引:CONTROL
  • 存储过程:EXECUTE
  • 表:ALTER、SELECT、INSERT、DELETE、UPDATE、INDEX、REFERENCE 和 CONTROL
  • 表空间:USE
  • 用户定义的函数 (UDF):EXECUTE
  • 用户定义的方法:EXECUTE
  • 视图:SELECT、INSERT、DELETE、UPDATE 和 CONTROL
-xd
生成授权 DDL 语句,包括在创建对象时由 SYSIBM 授予权限的对象的授权 DDL 语句。 不会针对系统目录表和目录视图生成授权 DDL。
注:-t-tw 参数配合使用时,此参数不会针对从属对象生成授权 DDL 语句。请使用 -xddep 参数针对父对象和从属对象生成授权 DDL 语句。
-xddep
针对父对象和从属对象生成所有授权 DDL 语句,包括在创建对象时由 SYSIBM 授予权限的对象的授权 DDL 语句。如果未指定 -t-tw 参数,那么将会忽略此参数。
-f
抽取影响查询优化器的配置参数和注册表变量。
-td delimiter
指定由 db2look 命令生成的 SQL 语句的语句定界符。缺省定界符为分号 (;)。如果指定了 -e 参数,请使用此参数,因为抽取的对象可能包含触发器或 SQL 例程。
-noview
指定不抽取 CREATE VIEW DDL 语句。
-i userid
指定供 db2look 命令用来登录远程系统的用户标识。同时指定此参数和 -w 参数时,可以针对远程系统上的数据库运行 db2look 命令。本地数据库与远程数据库必须使用相同的 Db2 for z/OS 版本。
-w password
指定供 db2look 命令用来登录远程系统的密码。同时指定此参数和 -i 参数时,可以针对远程系统上的数据库运行 db2look 命令。本地数据库与远程数据库必须使用相同的 Db2 for z/OS 版本。
-wlm
生成特定于 WLM 的 DDL 输出,该输出可用于为下列各个项生成 CREATE 和 ALTER 语句:
  • 直方图
  • 服务类
  • 阈值
  • WLM 事件监视器
  • 工作负载
  • 工作操作集
  • 工作类集
-wrap
针对例程、触发器、视图和 PL/SQL 程序包生成 DDL 语句的模糊化版本。
-wrapper Wname
针对应用于所指定包装器的联合对象生成 DDL 语句。可能生成的联合 DDL 语句包括:
  • CREATE FUNCTION ... AS TEMPLATE
  • CREATE FUNCTION MAPPING
  • CREATE INDEX SPECIFICATION
  • CREATE NICKNAME
  • CREATE SERVER
  • CREATE TYPE MAPPING
  • CREATE USER MAPPING
  • CREATE WRAPPER
  • GRANT(对昵称、服务器和索引的特权)
未指定包装器名称或指定了多个包装器名称时,将会返回错误。
-server Sname
针对应用于所指定服务器的联合对象生成 DDL 语句。可能生成的联合 DDL 语句包括:
  • CREATE FUNCTION ... AS TEMPLATE
  • CREATE FUNCTION MAPPING
  • CREATE INDEX SPECIFICATION
  • CREATE NICKNAME
  • CREATE SERVER
  • CREATE TYPE MAPPING
  • CREATE USER MAPPING
  • CREATE WRAPPER
  • GRANT(对昵称、服务器和索引的特权)
未指定服务器名称或指定了多个服务器名称时,将会返回错误。
-nofed
指定不生成联合 DDL 语句。如果指定了此参数,那么将会忽略 -wrapper-server 参数。
-fedonly
指定仅生成联合 DDL 语句。
-mod
针对每个模块以及每个模块中定义的所有对象生成 DDL 语句。
-xs
导出在目标数据库中注册 XML 模式和 DTD 所需的所有文件,并生成用于注册这些文件的相应命令。导出的 XSR 对象集由 -u-z-a 参数控制。
-xdir dirname
将 XML 相关文件导出到指定的路径。未指定此参数时,所有 XML 相关文件都会导出到当前目录中。
-cor
生成带有 CREATE OR REPLACE 子句的 DDL 语句,而不考虑这些语句原先是否包含该子句。
-noimplschema
指定针对隐式创建的模式不生成 CREATE SCHEMA DDL 语句。如果指定了此参数,那么还必须指定 -e 参数。

示例

以下示例显示如何使用 db2look 命令:
  • 针对用户 walid 在数据库 DEPARTMENT 中创建的对象生成 DDL 语句。将输出发送到 db2look.sql 文件。
       db2look -d department -u walid -e -o db2look.sql
  • 针对由用户 walid 在数据库 DEPARTMENT 中创建,且模式名称为 ianhe 的对象,生成 DDL 语句。将输出发送到 db2look.sql 文件。
       db2look -d department -u walid -z ianhe -e -o db2look.sql
  • 生成 UPDATE 语句,用于复制用户 walid 在数据库 DEPARTMENT 中创建的数据库对象的统计信息。将输出发送到 db2look.sql 文件。
       db2look -d department -u walid -m -o db2look.sql
  • 针对用户 walid 所创建的对象生成 DDL 语句,并生成 UPDATE 语句,用于复制同一用户所创建的数据库对象的统计信息。将输出发送到 db2look.sql 文件。
       db2look -d department -u walid -e -m -o db2look.sql
  • 针对所有用户在数据库 DEPARTMENT 中创建的对象生成 DDL 语句。将输出发送到 db2look.sql 文件。
       db2look -d department -a -e -o db2look.sql
  • 针对用户定义的所有数据库分区组、缓冲池和表空间生成 DDL 语句。将输出发送到 db2look.sql 文件。
       db2look -d department -l -o db2look.sql
  • 针对优化器相关数据库和数据库管理器配置参数生成 UPDATE 语句,并针对数据库 DEPARTMENT 中的优化器相关注册表变量生成 db2set 命令。将输出发送到 db2look.sql 文件。
       db2look -d department -f -o db2look.sql
  • 针对优化器相关注册表变量生成 db2set 命令,并针对数据库 DEPARTMENT 生成下列语句:
    • 所有数据库对象的 DDL 语句
    • 用于复制所有表和索引的统计信息的 UPDATE 语句
    • GRANT 授权语句
    • 针对优化器相关数据库和数据库管理器配置参数的 UPDATE 语句
    • 针对优化器相关注册表变量的 db2set 命令
    • 用户定义的所有数据库分区组、缓冲池和表空间的 DDL 语句
    将输出发送到 db2look.sql 文件。
       db2look -d department -a -e -m -l -x -f -o db2look.sql
  • 针对数据库 DEPARTMENT 中的所有对象(包括由原始创建者创建的对象)生成所有授权 DDL 语句。(在本例中,由 SYSIBM 在创建对象时授予权限。)将输出发送到 db2look.sql 文件。
       db2look -d department -xd -o db2look.sql
  • 针对所有用户在数据库 DEPARTMENT 中创建的对象生成 DDL 语句。将输出发送到 db2look.sql 文件。
       db2look -d department -a -e -td % -o db2look.sql
    然后,输出可以由 CLP 读取:
       db2 -td% -f db2look.sql
  • 针对数据库 DEPARTMENT 中的对象生成 DDL 语句,不包括 CREATE VIEW 语句。将输出发送到 db2look.sql 文件。
       db2look -d department -e -noview -o db2look.sql
  • 针对数据库 DEPARTMENT 中与指定表相关的对象生成 DDL 语句。将输出发送到 db2look.sql 文件。
       db2look -d department -e -t tab1 "\"My TaBlE2\"" -o db2look.sql
  • 针对联合数据库 FEDDEPART 中的所有对象(联合对象和非联合对象)生成 DDL 语句。对于联合 DDL 语句,仅生成适用于所指定包装器 FEDWRAP 的语句。将输出发送到标准输出。
       db2look -d feddepart -e -wrapper fedwrap
  • 生成仅包含非联合 DDL 语句的脚本文件。可以对联合数据库 FEDDEPART 运行以下系统命令,但只会生成类似于针对非联合数据库运行时的输出。将输出发送到 out.sql 文件。
       db2look -d feddepart -e -nofed -o out
  • 针对数据库 DEPARTMENT 中具有模式名称 walid 的对象生成 DDL 语句。注册任何所包括 XML 模式和 DTD 所需的文件将导出到当前目录中。将输出发送到 db2look.sql 文件。
       db2look -d department -z walid -e -xs -o db2look.sql
  • 针对所有用户在数据库 DEPARTMENT 中创建的对象生成 DDL 语句。注册任何所包括 XML 模式和 DTD 所需的文件将导出到 /home/ofer/ofer/ 目录中。将输出发送到标准输出。
       db2look -d department -a -e -xs -xdir /home/ofer/ofer/
  • 针对数据库 DEPARTMENT 仅生成特定于 WLM 的 DDL 语句:
    db2look -d department -wlm
  • 针对数据库 DEPARTMENT 中的所有对象生成 DDL 语句:
    db2look -d department -wlm -e -l
  • 针对数据库 DB1 中模式 TABLES 中的父表 TAB1,以及 TAB1 在 VIEWS 模式中名为 VIEW1 的从属视图,生成 DDL 语句。将输出发送到 db2look.sql 文件。
    db2look -d DB1 -t TABLES.TAB1 -e -o db2look.sql
  • 针对数据库 DB1 中模式 TABLES 中的父表 TAB1,以及 TAB1 在 VIEWS 模式中名为 VIEW1 的从属视图,生成 DDL 语句和授权 DDL 语句。将输出发送到 db2look.sql 文件。
    db2look -d DB1 -t TABLES.TAB1 -e -xdep -o db2look.sql
  • 以模拟方式针对 TABLE1 表生成 RUNSTATS DDL 语句。将输出发送到 db2look.sql 文件。并非该命令的所有可用 RUNSTATS 子句都受支持。
    db2look -d DB1 -t TABLE1 -m  -e -o db2look.sql
  • 生成用来创建数据库 DEPARTMENT 的 CREATE DATABASE 命令。将输出发送到 db2look.sql 文件。
       db2look -d department -createdb -o db2look.sql
  • 根据数据库 DEPARTMENT 生成 UPDATE DB CFG 语句。将输出发送到 db2look.sql 文件。
       db2look -d department -printdbcfg -o db2look.sql
  • 针对 DEPARTMENT 数据库,生成用于创建该数据库的 CREATE DATABASE 命令,生成 UPDATE DB CFG 语句,并针对其中创建的对象生成 DDL 语句。将输出发送到 db2look.sql 文件。
       db2look -d department -createdb -printdbcfg -e  -o db2look.sql

用法说明

在 Windows 操作系统上,必须从 Db2 命令窗口发出 db2look 命令。

缺省情况下,实例所有者对 db2look 程序包具有 EXECUTE 特权。要让其他用户运行 db2look 命令,实例所有者必须授予对 db2look 程序包的 EXECUTE 特权。要确定 db2look 程序包名,可以按如下所示使用 db2bfd 命令:
	cd .../sqllib/bnd
	db2bfd -b db2look.bnd
	db2bfd -b db2lkfun.bnd
	db2bfd -b db2lksp.bnd
要针对联合对象创建 DDL 语句,必须在数据库管理器配置中启用联合系统。在 db2look 命令生成脚本文件之后,必须先将 federated 配置参数设置为 YES,再运行该脚本。在联合环境中,支持下列 db2look 命令参数:
-ap
生成 AUDIT USING 语句。
-e
针对联合对象生成 DDL 语句。
-f
从数据库管理器配置中抽取与联合相关的信息。
-m
抽取昵称的统计信息。
-x
生成 GRANT 语句,以授予对联合对象的特权。
-xd
生成 DDL 语句,以将系统授予的特权添加到联合对象。
-wlm
生成特定于 WLM 的 DDL 语句。

db2look 命令将为所有昵称列生成 ALTER TABLE ALTER COLUMN 语句,即使昵称列和远程表列具有不同的数据类型。

必须修改输出脚本,为 CREATE USER MAPPING 语句添加远程密码。

必须修改 db2look 命令输出脚本,在用来将 Db2 系列实例定义为数据源的 CREATE SERVER 语句中,添加 AUTHORIZATION 和 PASSWORD。

-tw 选项的用法如下所示:
  • 要针对 DEPARTMENT 数据库中那些与名称以 abc 开头的表关联的对象生成 DDL 语句,并将输出发送至 db2look.sql 文件:
       db2look -d department -e -tw abc% -o db2look.sql
  • 要针对 DEPARTMENT 数据库中那些与名称第二个字符为 d 的表相关联的对象生成 DDL 语句,并将输出发送至 db2look.sql 文件:
       db2look -d department -e -tw _d% -o db2look.sql
  • 在评估哪些表名与 Tname 自变量所指定的模式匹配时,db2look 命令会使用 LIKE 谓词。因为使用了 LIKE 谓词,如果表名中包含 _ 字符或 % 字符,那么必须正好在 _ 或 % 之前使用反斜杠 (\) 转义字符。在这种情况下,不能在 Tname 中使用 _ 和 % 作为通配符。例如,要针对 DEPARTMENT 数据库中那些与百分号并非位于名称首尾位置的表相关联的对象生成 DDL 语句:
       db2look -d department -e -tw string\%string
  • 区分大小写、DBCS 以及多字表名和视图名必须以反斜杠加双引号括起来。例如:
       \"My TabLe\"

    如果多字节字符集 (MBCS) 或双字节字符集 (DBCS) 名称未以反斜杠加双引号定界符括起来,而且该名称包含与小写字符相同的字节,那么它会转换为大写,而 db2look 将查找具有转换后名称的数据库对象。因此,不会抽取 DDL 语句。

  • -tw 选项可以与 -x 选项(用于生成 GRANT 特权)、-m 选项(用于返回表和列的统计信息)和 -l 选项(用于针对用户定义的表空间、数据库分区组和缓冲池生成 DDL)配合使用。如果同时指定 -t 选项和 -tw 选项,那么将会忽略 -t 选项(及其关联的 Tname 自变量)。
  • -tw 选项不能用来针对驻留在联合数据源、Db2 Universal Database on z/OS and OS/390®Db2 for i Db2 Server for VSE & VM 上的表(及其关联对象)生成 DDL。
  • -tw 选项仅通过 CLP 受支持。

尝试在具有分区数据库环境的系统上生成 DDL 语句时,将会显示一条警告消息,而不会针对不活动数据库分区上的表空间生成 DDL 语句。要确保针对所有表空间生成正确的 DDL 语句,必须激活所有数据库分区。

可以从 Db2 客户机向发行版与客户机相同或更高的数据库发出 db2look 命令,但无法从客户机向发行版低于客户机的数据库发出此命令。例如,可以从 V9.8 客户机向 Version 10.1 数据库发出 db2look 命令,但无法从 Version 10.1 客户机向 V9.8 数据库发出该命令。

调用 db2look 实用程序时,db2look 命令会针对使用未落实事务创建的任何对象生成 DDL 语句。

针对数组类型的安全标号组件抽取 DDL 语句时,抽取到的语句可能不会生成这样的组件:其内部表示(该数组中元素的编码)与您发出 db2look 命令所针对的数据库组件匹配。发生这种不匹配的原因可能是,您已通过向安全标号组件添加一个或多个元素来变更该组件。在这种情况下,从一个表中抽取并移至您根据 db2look 输出创建的另一个表的数据没有相应的安全标号值,这可能会危害到新表的安全保护。

在分区数据库环境中,如果是以表空间由数据库管理空间 (DMS) 或系统管理空间 (SMS) 使用指定的容器路径(包括 $N 表达式所定义的容器路径)来管理的方式创建数据库,那么 db2look -createdb 所生成的 CREATE DATABASE 命令会列出每个数据库分区上的所有容器路径,而不仅仅列出原先指定的路径或 $N 表达式。您必须先调整容器设置,然后才能运行所生成的语句。分区数据库环境中的自动存储器选项没有限制。

在 pureScale 环境中,db2look -printdbcfg 命令会根据从中运行 db2look -printdbcfg 命令的数据库成员的值生成 UPDATE DATABASE CONFIGURATION 值。