Advanced Replication FAQ
From Oracle FAQ
Oracle Advanced Replication FAQ:
Contents |
What questions should one ask before implementing Advanced Replication?
Users tend to think that Advanced Replication can be implemented on any application without having to make application changes. However, not all applications can operate with advanced replication enabled. The list of questions below will help you to establish if advanced replication can be implemented on your application:
- Was the application ever tested with replication enabled? If so, please provide detailed documentation/ installation procedures.
- Does all the tables have primary keys defined? If not, will you be able to identify the surrogate primary keys.
- Does the application generate unique sequences across both sites. If not, this will cause data conflicts.
- At what frequency should the data be replicated.
- Give an indication of the data change rate (network overhead between the sites).
- What database schemas and/or tables should be replicated?
- What will happen if transactions can not be replicated? For example: if the network goes down.
- How will replication conflicts be handled? Will you be able to assist us by writing conflict handlers?
Can one turn off replication for the current session?
One can switch off replication for a session. This is handy when one needs to fix replication problems.
Syntax:
SQL> exec DBMS_REPUTIL.REPLICATION_OFF; ... do bulk insert/update/delete ... SQL> exec DBMS_REPUTIL.REPLICATION_ON;
Look at this example:
SQL> exec DBMS_REPUTIL.REPLICATION_OFF; SQL> insert into tabX select * from tabX@remote MINUS select * from tabX; SQL> commit; SQL> exec DBMS_REPUTIL.REPLICATION_ON;
How does one replicate a TRUNCATE TABLE statement?
TRUNCATE is a DDL statement, and should thus not be issued directly against tables belonging to a replication group. Instead, use the supplied DBMS_REPCAT.EXECUTE_DDL procedure. Here is an example:
BEGIN dbms_repcat.execute_ddl( gname => 'group1', -- Query dba_repobject for the gname master_list => NULL, -- NULL = all masters ddl_text => 'TRUNCATE TABLE scott.emp'); END; /
You don't need to quiesce the replication group before runing the above operation.
How does one fix ORA-25207 errors?
Problem:
ORA-25207: enqueue failed, queue SYSTEM.DEF$_AQCALL is disabled from enqueueing
Solution:
CONNECT / AS SYSDBA
EXEC DBMS_AQADM.START_QUEUE('SYSTEM.DEF$_AQERROR', TRUE, TRUE);
EXEC DBMS_AQADM.START_QUEUE('SYSTEM.DEF$_AQCALL', TRUE, TRUE);

