Oracle FAQ | Your Portal to the Oracle Knowledge Grid |
Home -> Community -> Usenet -> c.d.o.server -> How to stop replication absolutely
Hello,
I need to modify the record in one oracle. And this db is running
replication with another.
Then, I do the general routine of stop replication like follows.
1. Stop the PUSH job to both side 2. Execute DBMS_REPUTIL.REPLICATION_OFF at local side 3. Truncate table system.def$_aqcall and system.def\\$_aqerror;
And, the replication was stopped. Then I add some records into the table locally, and the mate side don't change.
The issue is , when I resume the replication
1. Start PUSH job to the both side
2. Execute DBMS_REPUTIL.REPLICATION_ON at local side
The recent inserted record are replicated to the mate again! It's not my expectation.
Only if I redo the STOP replication again before resume the replication, the recent change in local side will no replicated to the mate side.
Could someone tell me what''s wrong or how to improve it ?
P.S.
It's ORACLE 10g, linux x86 version.
The related shell code of stop replication.
......
disable_push_job ${MY_DBName};
if [ ${MATE_DBName}"x" != "x" ]; then
disable_push_job ${MATE_DBName}; fi
rc=`$ORACLE_HOME/bin/sqlplus -s repadmin/repadmin << EOF
set pages 0
set feedback off;
set heading off;
set echo off;
whenever sqlerror exit failure
begin
DBMS_REPUTIL.REPLICATION_OFF;
end;
/
TRUNCATE TABLE system.def\\$_aqcall;
TRUNCATE TABLE system.def\\$_aqerror;
exit;
EOF`;
if [[ $? -ne 0 ]]; then
error "FAILED - to turned off Replication on $v_my_db: on `date`";
error "rc = $rc" ; return 1