oracle 高级复制同步表数据(五)

2014-11-24 09:18:53 · 作者: · 浏览: 12
相关的数据操作进行测试
开始测试:
用wcms登陆机器A数据库
插入表test中数据
SQL> insert into test values(4,'aaaaaaaa');
察看结果
SQL> select * from test;
ID NAME
---------- --------------------
4 aaaaaaaa
用wcms登陆机器B数据库
察看表test中数据,因为我以上只对表test作了数据同步工作
SQL> select * from test;
ID NAME
---------- --------------------
4 aaaaaaaa
如果没有看到同步的数据,那就多等会,再看。
由于以上只同步一张表,在现有组中再次插入同步的表,
以wcms 登陆数据库,在机器A中创建表
SQL> create table aa(id number,name varchar2(20),constraint aa_id_pk primary key(id));
接着插入数据
SQL> insert into aa values(1,'abc');
以repadmin登陆数据库

接下来添加新表然后执行同步操作
SQL> execute dbms_repcat.suspend_master_activity('rep_anymusic');
取消抑制。停止主体组
SQL> execute dbms_repcat.create_master_repobject(sname=>'wcms',oname=>'aa',type=>'TABLE',use_existing_object=>true,gname=>'REP_anymusic',copy_rows=>true);
为组增加新表。
SQL>execute dbms_repcat.generate_replication_support('wcms','aa','TABLE')
增加支持。
SQL>execute dbms_repcat.resume_master_activity('REP_anymusic',true);
启动进程
用wcms帐户登陆机器B,
SQL> select * from aa;
ID NAME
---------- --------------------
1 abc
登陆机器A
创建复制数据库的时间表,作用是将俩个数据库添加到主体组的表同步,包括,添加,删除,创建 新表及表中数据。以上作用说明我是个人认为。如果你清楚以下push任务具体作用,请告诉我。
添加PUSH任务
SQL> begin
2 dbms_defer_sys.schedule_push(
3 destination=>'SALSE.ANYMUSIC.COM',
4 interval=>'sysdate + 10/1440', 一天每10分钟运行一次
5 next_date=>sysdate, 下一次运行时间为当前时间
6 delay_seconds=>50, 延迟秒数50
7 parallelism=>1);
8 end;
9 /
如果出现以下类似错误,那就注意仔细看看语法是否正确,我出现这个错误是,第3行,第4行 没有加单引号出的错。哈哈
ERROR at line 3:
ORA-06550: line 3, column 16:
PLS-00201: identifier 'SALSE.ANYMUSIC' must be declared
ORA-06550: line 2, column 1:
PL/SQL: Statement ignored
ERROR at line 1:
ORA-23319: parameter value "07-JAN-09" is not appropriate
ORA-06512: at "SYS.DBMS_DEFER_SYS", line 2346
ORA-01403: no data found
ORA-06512: at line 2
添加PURGE任务
SQL> begin
2 dbms_defer_sys.schedule_purge (
3 next_date => sysdate,
4 interval => 'sysdate + 10/1440',
5 delay_seconds => 0);
### 6 rollback_segment =>0);
7 end;
8 /
SQL> select job,what from user_jobs;
JOB WHAT
21 dbms_repcat.do_deferred_repcat_admin('"REP_ANYMUSIC"', FALSE);
41 declare rc binary_integer; begin rc := sys.dbms_defer_sys.push(destination=>'SALSE.ANYMUSIC.COM'); end;
42 declare rc binary_integer; begin rc := sys.dbms_defer_sys.purge( delay_seconds=>0, rollback_segment=>'0'); end;
登陆机器B:
用repadmin登陆数据库,同样添加以下代码
SQL> begin
2 dbms_defer_sys.schedule_push(
3 destination=>'master.anymusic.com',
4 interval=>'sysdate + 10/1440',
5 next_date=>sysdate,
6 delay_seconds=>50, 延迟秒数50
7 parallelism=>1);
8 end;
9 /
SQL> begin
2 dbms_defer_sys.schedule_purge (
3 next_date => sysdate,
4 interval => 'sysdate + 10/1440',
5 delay_seconds => 0);
### 6 rollback_segment =>0);
7 end;
8 /
SQL> select job,what from user_jobs;
JOB WHAT
--------------------------------------------------------------------------------
21 dbms_repcat.do_deferred_repcat_admin('"REP_ANYMUSIC"', FALSE);
41 declare rc binary_integer; begin rc := sys.dbms_defer_sys.push(destination=>'MASTER.ANYMUSIC.COM'); end;
42 declare rc binary_integer; begin rc := sys.dbms_defer_sys.purge( delay_seconds=>0, rollback_segment=>'0'); end;

OK!!!!至此完成同步复制操作,以下是一些实用命令,呵呵呵。。如果以上有哪里不对,请给于指明。。。。。。。
#######################################
用select * from dba_repgroup;检查站点状态 状态为NORMAL时表示该站点正常。
相关视图
" DBA