Situations will arise when you need to perform DML on a replicated table without propagating the changes to other master sites. For example, if you have resolved a conflict and wish to update a row manually, you would not want to propagate your change. Or you might have a trigger on a replicated table that you want to fire only for updates that originate locally. The DBMS_REPUTIL package allows you to control whether updates propagate for the current session.
The DBMS_REPUTIL package is created when the Oracle database is installed. The dbmsgen.sql script (found in the built-in packages source directory, as described in Chapter 1) contains the source code for this package's specification. This script is called by catrep.sql , which must be run to install the advanced replication packages. The script creates the public synonym DBMS_REPUTIL for the package and grants EXECUTE privilege on the package to public. All Oracle users can reference and make use of this package.
Table 15.7 lists the programs available in this package.
Name |
Description |
Use in SQL? |
---|---|---|
REPLICATION_OFF |
Turns replication off for the current session |
No |
REPLICATION_ON |
Turns replication on for the current session |
No |
This section describes the programs available in the DBMS_REPUTIL package.
The REPLICATION_OFF procedure works by setting a package variable off. The replication triggers can subsequently query this variable. This procedure is as simple as it can be: no parameters and no exceptions.
PROCEDURE DBMS_REPUTIL.REPLICATION_OFF;
The REPLICATION_ON procedure reverses the effect of the REPLICATION_OFF procedure. It sets the package variable on. The specification follows:
PROCEDURE DBMS_REPUTIL.REPLICATION_ON;
Copyright (c) 2000 O'Reilly & Associates. All rights reserved.