在高级复制环境中执行DDL处理步骤

在高级复制环境中的对于需要复制的对象作任何DDL操作,都应该使用高级复制程序包来实现,下面是在一个复制表上添加两个列的DDL操作的处理流程。

[@more@]

首先说明一下测试环境:oracle9204,单主体站点,只读物化视图
在非复制环境中简单的添加列的语句:
ALTER TABLE DEMO ADD (D2 NUMBER,D3 NUMBER);

一、在主体站点上执行的步骤

1、挂起复制组

DBMS_REPCAT.SUSPEND_MASTER_ACTIVITY(GNAME =>'REP_GROUP');

2、通过高级复制包中的过程来执行DDL

DBMS_REPCAT.ALTER_MASTER_REPOBJECT (SNAME =>'SCOTT',ONAME =>'DEMO',TYPE =>'TABLE',DDL_TEXT => 'ALTER TABLE SCOTT.DEMO ADD (D2 NUMBER,D3 NUMBER)');

3、生成复制支持

DBMS_REPCAT.GENERATE_REPLICATION_SUPPORT(SNAME => 'SCOTT',ONAME => 'DEMO',TYPE => 'TABLE',MIN_COMMUNICATION => TRUE);

4、恢复复制组

DBMS_REPCAT.RESUME_MASTER_ACTIVITY(GNAME => 'REP_GROUP');
COMMIT;


二、在物化视图站点上执行的步骤

1、将物化视图从物化视图组中删除

DBMS_REPCAT.DROP_MVIEW_REPOBJECT(SNAME => 'SCOTT',ONAME => 'DEMO', TYPE => 'SNAPSHOT', DROP_OBJECTS => TRUE);

2、删除物化视图

如果上一步中参数DROP_OBJECTS没有设置或者为FALSE,则要执行此步:

DROP MATERIALIZED VIEW DEMO;

3、重新建立物化视图

CREATE MATERIALIZED VIEW SCOTT.DEMO REFRESH FAST ON DEMAND
AS
SELECT D1,D2,D3 FROM DEMO@MASTER_SITE;

4、将物化视图和索引添加到物化视图组

DBMS_REPCAT.CREATE_MVIEW_REPOBJECT(GNAME=>'REP_GROUP',SNAME=>'SCOTT',ONAME=>'DEMO',TYPE=>'SNAPSHOT',MIN_COMMUNICATION=>TRUE);

5、将物化视图添加到刷新组

DBMS_REFRESH.ADD(NAME => 'SCOTT.REP_REFRESH', LIST => 'SCOTT.DEMO', LAX => TRUE);

6、其它工作:将删除前的物化视图的授权再重新授予其它用户

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/3898/viewspace-828557/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/3898/viewspace-828557/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值