编辑, developerWorks 编辑团队, IBM
2008 年 5 月 15 日 在部署数据库时,目标应该是使数据库的重建尽可能简单且可重复。这常常使用 SQL 脚本来完成,可以在安装 DB2 之后立即执行这些脚本。在本次实验中,将使用 Control Center (控制中心) 从 EXPRESS 数据库中提取出对象定义。
目标
在部署数据库时,目标应该是使数据库的重建尽可能简单且可重复。这常常使用 SQL 脚本来完成,可以在安装 DB2 之后立即执行这些脚本。在本次实验中,将使用 Control Center (控制中心) 从 EXPRESS 数据库中提取出对象定义。
前提条件
步骤
 | |
IBM 为社区提供了 DB2 免费版本 DB2 Express-C,它提供了与 DB2 Express Edition 相同的核心数据特性,为构建和部署应用程序奠定了坚实的基础。
|
|
1.打开 Control Center (控制中心)。
2.在对象树中右击 EXPRESS 数据库并选择 “生成 DDL ” 菜单项。这会启动 “生成 DDL ”对话框。
图 1。启动“生成 DDL ”对话框
3.在 Generate DDL 对话框中,按照下图为生成的 DDL 指定选项。如果您在环境中创建了其他对象,比如表空间、缓冲池等等,那么应该在这里将它们选中。因为还没有创建这些类型的对象,所以不选择这个选项。也不包含数据库统计数据,因为生产环境和开发环境包含的统计数据很可能不一样。同样,配置参数也可能不一样。在您的环境中,如果将要部署的方式与配置方式完全相同,那么可以选择这些选项。
图 2。设置“语句”选项卡
注:由于我们没有进行授权和创建表空间、缓冲池和数据库分区,所以我们不生成对应的语句。
4.移动到“对象”选项卡。在这里,可以选择希望为其生成 DDL 的对象。在本例中,选择您用来创建所有对象的用户和模式,并为这个模式中的所有对象生成 DDL。单击“生成”按钮开始生成 DDL。
图 3。设置“对象”选项卡
选择“调度”选项卡,保留默认值。
图 4。设置“调度”选项卡
点击“显示命令”按钮,可以查看对应的命令。如图 5 所示。
图 5。显示对应的命令
图 5。显示对应的命令
关于 db2look 的具体命令语法,您可以在命令行直接执行。
清单 1。 db2look 命令语法
语法: db2look -d DBname [-e] [-xs] [-xdir Path] [-u Creator] [-z Schema]
[-t Tname1 Tname2...TnameN] [-tw Tname] [-h] [-o Fname] [-a] [-m] [-c]
[-r] [-l] [-x] [-xd] [-f] [-fd] [-td x] [-noview] [-i userID] [-w password]
[-v Vname1 Vname2 ... VnameN] [-dp] [-ct] [-wrapper WrapperName]
[-server ServerName] [-nofed] [-wlm] [-ap] [-wrapper WrapperName]
[-server ServerName][-fedonly][-nofed]
db2look [-h]
-d: 数据库名称:这必须指定
-e: 抽取复制数据库所需的 DDL 文件
-xs: 导出 XSR 对象并生成包含 DDL 语句的脚本
-xdir: 路径名:将用来放置 XSR 对象的目录
-u: 创建程序标识:如果 -u 和 -a 都未指定,那么将使用 $USER
-z: 模式名:如果同时指定了 -z 和 -a,那么将忽略 -z
-t: 生成指定表的统计信息
-tw: 为名称与表名的模式条件(通配符)相匹配的表生成 DDL
-ap: 生成 AUDIT USING 语句
-wlm: 生成特定于 WLM 的 DDL 语句
-h: 更详细的帮助消息
-o: 将输出重定向到给定的文件名
-a: 为所有创建程序生成统计信息
-m: 在模拟方式下运行 db2look 实用程序
-c: 不要生成模拟的 COMMIT 语句
-r: 不要生成模拟的 RUNSTATS 语句
-l: 生成数据库布局:数据库分区组、缓冲池和表空间。
-x: 生成排除对象的原始定义程序的“授权”语句 DDL
-xd: 生成包括对象的原始定义程序的“授权”语句 DDL
-f: 抽取配置参数和环境变量
-td: 将 x 指定为语句定界符(缺省定界符为分号(;))
-i: 登录到数据库驻留的服务器时所使用的用户标识
-w: 登录到数据库驻留的服务器时所使用的密码
-noview: 不要生成 CREATE VIEW ddl 语句
-wrapper: 为适用于此包装器的联合对象生成 DDL
-server: 为适用于此服务器的联合对象生成 DDL
-FEDONLY: Only created Federated DDL Statements
-nofed: 不要生成 Federated DDL
-fd: 为 opt_buffpage 和 opt_sortheap 以及其他配置和环境参数生成 db2fopt 语句。
-v: 只为视图生成 DDL,当指定了 -t 时将忽略此选项
-dp: 在 CREATE 语句之前生成 DROP 语句
-ct: 按对象创建时间生成 DDL 语句
|
5.检查生成的 DDL。前一个步骤的结果是一个脚本,其中包含所选对象的所有 SQL 语句。现在要将这个脚本组织到逻辑分组中。
图 6。生成 DDL
6.在文件系统中创建一个称为 C:\express 的目录,将生成的 DDL 文件保存在这个新目录中并命名为 schema.ddl。(单击“保存”按钮。)
图 7。保存 DDL 脚本
7.在“命令编辑器”中打开刚才保存的文件。(提示:在“命令编辑器”中,选择 文件 > 打开。参见“快速实验 2 ”)
8.尽管我们实际上只需要表的 DDL,但是将来这个文件也可能包含其他数据库对象的 DDL,但是按照对象的类型把 DDL 放在不同的文件中是一种很好的做法。
9.目前,还建议删除所有:
-
CONNECT TO 数据库语句
-
DISCONNECT 语句
-
CREATE FUNCTION 和 CREATE PROCEDURE 语句
-
不必要的注释
现在或许有多个脚本:
C:\express\schema.ddl
表、视图、索引和约束的 DDL
C:\express\others.ddl
其他对象的 DDL
10.为了便于部署,对脚本进行清理:
-
删除不必要的注释(比如 -- CONNECT TO…)
-
将函数和过程放到单独的文件中(在有大量函数和过程的情况下,这会很有帮助)。还可以按照功能或应用程序进行分组(比如 billing.ddl、math.ddl、stringfunc.ddl 等等)。
11.您可能会注意到,脚本中使用一个特殊字符(@)表示触发器、函数和过程的结尾。这是为了区分 CREATE <object> 语句的结尾和对象中过程式语句的结尾。
参考资源
关于作者
对本文的评价
|