Oracle 高级复制.docx

上传人:b****2 文档编号:2555618 上传时间:2023-05-04 格式:DOCX 页数:16 大小:16.98KB
下载 相关 举报
Oracle 高级复制.docx_第1页
第1页 / 共16页
Oracle 高级复制.docx_第2页
第2页 / 共16页
Oracle 高级复制.docx_第3页
第3页 / 共16页
Oracle 高级复制.docx_第4页
第4页 / 共16页
Oracle 高级复制.docx_第5页
第5页 / 共16页
Oracle 高级复制.docx_第6页
第6页 / 共16页
Oracle 高级复制.docx_第7页
第7页 / 共16页
Oracle 高级复制.docx_第8页
第8页 / 共16页
Oracle 高级复制.docx_第9页
第9页 / 共16页
Oracle 高级复制.docx_第10页
第10页 / 共16页
Oracle 高级复制.docx_第11页
第11页 / 共16页
Oracle 高级复制.docx_第12页
第12页 / 共16页
Oracle 高级复制.docx_第13页
第13页 / 共16页
Oracle 高级复制.docx_第14页
第14页 / 共16页
Oracle 高级复制.docx_第15页
第15页 / 共16页
Oracle 高级复制.docx_第16页
第16页 / 共16页
亲,该文档总共16页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

Oracle 高级复制.docx

《Oracle 高级复制.docx》由会员分享,可在线阅读,更多相关《Oracle 高级复制.docx(16页珍藏版)》请在冰点文库上搜索。

Oracle 高级复制.docx

Oracle高级复制

物化视图复制站点的配置步骤

主站点:

test.ncl(dbtest)

物化视图站点:

peixun.ncl(db58)

复制用户:

lis

复制表:

test_a

准备工作:

在站点创建将要被复制的表test_a

SQL>createtabletest_aasselect*fromuser_tables;

表已创建。

――创建主键

SQL>altertabletest_aadd(constraintpk_nameprimarykey(table_name));

表已更改。

SQL>commit;

提交完成。

复制开始

1.检查初始化参数:

参数global_names为true;job_queue_process大于0.

2.检查全局数据库名称

两个数据库的db_domain名称应该相同,只有db_name不同。

可以通过下面语句检查

Select*formglobal_name;

如果全局数据库名设置不符合规范,可以通过如下语句动态修改。

alterdatabaserenameglobal_nametotest.ncl

alterdatabaserenameglobal_nametopeixun.ncl;

3.检查tnsname

4.建立主体站点

--以system用户连接到主站点

CONNsystem@test

--建立复制管理用户repadmin并授权

SQL>connsystem/system@test

已连接。

--建立复制管理用户repadmin并授权

SQL>CREATEUSERrepadminIDENTIFIEDBYrepadmin;

用户已创建

SQL>BEGIN

2DBMS_REPCAT_ADMIN.GRANT_ADMIN_ANY_SCHEMA(username=>'repadmin');

3END;

4/

PL/SQL过程已成功完成。

SQL>commit;

提交完成。

SQL>GRANTCOMMENTANYTABLETOrepadmin;

授权成功。

SQL>GRANTLOCKANYTABLETOrepadmin;

授权成功。

SQL>GRANTSELECTANYDICTIONARYTOrepadmin;

授权成功。

--注册传播用户并授权,这里使用了管理用户repadmin,也可以分别建立用户

SQL>BEGIN

2DBMS_DEFER_SYS.REGISTER_PROPAGATOR(username=>'repadmin');

3END;

4/

PL/SQL过程已成功完成。

--注册接收用户,这里使用了管理用户repadmin

SQL>BEGIN

2DBMS_REPCAT_ADMIN.REGISTER_USER_REPGROUP(

3username=>'repadmin',

4privilege_type=>'receiver',

5list_of_gnames=>NULL);

6END;

7/

PL/SQL过程已成功完成。

--建立物化视图站点复制管理员的代理用户,出于简单考虑,这里也使用repadmin用户

SQL>BEGIN

2DBMS_REPCAT_ADMIN.REGISTER_USER_REPGROUP(

3username=>'repadmin',

4privilege_type=>'proxy_snapadmin',

5list_of_gnames=>NULL);

6END;

7/

PL/SQL过程已成功完成。

SQL>commit;

提交完成。

--设置代理刷新用户,并授权,这里仍然使用repadmin用户

--对于repadmin而言,不需要createsession权限

--但是这里如果新建用户的话,createsession权限则是必须的

SQL>GRANTCREATESESSIONTOrepadmin;

授权成功。

SQL>GRANTSELECTANYTABLETOrepadmin;

授权成功。

--设置清除延迟序列的job

--以复制管理员身份登陆到主站点

SQL>connrepadmin/repadmin

已连接。

SQL>BEGIN

