您的位置:首页 > 产品设计 > UI/UE

使用物化视图的prebuilt功能迁移大表

2014-03-13 15:58 302 查看
网络带宽充裕的条件下,用物化视图在线迁移大表是省事办法,后期的维护也比较方便。今天试着采用物化视图对一个300w行记录的表做迁移。

1、主库上为要迁移的表创建物化视图log

要迁移的表test。

create materialized view log on test; --test上需有primary key

2、在备库上创建test表

create table test as select * from test@prdb where 1=2;

-- prdb:到主库的db link;where 1=2 建了一张空表,这个方式很巧妙,也是学以致用:)

3、在备库上创建prebuilt类型的物化视图日志

create materialized view test on prebuilt table refresh fast as select * from test@prdb;

-- 采用prebuilt,物化视图必须和前面在备库创建的表test同名;refrest fast代表创建该视图时对表test(备库上)记录做增量刷新,当时此时视图仍然为空。

4、在备库上对表记录做全量刷新

exec dbms_mview.refresh('TEST','complete'); -- 表记录从主库复制到备库

5、在备库上对表记录做增量刷新

如果主库表test记录不断产生,可以不断对物化视图做增量刷新,直到数据一致。

exec dbms_mview.refresh('TEST');

6、确认数据迁移完成后,可以删除主库上的物化视图LOG和备库上的物化视图

主库:drop materialized view log on test;

备库:drop materialized view test; -- 删除视图test不会影响到表test

以上方法未练习,先行记下。感谢原文作者,转载地址:http://blog.sina.com.cn/s/blog_5d8f25920100bjkr.html

有高人传授了一句,既可以建好物化视图又可以把job建的sql语句,记下来以后用得着:

create materialized view mytable on prebuilt table refresh fast start with sysdate next sysdate+1/48 for update as select * from mytable@dblinkname
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: