/**/
/* 从DPS到EMIS,表dpsuser.gg_web_info_m */
/**/ /* 首先确保在EMIS数据库中已经建立了dpsuser和相应的表空间dpsdata */
/**/ /* 第一步,配置主体端 */
connect system / manager @dps
grant connect,dba,resource to dpsuser;
/**/ /* 创建复制管理员repadmin */
create user repadmin identified by repadmin;
alter user repadmin default tablespace users;
alter user repadmin temporary tablespace temp ;
grant connect,resource to repadmin;
/**/ /* 授予repadmin用户权限可以管理当前站点中任何主体组 */
execute dbms_repcat_admin.grant_admin_any_schema( ' repadmin ' );
/**/ /* 授予repadmin用户权限可以为任何表创建snapshot logs */
grant comment any table to repadmin;
grant lock any table to repadmin;
/**/ /* 指定repadmin用户为propagator,并授予执行任何procedure的权限 */
execute dbms_defer_sys.register_propagator( ' repadmin ' );
grant execute any procedure to repadmin;
/**/ /* 分配proxy snapshot administration权限给repadmin,list_of_gnames为null,意味着可以管理所有对象组 */
begin
dbms_repcat_admin.register_user_repgroup(
username => ' repadmin ' ,
privilege_type => ' proxy_snapadmin ' ,
list_of_gnames => null );
end ;
/
/**/ /* 分配'receiver'权限给repadmin */
begin
dbms_repcat_admin.register_user_repgroup(
username => ' repadmin ' ,
privilege_type => ' receiver ' ,
list_of_gnames => null );
end ;
/
grant select any table to repadmin;
/**/ /* 以repadmin身份登录 */
connect repadmin / repadmin @DPS
/**/ /* 在DPS上建立主体组,主体组名为REP_DPS,并往主体组中加入一个表 */
/**/ /* 建立主体组 */
begin
dbms_repcat.create_master_repgroup(
gname => ' rep_dps ' ,
qualifier => '' ,
group_comment => '' );
end ;
/
/**/ /* 向主体组中加入表gg_web_info_m */
begin
dbms_repcat.create_master_repobject(
gname => ' rep_dps ' ,
type => ' table ' ,
oname => ' gg_web_info_m ' ,
sname => ' dpsuser ' ,
copy_rows => true,
use_existing_object => true);
end ;
/
/**/ /* 建立相应的快照日志 */
create snapshot log
on dpsuser.gg_web_info_m
tablespace system
with primary key
excluding new values ;
/**/ /* 生成复制支持 */
begin
dbms_repcat.generate_replication_support(
sname => ' dpsuser ' ,
oname => ' gg_web_info_m ' ,
type => ' table ' ,
min_communication => true,
generate_80_compatible => false);
end ;
/
/**/ /* 第二步,配置快照端 */
connect system / manager @emis
/**/ /* 修改用户权限 */
grant connect,dba,resource to dpsuser;
/**/ /* 创建复制管理员repadmin */
create user repadmin identified by repadmin;
alter user repadmin default tablespace users;
alter user repadmin temporary tablespace temp ;
grant connect,resource to repadmin;
/**/ /* 授予repadmin用户权限可以管理当前站点中任何主体组 */
execute dbms_repcat_admin.grant_admin_any_schema( ' repadmin ' );
/**/ /* 授予repadmin用户权限可以为任何表创建snapshot logs */
grant comment any table to repadmin;
grant lock any table to repadmin;
/**/ /* 指定repadmin用户为propagator,并授予执行任何procedure的权限 */
execute dbms_defer_sys.register_propagator( ' repadmin ' );
grant execute any procedure to repadmin;
/**/ /* 授予repadmin用户可以创建快照 */
grant create any snapshot to repadmin;
grant alter any snapshot to repadmin;
/**/ /*在EMIS服务器上添加到DPS的连接,可以通过修改tnsnames.ora实现 */
/**/ /* 在EMIS建立与DPS的数据库链接 */
create public database link dps connect to repadmin identified by repadmin using ' dps ' ;
/**/ /* 在EMIS建立刷新组ref_dps */
begin
dbms_refresh.make(
name => ' dpsuser.ref_dps ' ,
list => '' ,
next_date => sysdate,
interval => ' /*1:Secs*/ sysdate + 1/(60*60*24) ' ,
implicit_destroy => false,
lax => false,
job => 0 ,
rollback_seg => null ,
push_deferred_rpc => true,
refresh_after_errors => true,
purge_option => null ,
parallelism => null ,
heap_size => null );
end ;
/
/**/ /* 在EMIS建立快照组 同步为synchronous,异步为asynchronous*/
begin
dbms_repcat.create_snapshot_repgroup(
gname => ' rep_dps ' ,
master => ' dps ' ,
propagation_mode => ' asynchronous ' );
end ;
/
/**/ /*建立快照,快照要在表所属的用户下建立,所以要先用dpsuser登陆 */
connect dpsuser / dps @emis
/**/ /* 建立gg_web_info_m的快照 */
create snapshot dpsuser.gg_web_info_m
build immediate
refresh force
next sysdate + 1 / 86400
for update
as
select * from dpsuser.gg_web_info_m @dps ;
/**/ /* 将快照加入刷新组 */
begin
dbms_refresh. add (
name => ' dpsuser.ref_dps ' ,
list => ' dpsuser.gg_web_info_m ' ,
lax => true);
end ;
/
/**/ /* 将快照加入快照组 */
begin
dbms_repcat.create_snapshot_repobject(
gname => ' rep_dps ' ,
sname => ' dpsuser ' ,
oname => ' gg_web_info_m ' ,
type => ' snapshot ' ,
min_communication => false);
end ;
/
/**/ /* 第三步,在DPS端激活主体组 */
connect system / manager @dps
begin
dbms_repcat.resume_master_activity(
gname => ' rep_dps ' );
end ;
/
/**/ /* 首先确保在EMIS数据库中已经建立了dpsuser和相应的表空间dpsdata */
/**/ /* 第一步,配置主体端 */
connect system / manager @dps
grant connect,dba,resource to dpsuser;
/**/ /* 创建复制管理员repadmin */
create user repadmin identified by repadmin;
alter user repadmin default tablespace users;
alter user repadmin temporary tablespace temp ;
grant connect,resource to repadmin;
/**/ /* 授予repadmin用户权限可以管理当前站点中任何主体组 */
execute dbms_repcat_admin.grant_admin_any_schema( ' repadmin ' );
/**/ /* 授予repadmin用户权限可以为任何表创建snapshot logs */
grant comment any table to repadmin;
grant lock any table to repadmin;
/**/ /* 指定repadmin用户为propagator,并授予执行任何procedure的权限 */
execute dbms_defer_sys.register_propagator( ' repadmin ' );
grant execute any procedure to repadmin;
/**/ /* 分配proxy snapshot administration权限给repadmin,list_of_gnames为null,意味着可以管理所有对象组 */
begin
dbms_repcat_admin.register_user_repgroup(
username => ' repadmin ' ,
privilege_type => ' proxy_snapadmin ' ,
list_of_gnames => null );
end ;
/
/**/ /* 分配'receiver'权限给repadmin */
begin
dbms_repcat_admin.register_user_repgroup(
username => ' repadmin ' ,
privilege_type => ' receiver ' ,
list_of_gnames => null );
end ;
/
grant select any table to repadmin;
/**/ /* 以repadmin身份登录 */
connect repadmin / repadmin @DPS
/**/ /* 在DPS上建立主体组,主体组名为REP_DPS,并往主体组中加入一个表 */
/**/ /* 建立主体组 */
begin
dbms_repcat.create_master_repgroup(
gname => ' rep_dps ' ,
qualifier => '' ,
group_comment => '' );
end ;
/
/**/ /* 向主体组中加入表gg_web_info_m */
begin
dbms_repcat.create_master_repobject(
gname => ' rep_dps ' ,
type => ' table ' ,
oname => ' gg_web_info_m ' ,
sname => ' dpsuser ' ,
copy_rows => true,
use_existing_object => true);
end ;
/
/**/ /* 建立相应的快照日志 */
create snapshot log
on dpsuser.gg_web_info_m
tablespace system
with primary key
excluding new values ;
/**/ /* 生成复制支持 */
begin
dbms_repcat.generate_replication_support(
sname => ' dpsuser ' ,
oname => ' gg_web_info_m ' ,
type => ' table ' ,
min_communication => true,
generate_80_compatible => false);
end ;
/
/**/ /* 第二步,配置快照端 */
connect system / manager @emis
/**/ /* 修改用户权限 */
grant connect,dba,resource to dpsuser;
/**/ /* 创建复制管理员repadmin */
create user repadmin identified by repadmin;
alter user repadmin default tablespace users;
alter user repadmin temporary tablespace temp ;
grant connect,resource to repadmin;
/**/ /* 授予repadmin用户权限可以管理当前站点中任何主体组 */
execute dbms_repcat_admin.grant_admin_any_schema( ' repadmin ' );
/**/ /* 授予repadmin用户权限可以为任何表创建snapshot logs */
grant comment any table to repadmin;
grant lock any table to repadmin;
/**/ /* 指定repadmin用户为propagator,并授予执行任何procedure的权限 */
execute dbms_defer_sys.register_propagator( ' repadmin ' );
grant execute any procedure to repadmin;
/**/ /* 授予repadmin用户可以创建快照 */
grant create any snapshot to repadmin;
grant alter any snapshot to repadmin;
/**/ /*在EMIS服务器上添加到DPS的连接,可以通过修改tnsnames.ora实现 */
/**/ /* 在EMIS建立与DPS的数据库链接 */
create public database link dps connect to repadmin identified by repadmin using ' dps ' ;
/**/ /* 在EMIS建立刷新组ref_dps */
begin
dbms_refresh.make(
name => ' dpsuser.ref_dps ' ,
list => '' ,
next_date => sysdate,
interval => ' /*1:Secs*/ sysdate + 1/(60*60*24) ' ,
implicit_destroy => false,
lax => false,
job => 0 ,
rollback_seg => null ,
push_deferred_rpc => true,
refresh_after_errors => true,
purge_option => null ,
parallelism => null ,
heap_size => null );
end ;
/
/**/ /* 在EMIS建立快照组 同步为synchronous,异步为asynchronous*/
begin
dbms_repcat.create_snapshot_repgroup(
gname => ' rep_dps ' ,
master => ' dps ' ,
propagation_mode => ' asynchronous ' );
end ;
/
/**/ /*建立快照,快照要在表所属的用户下建立,所以要先用dpsuser登陆 */
connect dpsuser / dps @emis
/**/ /* 建立gg_web_info_m的快照 */
create snapshot dpsuser.gg_web_info_m
build immediate
refresh force
next sysdate + 1 / 86400
for update
as
select * from dpsuser.gg_web_info_m @dps ;
/**/ /* 将快照加入刷新组 */
begin
dbms_refresh. add (
name => ' dpsuser.ref_dps ' ,
list => ' dpsuser.gg_web_info_m ' ,
lax => true);
end ;
/
/**/ /* 将快照加入快照组 */
begin
dbms_repcat.create_snapshot_repobject(
gname => ' rep_dps ' ,
sname => ' dpsuser ' ,
oname => ' gg_web_info_m ' ,
type => ' snapshot ' ,
min_communication => false);
end ;
/
/**/ /* 第三步,在DPS端激活主体组 */
connect system / manager @dps
begin
dbms_repcat.resume_master_activity(
gname => ' rep_dps ' );
end ;
/