2DBMS_DEFER_SYS.SCHEDULE_PURGE(

3next_date=>SYSDATE,

4interval=>'SYSDATE+1/8640',------------每10秒更新一次

5delay_seconds=>0);

6END;

7/

PL/SQL过程已成功完成。

SQL>commit;

提交完成。

5.设置物化视图站点

--以system用户连接到物化视图站点

SQL>connsystem/system@db58

已连接。

SQL>CREATEUSERmvadminIDENTIFIEDBYmvadmin;

用户已创建

SQL>BEGIN

2DBMS_REPCAT_ADMIN.GRANT_ADMIN_ANY_SCHEMA(

3username=>'mvadmin');

4END;

5/

PL/SQL过程已成功完成。

SQL>commit;

提交完成。

SQL>GRANTCOMMENTANYTABLETOmvadmin;

授权成功。

SQL>GRANTLOCKANYTABLETOmvadmin;

授权成功。

SQL>GRANTSELECTANYDICTIONARYTOmvadmin;

授权成功。

SQL>--建立传播者,并授权,这里使用mvadmin用户,也可以建立单独的用户

SQL>BEGIN

2DBMS_DEFER_SYS.REGISTER_PROPAGATOR(username=>'mvadmin');

3END;

4/

PL/SQL过程已成功完成。

SQL>commit;

提交完成。

SQL>--建立刷新者,并授权,这里使用mvadmin用户刷新物化视图

SQL>--对于mvadmin而言,不需要createsession权限

SQL>--但是这里如果新建用户的话,createsession权限则是必须的

SQL>GRANTCREATESESSIONTOmvadmin;

授权成功。

SQL>GRANTALTERANYMATERIALIZEDVIEWTOmvadmin;

授权成功。

SQL>--注册接受者

SQL>BEGIN

2DBMS_REPCAT_ADMIN.REGISTER_USER_REPGROUP(

3username=>'mvadmin',

4privilege_type=>'receiver',

5list_of_gnames=>NULL);

6END;

7/

PL/SQL过程已成功完成。

SQL>commit;

提交完成。

SQL>--建立PUBLIC数据库链

SQL>CREATEPUBLICDATABASELINKtest.nclUSING'dbtest';

数据库链接已创建。

SQL>--建立到主站点上代理物化视图管理员的数据库链

SQL>--以物化视图管理员身份连接到物化视图站点

SQL>CONNECTmvadmin/mvadmin@db58

已连接。

SQL>CREATEDATABASELINKtest.nclCONNECTTOrepadminIDENTIFIEDBY

2repadmin;

数据库链接已创建。

SQL>--设置清除延迟序列的job

SQL>--如果物化视图站点只包括只读物化视图,这一步可以省略

SQL>BEGIN

2DBMS_DEFER_SYS.SCHEDULE_PURGE(

3next_date=>SYSDATE,

4interval=>'SYSDATE+1/8640',

5delay_seconds=>0,

6rollback_segment=>'');

7END;

8/

PL/SQL过程已成功完成。

SQL>--设置将修改推入到主站点的job

SQL>--如果物化视图站点只包括只读物化视图,这一步可以省略

SQL>BEGIN

2DBMS_DEFER_SYS.SCHEDULE_PUSH(

3destination=>'test.ncl',

4interval=>'SYSDATE+1/8640',

5next_date=>SYSDATE,

6stop_on_error=>FALSE,

7delay_seconds=>0,

8parallelism=>0);

9END;

10/

PL/SQL过程已成功完成。

SQL>commit;

提交完成。

6.建立主体组

SQL>--建立名为rep_test的复制组

SQL>BEGIN

2DBMS_REPCAT.CREATE_MASTER_REPGROUP(

3gname=>'rep_test');

4END;

5/

PL/SQL过程已成功完成。

SQL>commit;

提交完成。

SQL>--将复制对象增加到复制组中

SQL>--主键所用的索引自动复制,其他索引需要明确添加到复制组中

SQL>BEGIN

2DBMS_REPCAT.CREATE_MASTER_REPOBJECT(

3gname=>'rep_test',

4type=>'TABLE',

5oname=>'test_a',

6sname=>'lis',

7use_existing_object=>TRUE,

8copy_rows=>FALSE);

9END;

10/

PL/SQL过程已成功完成。

SQL>BEGIN

2DBMS_REPCAT.CREATE_MASTER_REPOBJECT(

3gname=>'rep_test',

4type=>'INDEX',

5oname=>'pk_name',

6sname=>'lis',

7use_existing_object=>TRUE,

8copy_rows=>FALSE);

9END;

10/

PL/SQL过程已成功完成。

SQL>commit;

提交完成。

SQL>--生成复制支持

SQL>BEGIN

2DBMS_REPCAT.GENERATE_REPLICATION_SUPPORT(

3sname=>'lis',

4oname=>'test_a',

5type=>'TABLE',

6min_communication=>TRUE);

7END;

8/

PL/SQL过程已成功完成。

