Oracle DBMS_DRS
Version 21c

General Information
Library Note Morgan's Library Page Header
ACE Director Alum Daniel Morgan, founder of Morgan's Library, is scheduling complimentary technical Workshops on Database Security for the first 30 Oracle Database customers located anywhere in North America, EMEA, LATAM, or APAC that send an email to asra_us@oracle.com. Request a Workshop for your organization today.
Purpose This package contains procedures used in the DR Server (Hot Standby). There are two forms of each major function; one is a blocking procedure, which does not return until the command is completed. The other is a non-blocking function which returns with a request identifier which may be used to return the result of the command.
AUTHID DEFINER
Constants
Name Data Type Value
 Pre-Defined Wait Events
WAIT_START_DMON PLS_INTEGER 1
WAIT_STOP_DMON PLS_INTEGER 2
WAIT_BOOT PLS_INTEGER 3
WAIT_BOOT_ENABLED PLS_INTEGER 4
WAIT_PREDEFINED_MAX PLS_INTEGER 4
 Flag Based Wait Events
WAIT_RFMP_FLAGS PLS_INTEGER 100
WAIT_BROKER_STATE_FLAGS PLS_INTEGER 101
 Wait For Flags To Be Set Or Cleared
WAIT_FLAGS_CLR PLS_INTEGER 0
WAIT_FLAGS_SET PLS_INTEGER 1
 Status Values Returned By DBMS_DRS.WAIT
RFC_DRSF_STATUS_TOUT NUMBER 16509
RFC_DRSF_STATUS_NODRC NUMBER 16532
RFC_DRSF_STATUS_BADARG NUMBER 16540
RFC_DRSF_STATUS_ILLPRMYOP NUMBER 16585
RFC_DRSF_STATUS_NOTMEMBER NUMBER 16596
Dependencies
DBMS_GSM_FIXED    
Documented No
Exceptions
Error Code Reason
ORA-16508 bad_request
First Available 9.0
Security Model Owned by SYS with EXECUTE granted to SYSDG, SYSRAC and the OEM_MONITOR role
Source $ORACLE_HOME/rdbms/admin/dbmsdrs.sql
Subprograms
 
ADD_CONFIGURATION (new 21c)
Adds a remote configuration to the metadata dbms_drs.add_configuration(
ci        IN VARCHAR2,
name      IN VARCHAR2,
dest_type IN VARCHAR2)
RETURN BINARY_INTEGER;
TBD
 
ADD_DATABASE
Add a standby database to a Broker configuration. database_ci is the connection identifier dbms_drs.add_database(
database_name IN VARCHAR2,
database_ci   IN VARCHAR2)
RETURN BINARY_INTEGER;
TBD
 
ADD_FAR_SYNC
Add a far sync instance to a Broker configuration. far_sync_ci is the connection identifier dbms_drs.add_far_sync(
far_sync_name IN VARCHAR2,
far_sync_ci   IN VARCHAR2)
RETURN BINARY_INTEGER;
TBD
 
ADD_RECOVERY_APPLIANCE (new 21c)
Adds a recovery appliance to a Broker configuration dbms_drs.add_recovery_appliance(
ra_name IN VARCHAR2,
ra_ci   IN VARCHAR2 DEFAULT NULL)
RETURN BINARY_INTEGER;
TBD
 
CANCEL_REQUEST
Cancel Request (blocking) dbms_drs.cancel_request(rid IN INTEGER);
See Demos At Page Bottom
 
CHECK_CONNECT
Check network connectivity to the specified member dbms_drs.check_connect(
member_name   IN VARCHAR2,
instance_name IN VARCHAR2);
exec dbms_drs.check_connect('ORABASE_DR', 'ORABASE1');
 
