网管联盟 | 网管论坛 | 网管u家 | 网管博客 | 网管软件 | 网管求职 | 小游戏 | 网管搜索 | 网管原创 | 网管聚合 | 网管读摘 | 网管焦点 | 世界素材 | 会员投稿 | 会员中心 
中国网管联盟
Windows Linux Cisco 网络技术 数据库 黑客攻防 DotNet Java PHP 认证 新闻资讯 服务器 存储资讯 网络设备 网管学堂 技术专题 焦点 网吧频道
 当前位置: > bitsCN.com > 数据库技术 > 其它数据库 > 备份和恢复DB2 Universal Database (2)  

备份和恢复DB2 Universal Database (2)

2006-06-10  作者:BitsCN整理  来源:中国网管联盟  点评 投稿 收藏

例如:'IN DATA8K INDEX IN INDEX4K'

文件系统中存放 BACKUPSCHEMA 生成的文件的目录。这个目录在 UNIX 或 Linux 上必须以斜线结尾,在 Windows 上必须以反斜线结尾;例如 'D:\TEMP\MYSCHEMA\'。

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

COPYSCHEMA(,,)

这个过程在相同的数据库中创建模式的副本。

参数

新模式的大小写敏感名。

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

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

REBINDPROCEDURES()

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

参数

模式的大小写敏感名。

示例

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 过程进行重新绑定,获取新的统计数据。

实现

网管u家u.bitscn@com

本节在较高的层面上概述本文前面讨论的过程的实现。

成功地恢复一个模式中的所有对象的主要困难是,处理模式中不同对象之间的依赖性。例如,表可能依赖于用户定义的不同类型;检查约束依赖于函数;视图依赖于视图、别名和函数;等等。

因为 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 为用户提供更多功能。 网管网www_bitscn_com


TAGs恢复   备份   过程   模式   对象   所有   D:   TEMP    
 上一篇:DB2数据库与Oracle数据库之间远程复制   下一篇:备份和恢复DB2 Universal Database (1)
备份和恢复DB2 Universal Database (2) 评论:
loading.. 评论加载中…
评论:请自觉遵守互联网相关政策法规,评论不得超过250字。

验证码: 注册用户
本类热门排行:
最新推荐文章:
网管论坛交流: