进行复制
配置好本地服务名分别为:上海站点:sh,杭州站点:hz,武汉站点:wh,北京站点:bj,进入没有登录的sqlplus,让我们开始复制!
一.设置主站点。
这里以上海主站点设置为例。
1.连接主站点,创建复制管理员并授予相应的权限,复制管理员是管理整个复制环境并创建复制对象的用户。只有数据管理员可以建立主体组和实体化视图组。
connect system/passwd@sh create user repadmin identified by repadmin; begin dbms_repcat_admin.grant_admin_any_schema( username=>’repadmin’); end; /grant comment any table to repadmin; grant lock any table to repadmin; |
后面的两个grant语句使复制管理员可以为任何表建立实体化视图日志。如果想改用户可以使用视图管理器,还需要下面的命令:
grant select any dictionary to repadmin; |
2.注册传播方,传播方会将主体站点的延迟事务队列推入其他主体站点或者实体化视图站点。
begin dbms_defer_sys.register_purpagator(username=>’repadmin’); end; |
3.调度清除作业,该作业会定时清除延迟事务队列并用传播方将延迟事务推入其他主体站点或者实体化视图站点。先更换用户:
disconnect; connect repadmin/repadmin@sh; begin dbms_defer_sys.schedule_purge( next_date=>sysdate,interval=>’sysdate + 1’,delay_seconds=>0); end; |
next_date:下一次执行日期,sysdate表示立即。
interval:间隔时段,sysdate + 1表示间隔一天,sysdate+ 1/24表示间隔一小时。
delay_seconds:当延迟队列没有延迟事件时停止被次清除操作的延迟时间。
4.为实体化视图站点建立复制代理。创建复制代理用户并授予视图接受方权限。复制代理是复制接收方连接主体站点的用户:
disconnect; connect system/passwd@sh; create user proxy_bjoracle identified by proxy_bjoracle; begin dbms_repcat_admin.register_user_repgroup( user_name=>’proxy_bjoracle, privilege_type => ’proxy_snapadmin’,list_of_gnames => null); end; /grant select_catalog_role to proxy_bjoracle; |
5. 创建主体组。
disconnect; connect repadmin/repadmin@sh; begin dbms_repcat.create_master_repgroup(gname=>’sh_rep’); end; / |
6. 向主体组中添加复制对象
a) 添加表:
| begin dbms_repcat.create_master_repobject( gname=>’sh_rep’, type=>’table’, oname=>’ credit_card’ sname=>’shoracl’ use_existing_object=>true, copy_rows=>true); end; |
b) 添加索引
| begin dbms_repcat.create_master_repobject( gname=>’sh_rep’, type=>’index’, oname=>’ index_credit_card’ sname=>’shoracl’ use_existing_object=>true, copy_rows=>false); end; / |
7. 如果添加的表没有主键需要设置可以代替主键的列或者列的集合 g52^m!X'nTMwqn2Pn[本_文_来_源_于_我_的_学_习_网IT认证ORACLE/CIW认证 http://Www.GZU521.Com ]g52^m!X'nTMwqn2Pn
| begin dbms_repcat.set_columns( sname => ’shoracl’, oname => ’ credit_card ’, column_list => ’ credit_card_id’); end; / |
8. 在主体组中的数据对象可以被复制之前,必须为他们生成复制支持。该方法为复制创建必要的触发器、包或者存储过程:
| begin dbms_repcat.generate_replication_support( sname=>’shoracl’, oname=>’ credit_card’, type=>’table’, min_communication=>true); end; / |
9. 为快速刷新创建实体化视图日志:
create materialized view log on shoracl. credit_card; |
如果是没有主键的表示用一下语句:
| create materialized view log on shoracl. credit_card with rowid excluding new values; |