SQL>commit;

提交完成。

SQL>--开始复制

SQL>BEGIN

2DBMS_REPCAT.RESUME_MASTER_ACTIVITY(

3gname=>'rep_test');

4END;

5/

PL/SQL过程已成功完成。

SQL>commit;

提交完成。

7.建立物化视图

SQL>--以复制用户连接到主站点

SQL>CONNECTlis/lis

已连接。

SQL>--建立物化视图日志表,FAST刷新方式必须要求建立物化视图日志,COMPLETE则不

需要

SQL>CREATEMATERIALIZEDVIEWLOGONlis.test_a;

实体化视图日志已创建。

赋予lis用户权限

SQL>connsystem/system

已连接。

SQL>GRANT

2CREATESESSION,

3CREATETABLE,

4CREATEPROCEDURE,

5CREATESEQUENCE,

6CREATETRIGGER,

7CREATEVIEW,

8CREATESYNONYM,

9ALTERSESSION,

10CREATEMATERIALIZEDVIEW,

11ALTERANYMATERIALIZEDVIEW,

12CREATEDATABASELINK

13TOlis;

授权成功。

SQL>--建立复制用户到主站点代理刷新者的数据库链

SQL>CONNECTlis/lis@db58

已连接。

SQL>CREATEDATABASELINKtest.nclCONNECTTOrepadminIDENTIFIEDBY

2repadmin;

数据库链接已创建。

SQL>--物化视图组必须和复制站点上的复制组名称相同

SQL>BEGIN

2DBMS_REPCAT.CREATE_MVIEW_REPGROUP(

3gname=>'rep_test',

4master=>'test.ncl',

5propagation_mode=>'ASYNCHRONOUS');

6END;

7/

PL/SQL过程已成功完成。

SQL>commit;

提交完成。

SQL>--创建刷新组

SQL>--对于只包含只读物化视图的站点,不需要此步骤

SQL>BEGIN

2DBMS_REFRESH.MAKE(

3name=>'mvadmin.rep_refresh',

4list=>'',

5next_date=>SYSDATE,

6interval=>'SYSDATE+1/8640',

7implicit_destroy=>FALSE,

8rollback_seg=>'',

9push_deferred_rpc=>TRUE,

10refresh_after_errors=>FALSE);

11END;

12/

PL/SQL过程已成功完成。

SQL>commit;

提交完成。

SQL>--创建物化视图

SQL>--对于只读物化视图,省略FORUPDATE语句

SQL>CREATEMATERIALIZEDVIEWlis.test_a

2REFRESHFASTWITHPRIMARYKEYFORUPDATE

3ASSELECT*FROMlis.test_a@test.ncl;

实体化视图已创建。

SQL>--将物化视图添加到物化视图组

SQL>--对于只读物化视图,此步骤可以省略

SQL>BEGIN

2DBMS_REPCAT.CREATE_MVIEW_REPOBJECT(

3gname=>'rep_test',

4sname=>'lis',

5oname=>'test_a',

6type=>'SNAPSHOT',

7min_communication=>TRUE);

8END;

9/

PL/SQL过程已成功完成。

SQL>BEGIN

2DBMS_REPCAT.CREATE_MVIEW_REPOBJECT(

3gname=>'rep_test',

4sname=>'lis',

5oname=>'pk_name',

6type=>'INDEX',

7min_communication=>TRUE);

8END;

9/

PL/SQL过程已成功完成。

SQL>commit;

提交完成。

SQL>--将物化视图添加到刷新组

SQL>BEGIN

2DBMS_REFRESH.ADD(

3name=>'mvadmin.rep_refresh',

4list=>'lis.test_a',

5lax=>TRUE);

6END;

7/

PL/SQL过程已成功完成。

SQL>commit;

提交完成。

测试:

SQL>connlis/lis

已连接。

SQL>selectcount(*)fromtest_a;

COUNT(*)

----------

1766

SQL>deletefromtest_awhererownum<20;

已删除19行。

SQL>commit;

提交完成。

SQL>selectcount(*)fromtest_a;

COUNT(*)

----------

1747

SQL>connlis/lis@db58

已连接。

SQL>selectcount(*)fromtest_a;

COUNT(*)

----------

1766

――――――――――――――――――――――过段时间

SQL>selectcount(*)fromtest_a;

COUNT(*)

----------

1747

 

在复制站点上测试

SQL>connlis/lis@db58

已连接。

SQL>deletefromtest_awhererownum<20;

已删除19行。

SQL>commit;

提交完成。

SQL>selectcount(*)fromtest_a;

COUNT(*)

----------

1728

SQL>connlis/lis

已连接。

SQL>selectcount(*)fromtest_a;

COUNT(*)

----------

1747

――――――――――――――――――――――――――过段时间

SQL>selectcount(*)fromtest_a;

COUNT(*)

----------

1728

 

基本成功

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2