精华区 [关闭][返回]

当前位置:网易精华区>>讨论区精华>>编程开发>>● 数据库技术>>Oracle产品>>Oracle8对称复制的实现(2)

主题:Oracle8对称复制的实现(2)
发信人: xiaomiao()
整理人: chedong(2000-07-31 17:19:46), 站内信件
(转载自www.oraclechina.com)

rem 第 二 步: 在 节 点 B (THE MASTER SITE) 执 行 这 段 SCRIPT!!! rem 
在 节 点 B 上 以 system 用 户 登 录 建 立 复 制 的 管 理 员 用 户 conn
ect system/[email protected]; create user repadmin identified by repadmi
n default tablespace data temporary tablespace temp; 

   rem 对 复 制 的 管 理 员 用 户 REPADMIN 授 予 管 理 员 权 限 begi
n dbms_repcat_admin.grant_admin_any_schema( username => 'REPADMIN'); e
nd; / grant comment any table to repadmin; grant lock any table to rep
admin; begin dbms_defer_sys.register_propagator(username => 'REPADMIN'
); end; / grant execute any procedure to REPADMIN; 

   rem 对 A 节 点 以 system 用 户 建 立 数 据 库 公 共 链 路 create 
public database link A.WORLD using 'A.WORLD'; 

   rem 以 复 制 的 管 理 员 用 户 建 立 私 有 链 路 connect repadmin
/[email protected]; create database link A.WORLD connect to repadmin id
entified by repadmin; 

   rem 每 3 分 钟 间 隔 PUSH 一 次 任 务 把 B 节 点 的 事 务 推 到 A
 节 点 去 执 行 begin dbms_defer_sys.schedule_push( destination => 'A.
WORLD', interval => '/* 3:Mins*/ sysdate + 3/(60*24)', next_date => sy
sdate, stop_on_error => FALSE, delay_seconds => 0, parallelism => 2); 
end; / 

   rem 每 5 分 钟 间 隔 PURGE 一 次 任 务 使 已 完 成 的 事 务 退 出
 队 列 begin dbms_defer_sys.schedule_purge( next_date => sysdate, inte
rval => '/* 5:Mins*/ sysdate + 5/(60*24)', delay_seconds => 0, rollbac
k_segment => ''); end; / 

   rem 在 节 点 B 上 以 system 用 户 登 录 建 立 SCOTT 用 户 connect
 system/[email protected]; create user scott identified by tiger default
 tablespace data temporary tablespace temp; 

   rem 对 SCOTT 用 户 授 权 
   grant alter session to SCOTT; 
   grant create cluster to SCOTT; 
   grant create database link to SCOTT; 
   grant create sequence to SCOTT; 
   grant create session to SCOTT; 
   grant create synonym to SCOTT; 
   grant create table to SCOTT; 
   grant create view to SCOTT; 
   grant create procedure to SCOTT; 
   grant create trigger to SCOTT; 
   grant unlimited tablespace to SCOTT; 
   grant create type to SCOTT; 
   grant create any snapshot to SCOTT; 
   grant alter any snapshot to SCOTT; 
   commit; 
   ---------------cut---------------
   rem 第 三 步: 在 节 点 A (THE MASTER DEFINITION SITE) 执 行 这 段
 SCRIPT!!! rem 在 节 点 A 上 以 复 制 的 管 理 员 用 户 REPADMIN 登 录
 connect repadmin/[email protected]

   rem 建 立 对 称 复 制 组 'SCOTT'… 
   begin dbms_repcat.create_master_repgroup(gname => 'SCOTT', qualif
ier => '', group_comment => ''); end; /

   rem 把 DEPT 表 加 入 到 对 称 复 制 组 'SCOTT' 中 begin dbms_repc
at.create_master_repobject( gname => '"SCOTT"', type => 'TABLE', oname
 => '"DEPT"', sname => '"SCOTT"', use_existing_object => TRUE, copy_ro
ws => TRUE); end; / rem 把 EMP 表 加 入 到 对 称 复 制 组 'SCOTT' 中 b
egin dbms_repcat.create_master_repobject( gname => '"SCOTT"', type => 
'TABLE', oname => '"EMP"', sname => '"SCOTT"', use_existing_object => 
TRUE, copy_rows => TRUE); end; / 

   rem 把 主 数 据 库 'B.WORLD' 加 入 到 对 称 复 制 组 'SCOTT' 中 b
egin dbms_repcat.add_master_database( gname => '"SCOTT"', master => 'B
.WORLD', use_existing_objects => TRUE, copy_rows => TRUE, propagation_
mode => 'ASYNCHRONOUS'); end; / 

   rem 生 成 复 制 支 持 的 表 DEPTbegin dbms_repcat.generate_replic
ation_support( sname => '"SCOTT"', oname => '"DEPT"', type => 'TABLE',
 min_communication => TRUE); end; / 

   rem 生 成 复 制 支 持 的 表 EMPbegin dbms_repcat.generate_replica
tion_support( sname => '"SCOTT"', oname => '"EMP"', type => 'TABLE', m
in_communication => TRUE); end; /

   rem 启 动 对 称 复 制 组 'SCOTT', 使 复 制 的 QUIESCED 方 式 改 
变 为 NORMAL 方 式 begin dbms_repcat.resume_master_activity( gname => 
'"SCOTT"'); end; / commit; 
---------------end---------------
   运 行 完 上 面 的 Scripts, 这 时 在 A,B 节 点 上 do_deferred_rep
cat_admin 任 务 应 该 被 处 理。 可 以 看 看 视 图 sys.dba_repcatlog。
 连 接 A,B 节 点 上 的 REPADMIN 用 户, 运 行 下 面 的 SQL:
   SQL> select count(*) from sys.dba_repcatlog; 如 果 A,B 节 点 上 查
 寻 到 的 结 果 都 是 零 个 记 录, 则 表 明 上 面 的 Scripts 都 被 成
 功 的 执 行, 复 制 数 据 的 环 境 已 经 具 备。 再 连 接 A,B 节 点 上
 的 REPADMIN 用 户, 运 行 下 面 的 SQL:
   SQL> select gname, status from sys.dba_repcat; 一 旦 状 态 是 'NO
RMAL', 那 么 表 明 你 可 以 进 行 DML 操 作, 例 如: A,B 节 点 的 任
 何 一 方 的 DEPT,EMP 表 上 对 记 录 INSERT, UPDATE, DELETE, 其 另 一
 方 会 看 到 对 应 的 变 化。

--
/*********************************************
低调,唯美,内省,黑色,简约,折衷,颓废,梦呓, 
糜烂,迷乱,阴郁,婉约,低吟,根源,氛围,元素, 
极端,低迷,扭曲,爆裂,失落,充斥,具象,聆听, 
压抑,气息,炼狱,冰冷,理念,郁闷,神伤,实验, 
回归,迷幻,迷离,内敛,艰涩,严肃,模糊,前卫。 

※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 202.103.85.54]

[关闭][返回]