高级复制遇到ORA-23419,数据不能同步

[复制链接]
查看11 | 回复5 | 2007-9-26 18:42:10 | 显示全部楼层 |阅读模式
crte table testtable2 as select * from testtable;

alter table testtable2 add (constraint pk_userid primary key (DEPTNO));

我按照advanced.replication.resrch.by.kamus.pdf建了一个高级复制环境,但是遭遇到ORA-23419,数据没有同步复制,我设定的push周期是5分钟一次,还请大家帮忙看看
我的主体定义站点信息如下:
SQL> select gname, dblink, masterdef MASTERDEF, master MASTER from sys.dba_repsites where gname='REP_GROUP_HOUR';

GNAME
Destination
MASTERDEFMASTER
---------------- ------------------------- ---------- ----------
REP_GROUP_HOUR TEST.TEST.COM@HOURY
Y
REP_GROUP_HOUR LOG.TEST.COM@HOUR N
Y

SQL> select gname, master, status from dba_repgroup where gname='REP_GROUP_HOUR';

GNAME
MASTER STATUS
---------------- ---------- ---------
REP_GROUP_HOUR Y
NORMAL

SQL> select sname,oname,status,gname from dba_repobject where gname='REP_GROUP_HOUR';

SNAME
ONAME
STATUS GNAME
---------------- ------------------------- ---------- --------------------
USERTEST TESTTABLE
VALIDREP_GROUP_HOUR
USERTEST TESTTABLE$RP
VALIDREP_GROUP_HOUR
USERTEST TESTTABLE$RP
VALIDREP_GROUP_HOUR
SQL> select ID,GNAME,MESSAGE from dba_repcatlog where gname='REP_GROUP_HOUR';

ID GNAME
---------- ------------------------------
MESSAGE
--------------------------------------------------------------------------------
19 REP_GROUP_HOUR
ORA-23419: regenerate replication support before resuming master activity

SQL> select job,this_date,next_date,broken,what from user_jobs;

