设为首页 加入收藏

TOP

备份和恢复DB2 模式(二)
2011-04-22 09:25:20 来源: 作者: 【 】 浏览:38298次 评论:0
\'。

<MESSAGEDIRECTORY> 文件系统中的一个目录,这个过程将把装载消息文件写到这个目录中。这个目录必须根据操作系统以适当的斜线或反斜线结尾。

COPYSCHEMA(<TARGETSCHEMA>,<TARGETTABLESPACEINFO>,<SOURCESCHEMA>)
这个过程在相同的数据库中创建模式的副本。
参数

<TARGETSCHEMA> 新模式的大小写敏感名。

<TABLESPACEINFO> 包含要添加到每个表定义中的表空间信息的字符串。如果是 NULL 或 '',那么使用默认值。

<SOURCESCHEMA> 要复制的模式的大小写敏感名。

REBINDPROCEDURES(<SCHEMA>)
这个过程对一个模式中的所有 SQL 过程进行重新绑定。在为模式中过程使用的表收集新的统计数据之后,应该调用这个过程。这个过程将重新优化 SQL 过程中使用的所有 SQL 语句。
参数

<SCHEMA> 模式的大小写敏感名。

示例

CALL ADMIN.DROPSCHEMA('SAMPLE') 这个过程调用会删除模式 "SAMPLE" 中的所有对象。

CALL ADMIN.BACKUPSCHEMA('UTIL', 'D:\TEMP\UTIL_SCHEMA\') 这个过程调用将模式 "UTIL" 中的所有对象存储在目录 D:\TEMP\UTIL_SCHEMA\ 中。

CALL ADMIN.RESTORESCHEMA(NULL, NULL, 'D:\TEMP\UTIL_SCHEMA\', 'D:\TEMP\') 这个过程调用从 D:\TEMP\UTIL_SCHEMA\ 中获取对象,并使用默认表空间将它们恢复到原来的模式中。来自装载过程的消息写入 D:\TEMP\ 中。

CALL ADMIN.RESTORESCHEMA('SRIELAU', 'IN "DATA" INDEX IN "INDEX"', 'D:\TEMP\USER_SCHEMA\', 'D:\TEMP\') 这个过程调用从 D:\TEMP\USER_SCHEMA\ 中获取对象,并将它们恢复到 "SRIELAU" 模式中,对于表数据使用表空间 "DATA",对于索引使用 "INDEX"。来自装载过程的消息写入 D:\TEMP\ 中。

CALL ADMIN.COPYSCHEMA('SRIELAU', 'IN "DATA" INDEX IN "INDEX" LONG IN "LONG"', 'STOLZE') 这个过程调用将模式 "STOLZE" 中的所有对象复制到模式 "SRIELAU" 中,对于表数据使用表空间 "DATA",对于索引使用 "INDEX",对于 LOB 数据使用 "LONG"。

CALL ADMIN.REBINDPROCEDURES('SRIELAU'') 这个过程调用对模式 SRIELAU 中的所有 SQL 过程进行重新绑定,获取新的统计数据。

实现
本节在较高的层面上概述本文前面讨论的过程的实现。
成功地恢复一个模式中的所有对象的主要困难是,处理模式中不同对象之间的依赖性。例如,表可能依赖于用户定义的不同类型;检查约束依赖于函数;视图依赖于视图、别名和函数;等等。
因为 DB2 UDB 不能创建依赖于不存在的实体的对象,所以正确的执行次序是非常重要的。但是,如果仔细考虑一下这个问题,就会发现依赖图的深度一般不大,而且某些对象是自然的端点。比如,用户定义的类型不能依赖于其他 DDL 对象,而且表(不包括约束)只依赖于不同的类型。意识到这一情况,就可以分三个阶段实现恢复:

恢复所有不同的类型,然后恢复所有表及其索引。
将数据复制到表中并获取统计数据。这样做是为了确保 SQL 过程的执行计划是正确的。
在一个循环中恢复所有其他对象。因此,如果任何给定对象的创建失败了,那么不必担心,只要能够继续遍历要恢复的对象的列表。只有当过程进行不下去时,才会返回错误。
利用这种基本的恢复算法,很容易实现一种简单的基础设施。
BACKUPSCHEMA 过程使用 DDLLOG 表记录 DDL 语句。第一行(编号为 0)包含源模式。后面是不同类型的 DDL 语句,然后是表的 DDL 语句。这个阶段的末尾由一个空行表示,空行后面是所有其他对象。
这个表包含一个 SUCCESS 列,RESTORESCHEMA 使用这一列记录一个对象是否成功创建了。
DDL 对象的组成完全基于文档记录的 SYSCAT 编目视图,只有一个例外。IDENTITY 列的高水位标志需要从 SYSIBM.SYSSEQUENCES.LASTASSIGNVAL 中获得,在 DB2 UDB V8 中没有提供这个值。
与文件系统的交互是通过 SYSPROC.ADMIN_CMD 过程实现的,这个过程支持导出,用于将 DDLLOG 表、用户数据和统计数据写到文件中。对于装载,要使用 SYSPROC.DB2LOAD。
用来恢复模式的强制性方式也用于删除模式。DROPSCHEMA 过程简单地不断尝试删除对象,直到这个过程进行不下去或者所有对象都被删除为止。
结束语
本文提供了一组强大的过程,可以执行模式级操作,比如对给定模式中的所有对象进行逻辑备份、恢复和复制。除了用这个库帮助 ISV 和最终用户之外,本文还演示了如何利用 DB2 UDB 中丰富的 SQL API 为用户提供更多功能。

本文使用的附件下载地址:

http://www.5sozy.com/thread-4385-1-1.html

Tags:备份 恢复 模式 责任编辑:admin
首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Oracle&Sybase UDF移植至DB2 下一篇没有了

最新文章

热门文章

推荐文章

相关文章