CONTROL_CONFIGURATION (new 21c)
Forwards an operation to one or all `configurations dbms_drs.control_configuration(
op_code        IN VARCHAR2,
config_name    IN VARCHAR2,
all_config     IN BOOLEAN DEFAULT FALSE,
property_name  IN VARCHAR2,
property_value IN VARCHAR2)
RETURN BINARY_INTEGER;
TBD
 
CONVERT_TO_PHYSICAL (new 21c)
Converts a snapshot standby database to a physical standby database dbms_drs.convert_to_physical(db_name IN VARCHAR2) RETURN BINARY_INTEGER;
SELECT dbms_drs.convert_to_physical('TEST21DB')
FROM dual;
 
CONVERT_TO_SNAPSHOT (new 21c)
Converts a physical standby database to a snapshot standby database dbms_drs.convert_to_snapshot(db_name IN VARCHAR2) RETURN BINARY_INTEGER;
SELECT dbms_drs.convert_to_snapshot('TEST21DB')
FROM dual;
 
CREATE_CONFIGURATION
Creates a Broker configuration. The primary database will be automatically added to the configuration by this procedure. Must be called on a primary database. dbms_drs.create_configuration(
config_name IN VARCHAR2,
primary_ci  IN VARCHAR2)
RETURN BINARY_INTEGER;
TBD
 
DELETE_REQUEST
Delete Request (blocking) dbms_drs.delete_request(rid IN INTEGER);
See Demos At Page Bottom
 
DGPDB_FAILOVER (new 21c)
Used to failover to a DGPDB dbms_drs.dgpdb_failover(
pdb_name IN VARCHAR2,
cdb_name IN VARCHAR2)
RETURN BINARY_INTEGER;
SELECT dbms_drs.dgpdb_failover('PDBPROD', 'TEST21DB')
FROM dual;
 
DGPDB_REMOVE (new 21c)
Used to remove a DGPDB dbms_drs.dgpdb_remove(
pdb_name  IN VARCHAR2,
cdb_name  IN VARCHAR2,
rm_option IN BINARY_INTEGER DEFAULT 0 )
RETURN BINARY_INTEGER;
SELECT dbms_drs.dgpdb_failover('PDBPROD', 'TEST21DB', 1)
FROM dual;
 
DGPDB_SWITCHOVER (new 21c)
Used to switchover to a DGPDB dbms_drs.dgpdb_switchover(
pdb_name IN VARCHAR2,
cdb_name IN VARCHAR2 )
RETURN BINARY_INTEGER;
SELECT dbms_drs.dgpdb_switchover('PDBPROD', 'TEST21DB')
FROM dual;
 
DG_BROKER_INFO
Returns Data Guard Broker Information dbms_drs.dg_broker_info(info_name IN VARCHAR2)
RETURN VARCHAR2;
SELECT dbms_drs.dg_broker_info('DMONREADY')
FROM dual;

SELECT dbms_drs.dg_broker_info('VERSION')
FROM dual;
 
DISABLE (new 21c)
From the primary DB disables Broker management of a member within the Broker configuration dbms_drs.disable(member_name IN VARCHAR2) RETURN BINARY_INTEGER;
TBD
 
DISABLE_CONFIGURATION (new 21c)
Disables Broker management of the current configuration dbms_drs.disable_configuration RETURN BINARY_INTEGER;
SELECT dbms_drs.disable_configuration
FROM dual;
 
DISABLE_DATABASE (new 21c)
From the primary DB disables Broker management of a database within the Broker configuration dbms_drs.disable_database(database_name IN VARCHAR2) RETURN BINARY_INTEGER;
exec dbms_drs.disable_database('TEST21DB');
 
DISABLE_FAR_SYNC (new 21c)
From the primary DB disables Broker management of a far sync instance within the Broker configuration dbms_drs.disable_far_sync(far_sync_name IN VARCHAR2) RETURN BINARY_INTEGER;
TBD
 
DISABLE_FS_FAILOVER
Disables Fast Start Failover dbms_drs.disable_fs_failover(force IN BOOLEAN DEFAULT FALSE) RETURN BINARY_INTEGER;
SELECT dbms_drs.disable_fs_failover(TRUE)
FROM dual;
 
DISABLE_FS_FAILOVER2 (new 21c)
Used to disable fast-start failover dbms_drs.disable_fs_failover2(force IN BINARY_INTEGER DEFAULT 0) RETURN BINARY_INTEGER;
SELECT dbms_drs.disable_fs_failover2
FROM dual;
 
DISABLE_FS_FAILOVER_CONDITION (new 21c)
Used to disable a fast-start failover condition dbms_drs.disable_fs_failover_condition(condition IN VARCHAR2) RETURN BINARY_INTEGER;
TBD
 
DO_CONTROL
Control blocking API
Obsolete: Use DO_CONTROL_RAW

Overload 1
dbms_drs.do_control(
indoc      IN     VARCHAR2,
outdoc        OUT VARCHAR2,
request_id IN OUT INTEGER,
piece      IN     INTEGER,
context    IN     VARCHAR2 DEFAULT NULL);
See Demos At Page Bottom
Obsolete: For test use only
Overload 2
dbms_drs.do_control(indoc IN VARCHAR2) RETURN INTEGER;
See Demos At Page Bottom
 
DO_CONTROL_RAW
Control blocking API designed for solving NLS problems. Is a blocking call that sends a DG Broker control request.

Overload 1
dbms_drs.do_control_raw(
indoc      IN     RAW,
outdoc        OUT RAW,
request_id IN OUT INTEGER,
piece      IN     INTEGER,
context    IN     VARCHAR2 DEFAULT NULL,
client_id  IN     INTEGER  DEFAULT 0);
TBD
Overload 2 dbms_drs.do_control_raw(indoc IN RAW) RETURN INTEGER;
TBD
 
DO_CONTROL_RAW_NORID (new 21c)
Called by a Broker client (DGMGRL or EM) to submit a non-blocking request that's NLS compliant to the Broker dbms_drs.do_control_raw_norid(indoc IN RAW);
TBD
 
DO_OBSERVE
Observer operation API - observer's operation to control FSFO since 12.2. (replaces Ping, ReadyToFailover, and StateChangeRecorded) dbms_drs.do_observe (
indoc  IN  RAW,
outdoc OUT RAW);
TBD
 
DUMP_BROKER
Dumps critical internal data of the Broker process to a file dbms_drs.dump_broker(
dump_type IN  BINARY_INTEGER,
oStatus   OUT VARCHAR2);
DECLARE
 outVal VARCHAR2(60);
BEGIN
  dbms_drs.dump_broker('RFRDM_DO_CURRENT', outVal);
  dbms_output.put_line(outVal);
END;
/
DUMP_META
DUMP data guard Broker metadata file content into a readable text file dbms_drs.dump_meta(
options  IN INTEGER,
metafile IN VARCHAR2,
dumpfile IN VARCHAR2);
DECLARE
 outVal VARCHAR2(120);
BEGIN
  dbms_drs.dump_meta(1, NULL, '/home/oracle/dump_meta.log');
END;
/
 
DUMP_OBSERVER
Dumps critical internal data of client-side observer process to a file dbms_drs.dump_observer(
all_ob  IN  BOOLEAN,
ob_name IN  VARCHAR2,
oStatus OUT VARCHAR2);
DECLARE
 outVal VARCHAR2(60);
BEGIN
  dbms_drs.dump_observer(TRUE, 'ORABASE_OBS1', outVal);
  dbms_output.put_line(outVal);
END;
/
 
ENABLE (new 21c)
Used, from the primary db, to enable Broker management of a member within the Broker configuration dbms_drs.enable(member_name IN VARCHAR2) RETURN BINARY_INTEGER;
TBD
 
ENABLE_CONFIGURATION
Enables Broker management of a Data Guard configuration. It must be called on the primary database. Return 0 means enable was successful, otherwise returns an error number. dbms_drs.enable_configuration RETURN BINARY_INTEGER;
SELECT dbms_drs.enable_configuration
FROM dual;
 
ENABLE_DATABASE
Used to enable Broker management of a database within the Broker configuration. It must be called on the primary database. dbms_drs.enable_database(database_name in VARCHAR2)
RETURN BINARY_INTEGER;
SELECT dbms_drs.enable_database('ORABASE')
FROM dual;
 
ENABLE_FAR_SYNC
Enable Broker management of a far sync instance within the Broker configuration. It must be called on the primary database. dbms_drs.enable_far_sync(far_sync_name in VARCHAR2)
RETURN BINARY_INTEGER;
SELECT dbms_drs.enable_database('ORABASE_FS')
FROM dual;
 
ENABLE_FS_FAILOVER
Used to enable fast-start failover dbms_drs.enable_fs_failover RETURN BINARY_INTEGER;
SELECT dbms_drs.enable_fs_failover
FROM dual;
 
ENABLE_FS_FAILOVER_CONDITION (new 21c)
Enables a fast-start failover condition dbms_drs.enable_fs_failover_condition(condition IN VARCHAR2) RETURN BINARY_INTEGER;
TBD
 
FAILOVER (new 21c)
Performs a database failover operation dbms_drs.failover(
db_name       IN VARCHAR2,
failover_type IN VARCHAR2 DEFAULT NULL) -- COMPLETE or IMMEDIATE
RETURN BINARY_INTEGER;
SELECT dbms_drs.failover('TEST21DB', 'COMPLETE')
FROM dual;
 
FS_FAILOVER_FOR_HC_COND
Undocumented
Overload 1
dbms_drs.fs_failover_for_hc_cond(
hc_cond IN  BINARY_INTEGER,
status  OUT BINARY_INTEGER);
TBD
Overload 2 dbms_drs.fs_failover_for_hc_cond(hc_cond IN BINARY_INTEGER)
RETURN BOOLEAN;
TBD
 
GET_CONFIGURATION_PROPERTY (new 21c)
Called by a Broker client to fetch a configuration-level property dbms_drs.get_configuration_property(
property_name IN  VARCHAR2,
value         OUT VARCHAR2)
RETURN BINARY_INTEGER;
TBD
 
GET_PROPERTY
Get a named property. This function is equivalent to using getid to return the object id, followed by a <do_monitor><property> request. dbms_drs.get_property(
site_name     IN VARCHAR2,
resource_name IN VARCHAR2,
property_name IN VARCHAR2)
RETURN VARCHAR2;
TBD
 
GET_PROPERTY2 (new 21c)
Called by a Broker client to fetch a property value by specifying a member name dbms_drs.get_property2(
member_name   IN  VARCHAR2,
property_name IN  VARCHAR2,
value         OUT VARCHAR2)
RETURN BINARY_INTEGER;
TBD
 
GET_PROPERTY_OBJ
Get a named property. Equivalent to a <DO_MONITOR><PROPERTY> request and parsing the resulting string. dbms_drs.get_property_obj(
object_id     IN INTEGER,
property_name IN VARCHAR2)
RETURN VARCHAR2;
TBD
 
GET_RESPONSE
Get Result (non-blocking) - OBSOLETE, for test use only dbms_drs.get_response(
rid   IN INTEGER,
piece IN INTEGER)
RETURN VARCHAR2;
See Demos At Page Bottom
 
GET_RESPONSE_RAW
Returns the result of a non-blocking command. If the command hasn't finished or the piece is beyond the end of the document returns NULL. dbms_drs.get_response_raw(
rid   IN INTEGER,
piece IN INTEGER)
RETURN RAW;
TBD
 
HEALTH_CHECK (new 21c)
Performs a Broker health check dbms_drs.health_check RETURN BINARY_INTEGER;
SELECT dbms_drs.health_check
FROM dual;

HEALTH_CHECK
------------
       16525
 
INITIATE_FS_FAILOVER
Initiate Fast Start Failover dbms_drs.initiate_fs_failover(
condstr IN  VARCHAR2,
status  OUT BINARY_INTEGER);
TBD
 
METADATA_FILE
This function is used to export/import metadata to/from a file dbms_drs.metadata_file(
type      IN BINARY_INTEGER, -- RFRDM_DO_EXPORT_META or RFRDM_DO_IMPORT_META
file_name IN VARCHAR2)
RETURN BINARY_INTEGER;
DECLARE
 retVal BINARY_INTEGER;
BEGIN
  retVal := dbms_drs.metadata_file('RFRDM_DO_EXPORT_META', 'uw_metadata_file.dmp');
  dbms_output.put_line(TO_CHAR(retVal));
END;
/
 
PING
The old ping procedure that was used in 12.1.0.1 and prior to 11.2.0.4

Overload 1
dbms_drs.ping(
iObid    IN  BINARY_INTEGER,
iVersion IN  BINARY_INTEGER,
iFlags   IN  BINARY_INTEGER,
iMiv     IN  BINARY_INTEGER,
oVersion OUT BINARY_INTEGER,
oFlags   OUT BINARY_INTEGER,
oFoCond  OUT VARCHAR2,
oStatus  OUT BINARY_INTEGER);
TBD
Ping procedure since 12.1.0.2 (and 11.2.0.4) and now obsolete as of 12.2

Overload 2k
dbms_drs.ping(
iObid     IN  BINARY_INTEGER,
iVersion  IN  BINARY_INTEGER,
iFlags    IN  BINARY_INTEGER,
iMiv      IN  BINARY_INTEGER,
iWaitStat IN  BINARY_INTEGER,
oVersion  OUT BINARY_INTEGER,
oFlags    OUT BINARY_INTEGER,
oFoCond   OUT VARCHAR2,
oStatus   OUT BINARY_INTEGER);
TBD
 
READYTOFAILOVER
Undocumented dbms_drs.ReadyToFailover(
iObid    IN  BINARY_INTEGER,
iVersion IN  BINARY_INTEGER,
iFlags   IN  BINARY_INTEGER,
iMiv     IN  BINARY_INTEGER,
iFoCond  IN  VARCHAR2,
oStatus  OUT BINARY_INTEGER);
TBD
 
REINSTATE (new 21c)
Reinstate a database in the Broker configuration dbms_drs.reinstate(db_name IN VARCHAR2) RETURN BINARY_INTEGER;
SELECT dbms_drs.reinstate('TEST21DB')
FROM dual;
 
REMOVE (new 21c)
From the primary DB removes a member from the Broker configuration dbms_drs.remove(
member_name          IN VARCHAR2,
preserve_destination IN BOOLEAN DEFAULT FALSE)
RETURN BINARY_INTEGER;
TBD
 
REMOVE2 (new 21c)
From the primary DB removes a member from the Broker configuration dbms_drs.remove2(
member_name          IN VARCHAR2,
preserve_destination IN BINARY_INTEGER DEFAULT 0)
RETURN BINARY_INTEGER;
TBD
 
REMOVE_CONFIGURATION (new 21c)
From the primary DB removes a Broker configuration dbms_drs.remove_configuration(preserve_destinations IN BOOLEAN DEFAULT FALSE)
RETURN BINARY_INTEGER;
DECLARE
 retVal BINARY_INTEGER;
BEGIN
  retVal := dbms_drs.remove_configuration(FALSE);
  dbms_output.put_line(retVal);
END;
/
 
REMOVE_CONFIGURATION (new 21c)
From the primary DB removes a Broker configuration dbms_drs.remove_configuration2(preserve_destinations IN BINARY_INTEGER DEFAULT 0)
RETURN BINARY_INTEGER;
DECLARE
 retVal BINARY_INTEGER;
BEGIN
  retVal := dbms_drs.remove_configuration(1);
  dbms_output.put_line(retVal);
END;
/
 
REMOVE_DATABASE
Removes a database from the Broker configuration. It must be called on the primary database dbms_drs.emove_database(
database_name        IN VARCHAR2,
preserve_destination IN BOOLEAN DEFAULT FALSE)
RETURN BINARY_INTEGER;
SELECT dbms_drs.remove_database('ORABASE2', TRUE)
FROM dual;
 
REMOVE_DATABASE2 (new 21c)
Removes a database from the Broker configuration. It must be called on the primary database dbms_drs.remove_database2(
database_name        IN VARCHAR2,
preserve_destination IN BINARY_INTEGER DEFAULT 0)
RETURN BINARY_INTEGER;
SELECT dbms_drs.remove_database2('TEST21DB', 0)
FROM dual;
 
REMOVE_FAR_SYNC
Removes a far sync instance from the Broker configuration. It must be called on the primary database. dbms_drs.remove_far_sync(
far_sync_name        IN VARCHAR2,
preserve_destination IN BOOLEAN DEFAULT FALSE)
RETURN BINARY_INTEGER;
SELECT dbms_drs.remove_far_sync('ORADATA_FS', FALSE)
FROM dual;
 
REMOVE_FAR_SYNC2 (new 21c)
Called from the primary DB removes a far sync instance from the Broker configuration dbms_drs.remove_far_sync2(
far_sync_name        IN VARCHAR2,
preserve_destination IN BINARY_INTEGER DEFAULT 0)
RETURN BINARY_INTEGER;
TBD
 
REMOVE_INSTANCE (new 21c)
Removes an instance from a member of the Broker configuration dbms_drs.remove_instance(
member_name   IN VARCHAR2,
instance_name IN VARCHAR2)
RETURN BINARY_INTEGER;
TBD
 
REPLACE_MEMBER_NAME_IN_PROPS
Replaces a member name with another member name in all Broker properties dbms_drs.replace_member_name_in_props(
old_member_name IN VARCHAR2,
new_member_name IN VARCHAR2)
RETURN BINARY_INTEGER;
SELECT dbms_drs.remove_far_sync('ORCL', 'ORABASE')
FROM dual;
 
RESET_CONFIGURATION_PROPERTY
Resets configuration-level property, not database or far sync instance property, to its default value dbms_drs.reset_configuration_property(property_name IN VARCHAR2)
RETURN BINARY_INTEGER;
TBD
 
RESET_DATABASE_PROPERTY
Resets a database configurable property to its default value dbms_drs.reset_database_property(
database_name IN VARCHAR2,
property_name IN VARCHAR2)
RETURN BINARY_INTEGER;
TBD
 
RESET_FAR_SYNC_PROPERTY
Resets a far sync instance configurable property to its default value dbms_drs.reset_far_sync_property(
far_sync_name IN VARCHAR2,
property_name IN VARCHAR2)
RETURN BINARY_INTEGER;
TBD
 
RESET_PROPERTY (new 21c)
Resets a member configurable property to its default value dbms_drs.reset_property(
member_name   IN VARCHAR2,
property_name IN VARCHAR2)
RETURN BINARY_INTEGER;
TBD
 
SET_CONFIGURATION_PROPERTY
Used to set configuration-level property (not a database or far sync property ). Can be used to set both integer and character string properties. dbms_drs.set_configuration_property(
property_name IN VARCHAR2,
value         IN VARCHAR2)
RETURN BINARY_INTEGER;
TBD
 
SET_CONFIGURATION_SOURCE (new 21c)
Set redo transport to a target configuration dbms_drs.set_configuration_source(
src_name    IN VARCHAR2,
target_name IN VARCHAR2,
clear       IN BOOLEAN)
RETURN BINARY_INTEGER;
TBD
 
SET_DATABASE_PROPERTY
Used to set a database configurable property. Can be used to set both integer and character string properties. dbms_drs.set_database_property(
database_name IN VARCHAR2,
property_name IN VARCHAR2,
value         IN VARCHAR2)
RETURN BINARY_INTEGER;
TBD
 
SET_DGPDB_STAT (new 21c)
Sets the state of a DGPDB dbms_drs.set_dgpdb_state(
pdb_name   IN VARCHAR2,
cdb_name   IN VARCHAR2,
state_name IN VARCHAR2)
RETURN BINARY_INTEGER;
TBD
 
SET_FAR_SYNC_PROPERTY
Used to set a far sync instance's configurable property. Can be used to set both integer and character string properties. dbms_drs.set_far_sync_property(
far_sync_name IN VARCHAR2,
property_name IN VARCHAR2,
value         IN VARCHAR2)
RETURN BINARY_INTEGER;
TBD
 
SET_PROPERTY (new 21c)
Sets a member configurable property. dbms_drs.set_property(
member_name   IN VARCHAR2,
property_name IN VARCHAR2,
value         IN VARCHAR2)
RETURN BINARY_INTEGER;
TBD
 
SET_PROTECTION_MODE
Changes the protection mode to the mode specified. To prevent including database restart logic this procedure does not support the promotion of the protection mode from maximum performance to maximum protection. dbms_drs.set_protection_mode(protection_mode IN VARCHAR2)
RETURN BINARY_INTEGER;
SELECT dbms_drs.set_protection_mode('MaxPerformance')
FROM dual;

SELECT dbms_drs.set_protection_mode('MaxAvailability')
FROM dual;

SELECT dbms_drs.set_protection_mode('MaxProtection')
FROM dual;
 
SET_STATE_APPLY_OFF (new 21c)
changes the member's state to APPLY-OFF dbms_drs.set_state_apply_off(member_name IN VARCHAR2) RETURN BINARY_INTEGER;
TBD
 
SET_STATE_APPLY_ON (new 21c)
changes the member's state to APPLY-ON dbms_drs.set_state_apply_on(
member_name    IN VARCHAR2,
apply_instance IN VARCHAR2 DEFAULT NULL)
RETURN BINARY_INTEGER;
TBD
 
SET_STATE_TRANSPORT_OFF (new 21c)
changes the member's state to TRANSPORT-OFF dbms_drs.set_state_transport_off(member_name IN VARCHAR2) RETURN BINARY_INTEGER;
TBD
 
SET_STATE_TRANSPORT_ON (new 21c)
changes the member's state to TRANSPORT-ON dbms_drs.set_state_transport_on(member_name IN VARCHAR2) RETURN BINARY_INTEGER;
TBD
 
SLEEP
Suspends the session for a given period of time. Appears identical to DBMS_LOCK.SLEEP. dbms_drs.sleep(seconds IN INTEGER);
BEGIN
  dbms_drs.sleep(10);
END;
/
 
STARTUP_FOR_RELOCATE
Called when an instance is being started by a relocate operation. The other instance will be stopped in short order. If this is a standby database, it gracefully relocates the apply services to the instance being started. If this is a standby supporting Maximum Protection mode, it deregisters the other instance as the critical instance and register this instance so the shutdown can proceed smoothly while ensuring the primary continues to be protected. dbms_drs.startup_for_relocate;
exec dbms_drs.startup_for_relocate;
 
STATECHANGERECORDED
Undocumented (obsolete as of 12.2) dbms_drs.statechangerecorded(
iObid    IN BINARY_INTEGER,
iVersion IN BINARY_INTEGER);
TBD
 
 
STOP_OBSERVER
Stops the fast-start failover observers in a DG Broker configuration dbms_drs.stop_observer(ob_name IN VARCHAR2)
RETURN BINARY_INTEGER;
SELECT dbms_drs.stop_observer('UWObserver')
FROM dual;
 
SWITCHOVER (new 21c)
Performs a database switchover operation

Overload 1
dbms_drs.switchover(
db_name   IN VARCHAR2,
wait      IN BINARY_INTEGER DEFAULT 0,
wait_time IN BINARY_INTEGER DEFAULT -1 )
RETURN BINARY_INTEGER;
SELECT dbms_drs.switchover('TEST21DB', 1, -1)
FROM dual;
Overload 2 dbms_drs.switchover(
db_name   IN  VARCHAR2,
op_table  OUT VARCHAR2,
wait      IN  BINARY_INTEGER DEFAULT 0,
wait_time IN  BINARY_INTEGER DEFAULT -1)
RETURN BINARY_INTEGER;
TBD
 
WAIT
Waits up to the number of seconds specified by the max_wait_time argument for the event specified by the event_type parameter to prevail

Overload 1
dbms_drs.wait(
event_type    IN BINARY_INTEGER,
max_wait_time IN BINARY_INTEGER)
RETURN BINARY_INTEGER;
TBD
Overload 2 dbms_drs.wait(
event_type    IN BINARY_INTEGER,
max_wait_time IN BINARY_INTEGER,
flags         IN BINARY_INTEGER,
set_or_clear  IN BINARY_INTEGER)
RETURN BINARY_INTEGER;
TBD
Overload 3 dbms_drs.wait(
event_type    IN BINARY_INTEGER,
max_wait_time IN BINARY_INTEGER);
TBD
Overload 4 dbms_drs.wait(
event_type    IN BINARY_INTEGER,
max_wait_time IN BINARY_INTEGER,
flags         IN BINARY_INTEGER,
set_or_clear  IN BINARY_INTEGER);
TBD
 
 
WAIT_SYNC
Used to wait for the specified member to be synchronized. If the keyword ANY is specified, this routine will wait for any destination to be synchronized. This function calls the rfs_wait_sync() ICD to perform the work.

Overload 1
dbms_drs.wait_sync(
member_name   IN VARCHAR2,
affirm        IN BOOLEAN,
max_wait_time IN BINARY_INTEGER)
RETURN BINARY_INTEGER;
TBD
Overload 2 dbms_drs.wait_sync(
member_name   IN VARCHAR2,
affirm        IN BOOLEAN,
max_wait_time IN BINARY_INTEGER);
TBD
Demos
Non-Blocking Demo set serveroutput on

DECLARE
 rid    INTEGER;
 indoc  VARCHAR2(4000);
 outdoc VARCHAR2(4000);
 p      INTEGER;
BEGIN
  indoc:='<dummy>foo</dummy>';
  rid := dbms_drs.do_control(indoc);
  dbms_output.put_line('Request_id = '|| rid);

  outdoc := NULL;
  p := 1;
  WHILE (outdoc is null) LOOP
    dbms_drs.sleep(0.2);

    outdoc := dbms_drs.get_response(rid, p);
  END LOOP;

  dbms_output.put_line(outdoc);

  BEGIN
    WHILE (outdoc IS NOT NULL)  LOOP
      p := p+1;
      outdoc := dbms_drs.get_response(rid,p);

      dbms_output.put_line(outdoc);
    END LOOP;
  EXCEPTION
    WHEN NO_DATA_FOUND THEN
      NULL;
  END;
  dbms_drs.delete_cancel(rid);
  dbms_drs.delete_request(rid);
END;
/
Blocking Demo set serveroutput on

DECLARE
 rid    INTEGER;
 indoc  VARCHAR2(4000);
 outdoc VARCHAR2(4000);
 p      INTEGER;
BEGIN
  p:=1;
  indoc:='<dummy>foo</dummy>';
  dbms_drs.do_control(indoc, outdoc, rid, p);
  dbms_output.put_line(outdoc);

  p := 2;
  WHILE (rid IS NOT NULL) LOOP
    dbms_drs.do_control(indoc, outdoc, rid, p);
    dbms_output.put_line(outdoc);
    p := p+1;
  END LOOP;
END;
/

Related Topics
Data Guard
DBMS_DG
DGMGRL
Packages
What's New In 21c
What's New In 23c

Morgan's Library Page Footer
This site is maintained by Dan Morgan. Last Updated: This site is protected by copyright and trademark laws under U.S. and International law. © 1998-2023 Daniel A. Morgan All Rights Reserved
  DBSecWorx