Job ID THIS_DATE NEXT_DATE Broken?
------- --------- --------- -------
WHAT
--------------------------------------------------------------------------------
68 10-AUG-06 10-AUG-06 N
declare rc binary_integer; begin rc := sys.dbms_defer_sys.push(destination=>'L
OG.TEST.COM@HOUR', delay_seconds=>50, parallelism=>1); end;

69 10-AUG-06 N
declare rc binary_integer; begin rc := sys.dbms_defer_sys.purge( delay_seconds=>
0); end;

67 10-AUG-06 N

Job ID THIS_DATE NEXT_DATE Broken?
------- --------- --------- -------
WHAT
--------------------------------------------------------------------------------
dbms_repcat.do_deferred_repcat_admin('"REP_GROUP_HOUR"', FALSE);

我的主体站点信息如下:
SQL> select gname, dblink, masterdef MASTERDEF, master MASTER from sys.dba_repsites where gname='REP_GROUP_HOUR';


GNAME
Destination
MASTERDEFMASTER
---------------- ---------------------------------------- ---------- ----------
REP_GROUP_HOUR LOG.TEST.COM@HOUR
N
Y
REP_GROUP_HOUR TEST.TEST.COM@HOUR
Y
Y

SQL> SQL>select gname, master, status from dba_repgroup where gname='REP_GROUP_HOUR';

GNAME
MASTER STATUS
---------------- ---------- ---------
REP_GROUP_HOUR Y
NORMAL

SQL>
SQL>
column gname format a20
column status format a10
column oname format a25
column sname format a16SQL> SQL> SQL> SQL>
SQL> select sname,oname,status,gname from dba_repobject where gname='REP_GROUP_HOUR';

SNAME
ONAME
STATUS GNAME
---------------- ------------------------- ---------- --------------------
USERTEST TESTTABLE
VALIDREP_GROUP_HOUR
USERTEST TESTTABLE$RP
VALIDREP_GROUP_HOUR
USERTEST TESTTABLE$RP
VALIDREP_GROUP_HOUR

SQL>select ID,GNAME,MESSAGE from dba_repcatlog where gname='REP_GROUP_HOUR';

no rows selected
SQL> select job,this_date,next_date,broken,what from user_jobs;


Job ID THIS_DATE NEXT_DATE Broken?
------- --------- --------- -------
WHAT
--------------------------------------------------------------------------------
5 10-AUG-06 N
declare rc binary_integer; begin rc := sys.dbms_defer_sys.push(destination=>'T
EST.TEST.COM@HOUR', delay_seconds=>50, parallelism=>1); end;

6 10-AUG-06 N
declare rc binary_integer; begin rc := sys.dbms_defer_sys.purge( delay_seconds=>
0); end;

4 10-AUG-06 N

Job ID THIS_DATE NEXT_DATE Broken?
------- --------- --------- -------
WHAT
--------------------------------------------------------------------------------
dbms_repcat.do_deferred_repcat_admin('"REP_GROUP_HOUR"', FALSE);SQL>
回复

使用道具 举报

千问 | 2007-9-26 18:42:10 | 显示全部楼层
SQL> SELECT ONAME,TYPE,STATUS,GENERATION_STATUS FROM ALL_REPOBJECT;

ONAME
TYPE
STATUS GENERATIO
------------------------- ---------------- ---------- ---------
TESTTABLE
TABLE
VALIDGENERATED
TESTTABLE$RP
PACKAGE
VALID
TESTTABLE$RP
PACKAGE BODY VALID
回复

使用道具 举报

千问 | 2007-9-26 18:42:10 | 显示全部楼层
ORA-23419:
regenerate replication support before resuming master activity
Cause:
There are tables in the object group that require regeneration of replication support.
Action:
Check the generation_status column in the all_repobjects view. Regenerate replication support for any table in the object group with a 'NEEDSGEN' status. Resume master activity.
google说重建复制支持就行了,但是我都重建好几次了,都不行
回复

使用道具 举报

千问 | 2007-9-26 18:42:10 | 显示全部楼层
不行的话把object移出去,再加进来,再generate support。
做的过程中监控 dba_repcatlog 和 dba_repobject,其他的表没啥用。
回复

使用道具 举报

千问 | 2007-9-26 18:42:10 | 显示全部楼层
我建了个新表,重做了一遍,还是不行,ALL_REPOBJECT的GENERATION_STATUS还是GENERATED,过程如下:
SQL> execute dbms_repcat.suspend_master_activity (gname => 'rep_group_hour');

PL/SQL procedure successfully completed.

SQL>select gname, master, status from dba_repgroup;

GNAME
M STATUS
------------------------------ - ---------
REP_GP_DAY
Y QUIESCED
REP_GP_HOUR
Y NORMAL
REP_GROUP_HOUR
Y QUIESCING

SQL> execute dbms_repcat.crte_master_repobject(sname=>'usertest',oname=>'testtable2',type=>'table',use_existing_object=>true,gname=>'rep_group_hour',copy_rows => false);

PL/SQL procedure successfully completed.

SQL>SELECT ONAME,TYPE,STATUS,GENERATION_STATUS FROM ALL_REPOBJECT;

ONAME
TYPE
STATUS GENERATIO
------------------------------ ---------------- ---------- ---------
TESTTABLE
TABLE
VALIDGENERATED
TESTTABLE$RP
PACKAGE
VALID
TESTTABLE$RP
PACKAGE BODY VALID
TESTTABLE2
TABLE
VALIDNEEDSGEN

SQL>select ID,GNAME,MESSAGE from dba_repcatlog where gname='REP_GROUP_HOUR';

ID GNAME
---------- ------------------------------
MESSAGE
--------------------------------------------------------------------------------
28 REP_GROUP_HOUR


19 REP_GROUP_HOUR
ORA-23419: regenerate replication support before resuming master activity


SQL> execute dbms_repcat.generate_replication_support('usertest','testtable2','table');

PL/SQL procedure successfully completed.

SQL> SELECT ONAME,TYPE,STATUS,GENERATION_STATUS FROM ALL_REPOBJECT;

ONAME
TYPE
STATUS GENERATIO
------------------------------ ---------------- ---------- ---------
TESTTABLE
TABLE
VALIDGENERATED
TESTTABLE$RP
PACKAGE
VALID
TESTTABLE$RP
PACKAGE BODY VALID
TESTTABLE2
TABLE
VALIDDOINGGEN
TESTTABLE2$RP
PACKAGE
VALID
TESTTABLE2$RP
PACKAGE BODY VALID

6 rows selected.

SQL> select ID,GNAME,MESSAGE from dba_repcatlog where gname='REP_GROUP_HOUR';

ID GNAME
---------- ------------------------------
MESSAGE
--------------------------------------------------------------------------------
29 REP_GROUP_HOUR


19 REP_GROUP_HOUR
ORA-23419: regenerate replication support before resuming master activity

30 REP_GROUP_HOUR



SQL> select gname, master, status from dba_repgroup;

GNAME
M STATUS
------------------------------ - ---------
REP_GP_DAY
Y QUIESCED
REP_GP_HOUR
Y NORMAL
REP_GROUP_HOUR
Y QUIESCED

SQL> execute dbms_repcat.resume_master_activity('rep_group_hour',false);

PL/SQL procedure successfully completed.

SQL> select gname, master, status from dba_repgroup;

GNAME
M STATUS
------------------------------ - ---------
REP_GP_DAY
Y QUIESCED
REP_GP_HOUR
Y NORMAL
REP_GROUP_HOUR
Y NORMAL

SQL> SELECT ONAME,TYPE,STATUS,GENERATION_STATUS FROM ALL_REPOBJECT;

ONAME
TYPE
STATUS GENERATIO
------------------------------ ---------------- ---------- ---------
TESTTABLE
TABLE
VALIDGENERATED
TESTTABLE$RP
PACKAGE
VALID
TESTTABLE$RP
PACKAGE BODY VALID
TESTTABLE2
TABLE
VALIDGENERATED
TESTTABLE2$RP
PACKAGE
VALID
TESTTABLE2$RP
PACKAGE BODY VALID

6 rows selected.

SQL> select ID,GNAME,MESSAGE from dba_repcatlog where gname='REP_GROUP_HOUR';

ID GNAME
---------- ------------------------------
MESSAGE
--------------------------------------------------------------------------------
19 REP_GROUP_HOUR
ORA-23419: regenerate replication support before resuming master activity


SQL> select job,this_date,next_date,broken,what from user_jobs;

JOB THIS_DATE NEXT_DATE B
---------- --------- --------- -
WHAT
--------------------------------------------------------------------------------
68 11-AUG-06 11-AUG-06 N
declare rc binary_integer; begin rc := sys.dbms_defer_sys.push(destination=>'L
OG.TEST.COM@HOUR', delay_seconds=>50, parallelism=>1); end;

69 11-AUG-06 N
declare rc binary_integer; begin rc := sys.dbms_defer_sys.purge( delay_seconds=>
0); end;

67 11-AUG-06 N

JOB THIS_DATE NEXT_DATE B
---------- --------- --------- -
WHAT
--------------------------------------------------------------------------------
dbms_repcat.do_deferred_repcat_admin('"REP_GROUP_HOUR"', FALSE);
回复

使用道具 举报

千问 | 2007-9-26 18:42:10 | 显示全部楼层
我没有用public dblink,只用了repadmin private dblink 的分组管理,和这个由关系吗?

SQL> CONNECT repadmin/repadmin
Connected.
SQL> select owner, db_link from dba_db_links;

OWNER
------------------------------
DB_LINK
--------------------------------------------------------------------------------
TTT
TTT.COM

REPADMIN
LOG.TEST.COM@HOUR
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行