六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 95|回复: 0

DB2 复制SCHEMA

[复制链接]

升级  6%

15

主题

15

主题

15

主题

秀才

Rank: 2

积分
59
 楼主| 发表于 2013-1-25 22:06:34 | 显示全部楼层 |阅读模式
问题: 从一个已有的schema 创建一个结构完全相同的schema。

DB2的一个存储过程,可以帮我们实现这样的功能,它就是SYSPROC.ADMIN_COPY_SCHEMA, 它的定义结构如下:
ADMIN_COPY_SCHEMA(VARCHAR(128) sourceschema,VARCHAR(128) targetschema,VARCHAR(128) copymode,VARCHAR(128) objectowner,CLOB(2M) sourcetbsp,CLOB(2M) targettbsp,VARCHAR(128) errortabschema,VARCHAR(128) errortab);

参数的详细解释:

  • sourceschema     要copy的源schema
  • targetschema     目标schema, 无需已经存在
  • copymode    copy的方式,主要有三种,
            DDL, 只拷贝对象的定义
            COPY, 对象会在新的schema中创建,然后会load(NONRECOVERABLE MODE)数据到新的schema下的对象中。因此在执行完存储过程后需要做一次备份,否则新表无法访问。
            COPYNO, 在新的schema创建,然后load(COPYNO MODE)数据到新的schema
  • objectowner     新创建对象的owner, 如果为NULL,那么执行COPY的用户将是owner
  • sourcetbsp     用于映射新的表空间,这个参数是以逗号隔开的表空间名。如果为NULL,那么所有新的对象都与原有的对象创建于同一个表空间。
  • targettbsp     以逗号隔开的列表,当源对象来自sourcetbsp中的一个表空间是,新的copy对象将会创建在targettbsp列表中相应次序的表空间中。 如果为NULL, 与源对象在同一表空间创建。如果为SYS_ANY, 则会用默认的表空间选择算法来选择表空间。
  • errortabschema     这是一个[IN OUT]参数,当有对象不能被成功copy时,需要将这些信息存于一张表中作为日志。 这个参数是log表的schema的名称,在SYSTOOLSPACE表空间中。 如果没有这样的记录,作为OUT,这个参数将返回NULL。
  • errortab     [IN OUT]参数,log表的名称。 这个表不能创建或已存在,那么存储过程调用将失败,且返回出错信息。表的具体定义见下图:



Sample:
CALL SYSPROC.ADMIN_COPY_SCHEMA('SOURCE_SCHEMA', 'TARGET_SCHEMA',    'COPY', NULL, 'SOURCETS1 , SOURCETS2', 'TARGETTS1, TARGETTS2,    SYS_ANY', 'ERRORSCHEMA', 'ERRORNAME')

DB2 CALL SYSPROC.ADMIN_COPY_SCHEMA('HUANG','JAY','DDL',NULL,NULL,NULL,'ERRORSCHEMA','ERRORNAME')



Reference: http://publib.boulder.ibm.com/infocenter/db2luw/v9/index.jsp?topic=/com.ibm.db2.udb.admin.doc/doc/r0022035.htm
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表