MINI MINI MANI MO
Rem Copyright (c) 2000, 2015, Oracle and/or its affiliates.
Rem All rights reserved.
Rem
Rem NAME
Rem dbmslsby.sql - DBMS Logical StandBY
Rem
Rem DESCRIPTION
Rem dbms_logstdby package definition.
Rem Used for administering Logical Standby
Rem
Rem NOTES
Rem execution requires logstdby_administrator role
Rem
Rem
Rem BEGIN SQL_FILE_METADATA
Rem SQL_SOURCE_FILE: rdbms/admin/dbmslsby.sql
Rem SQL_SHIPPED_FILE: rdbms/admin/dbmslsby.sql
Rem SQL_PHASE: DBMSLSBY
Rem SQL_STARTUP_MODE: NORMAL
Rem SQL_IGNORABLE_ERRORS: NONE
Rem SQL_CALLING_FILE: rdbms/admin/catpstrt.sql
Rem END SQL_FILE_METADATA
Rem
Rem MODIFIED (MM/DD/YY)
Rem smangala 10/09/15 - bug 21192807: CDB non-unique xid
Rem surman 12/29/13 - 13922626: Update SQL metadata
Rem jmadduku 06/18/12 - BUG 12628619: Priv UTS not allowed to be
Rem granted to a role but allowed to be revoked
Rem svivian 06/14/12 - Bug 13977260: add clear_context;
Rem remove set_context overload
Rem surman 03/27/12 - 13615447: Add SQL patching tags
Rem svivian 01/24/12 - bug 13603747: some procedures must be called from
Rem pdb root
Rem svivian 09/20/11 - create apply context for skip
Rem jmadduku 02/18/11 - Proj 32507: Grant Unlimited Tablespace privilege
Rem explicitly
Rem svivian 11/12/10 - add EDS evolve support
Rem svivian 12/29/09 - bug 8846600: disallow instantiate_table if
Rem EDS-maintained
Rem svivian 03/26/09 - add EDS
Rem dvoss 03/19/09 - bug 8350972 - ku_noexp_tab not yet created
Rem dvoss 03/11/09 - do not export role
Rem ajadams 12/02/08 - remove unused db_role proc
Rem rmacnico 05/28/08 - add db_role
Rem ajadams 03/03/08 - add db_is_logstdby
Rem rmacnico 12/17/07 - bug 6470986: dbms_logstdby.is_apply_server
Rem rmacnico 05/24/07 - bug 5666482: map primary scn
Rem rmacnico 12/28/06 - Remove instantiate feature in 11g
Rem rburns 08/23/06 - add library
Rem rmacnico 04/20/06 - Add kernal PL/SQL support
Rem ajadams 08/24/05 - move internal and safe_scn package to new files
Rem sslim 05/27/05 - new addition: prepare_for_new_primary
Rem ajadams 05/04/05 - remove stop_on_ddl
Rem ajadams 05/02/05 - dbms_logstdby_public now deprecated
Rem ajadams 04/15/05 - move internal package out
Rem ajadams 09/01/04 - corrupted dictionary fixup support
Rem sslim 08/13/04 - New prototype for rebuild
Rem jnesheiw 08/03/04 - Remove grant of CONNECT role to
Rem LOGSTDBY_ADMINISTRATOR
Rem sslim 06/06/04 - fast failover: dbms_logstdby.rebuild
Rem mtao 05/31/04 - add verify_session_logautodelete for internal use
Rem sslim 05/25/04 - add end_stream_shared internal routine
Rem ajadams 04/28/04 - add update_dynamic_lsby_options
Rem sslim 04/13/04 - obsolete: get_mtime
Rem raguzman 04/16/04 - max_event_records
Rem jkundu 11/07/03 - add purge session
Rem mtao 10/17/03 - lock set_tablespace, bug: 2921044
Rem wfisher 10/03/03 - Add version parameters to need_scn
Rem gmulagun 09/11/03 - change type of audit PROCESS# column
Rem htran 06/01/03 - set_export_scn: add original schema and name
Rem raguzman 06/20/03 - dbms_logstdby should be invokers rights
Rem raguzman 06/17/03 - fix up logstdby.set_export_scn param names
Rem htran 05/05/03 - add set_session_state.
Rem add flashback_scn to get_export_dml_scn
Rem gmulagun 03/27/03 - bug 2822534: rename tran_id to xid
Rem raguzman 01/22/03 - new col names for seq* aud* par* job* procs
Rem sslim 12/31/02 - 1110668: correct end_stream
Rem jmzhang 12/31/02 - update audins, audel, audupd
Rem jmzhang 11/13/02 - update audins, auddel, audupd
Rem sslim 10/15/02 - zero data loss historian prototypes
Rem dvoss 10/18/02 - add set_tablespace
Rem rguzman 10/07/02 - declare history record procedures
Rem jmzhang 09/23/02 - declare dbms_internal_safe_scn
Rem rguzman 10/01/02 - skip using like feature
Rem jnesheiw 09/03/02 - create DBMS_LOGSTDBY_PUBLIC package
Rem jnesheiw 07/23/02 - grant connect, resource to logstdby_administrator
Rem jmzhang 08/20/02 - declare unskip(one para)
Rem gviswana 01/29/02 - CREATE OR REPLACE SYNONYM
Rem jnesheiw 10/31/01 - fix audins.
Rem rguzman 10/11/01 - Using internal logmnr interface, drop some procs
Rem sslim 09/25/01 - Logminer dictionary build as a background process
Rem sslim 09/04/01 - Mods due new procedures with additional arguments
Rem rguzman 08/31/01 - Add guard check
Rem jnesheiw 09/13/01 - Add stop_on_ddl support.
Rem jnesheiw 08/07/01 - change UTL_LOGSTDBY to DBMS_INTERNAL_LOGSTDBY.
Rem rguzman 06/19/01 - Add verify_nosession.
Rem sslim 04/11/01 - Add parins/parupd/pardel procedures
Rem sslim 02/21/01 - Add procedure to prepare user statement for apply
Rem jdavison 12/01/00 - Drop extra semicolons
Rem rguzman 09/12/00 - Handle new flags column for sequences
Rem svivian 07/27/00 - single table instantiation
Rem svivian 06/01/00 - delete from job queue
Rem svivian 05/31/00 - jobupd added
Rem svivian 05/26/00 - add hidden columns to jobq
Rem rguzman 05/19/00 - Adding apply_set/unset
Rem svivian 04/20/00 - continue work on sequences
Rem svivian 04/18/00 - add callout to set logical apply mode
Rem svivian 03/31/00 - sequence support
Rem svivian 03/22/00 - add test_jqc
Rem svivian 03/13/00 - procedures for audit change record processing
Rem svivian 02/25/00 - Created
Rem
@@?/rdbms/admin/sqlsessstart.sql
--
--
-- procedures for administering Logical Standby
--
--
CREATE OR REPLACE PACKAGE sys.dbms_logstdby AUTHID CURRENT_USER IS
-- Skip procedure constants
SKIP_ACTION_SKIP CONSTANT NUMBER := 1;
SKIP_ACTION_APPLY CONSTANT NUMBER := 0;
SKIP_ACTION_REPLACE CONSTANT NUMBER := -1;
SKIP_ACTION_ERROR CONSTANT NUMBER := -2;
SKIP_ACTION_NOPRIVS CONSTANT NUMBER := -3;
-- maximum event records that can be recorded in dba_logstdby_events
MAX_EVENTS CONSTANT NUMBER := 2000000000;
--
-- NAME: apply_set
--
-- DESCRIPTION:
-- This procedure sets configuration options
--
-- PARAMETERS:
-- inname - config option (see documentation or validate_set)
-- value - value for specified option
--
-- USAGE NOTES:
-- This procedure will return an error if APPLY is active.
--
-- EXCEPTIONS:
-- ora-16104 "invalid Logical Standby option requested"
-- ora-16236 "Logical Standby metadata operation in progress"
-- ora-16103 "Logical Standby must be stopped to allow this operation"
--
PROCEDURE apply_set(inname IN VARCHAR,
value IN VARCHAR);
--
-- NAME: apply_unset
--
-- DESCRIPTION:
-- This procedure sets a configuration option back to its default value
--
-- PARAMETERS:
-- inname - config option (see documentation or validate_set)
--
-- USAGE NOTES:
-- This procedure will return an error if APPLY is active.
--
-- EXCEPTIONS:
-- ora-16104 "invalid Logical Standby option requested"
-- ora-16236 "Logical Standby metadata operation in progress"
-- ora-16103 "Logical Standby must be stopped to allow this operation"
--
PROCEDURE apply_unset(inname IN VARCHAR);
--
-- NAME: build
--
-- DESCRIPTION:
-- Build a LogMiner dictionary into the redo log steam.
-- Captures system catalog metadata from primary database for
-- use by Logical Standby while apply redo log changes. This procedure
-- also turns on supplemental logging.
--
-- PARAMETERS:
-- none
--
-- USAGE NOTES:
--
-- EXCEPTIONS:
-- none
--
PROCEDURE build;
--
-- NAME: rebuild
--
-- DESCRIPTION:
-- This procedure is called
-- after an error was detected during the LSP1 LogMiner dictionary build.
-- Unlike
-- normal LogMiner dictionary builds, the lockdown SCN has already been
-- determined. This SCN is stored as the FIRST_CHANGE# of a record in
-- system.logstdby$history that represents the current log stream. The
-- lockdown SCN is simply fetched and supplied to the dictionary gather
-- routine. This routine will also attempt to archive SRLs that were
-- purposely deferred during activation. These two activities, build and
-- SRL archival, must complete in order for reinstatement of standbys
--- to be successful. The status of these activities is reflected in the
-- REINSTATEMENT_STATUS parameter which can be any of the following values:
-- BUILD PENDING, SRL ARCHIVE PENDING, READY, or NOT POSSIBLE. A status of
-- BUILD PENDING means that the LogMiner dictionary build is pending. A
-- status of SRL ARCHIVE PENDING means that the SRL archival is pending.
-- Due to the ordering of this routine, a status of SRL ARCHIVE PENDING also
-- implies that a LogMiner dictionary build was successful. A status of
-- READY means that reinstatement of standbys is possible. A status of
-- NOT POSSIBLE means that reinstatement is not possible. The NOT POSSIBLE
-- status will only occur if the LogMiner dictionary build returns a snapshot
-- too old error.
--
-- PARAMETERS:
-- none
--
-- USAGE NOTES:
--
-- EXCEPTIONS:
-- none
--
PROCEDURE rebuild;
--
-- NAME: skip
--
-- DESCRIPTION:
-- This is a stored procedure that inserts a row in the skip table
-- according to the data passed in. Used to define filters that
-- prevent application of SQL statements by Logical Standby apply.
--
-- PARAMETERS:
-- see documentation
--
-- USAGE NOTES:
-- This procedure will return an error if APPLY is active.
--
-- EXCEPTIONS:
-- ora-16236 "Logical Standby metadata operation in progress"
-- ora-16103 "Logical Standby must be stopped to allow this operation"
-- ora-16104 "invalid Logical Standby option requested"
--
SUBTYPE CHAR1 IS CHAR(1);
PROCEDURE skip(stmt IN VARCHAR2,
schema_name IN VARCHAR2 DEFAULT NULL,
object_name IN VARCHAR2 DEFAULT NULL,
proc_name IN VARCHAR2 DEFAULT NULL,
use_like IN BOOLEAN DEFAULT TRUE,
esc IN CHAR1 DEFAULT NULL);
--
-- NAME: skip_error
--
-- DESCRIPTION:
-- This is a stored procedure that inserts a row into the
-- skip table according to the data passed in. Used to tell Logical
-- Standby apply how to behave when encountering an error.
--
-- PARAMETERS:
-- see documentation
--
-- USAGE NOTES:
-- This procedure will return an error if APPLY is active.
--
-- EXCEPTIONS:
-- ora-16236 "Logical Standby metadata operation in progress"
-- ora-16103 "Logical Standby must be stopped to allow this operation"
-- ora-16104 "invalid Logical Standby option requested"
-- ora-01031 "insufficient privileges"
--
PROCEDURE skip_error(stmt IN VARCHAR2,
schema_name IN VARCHAR2 DEFAULT NULL,
object_name IN VARCHAR2 DEFAULT NULL,
proc_name IN VARCHAR2 DEFAULT NULL,
use_like IN BOOLEAN DEFAULT TRUE,
esc IN CHAR1 DEFAULT NULL);
--
-- NAME: skip_transaction
--
-- DESCRIPTION:
-- This is a stored procedure that inserts a row into the
-- skip transaction table according to the data passed in.
-- Used to tell Logical Standby to skip a particular txn.
--
-- PARAMETERS
-- xid
--
-- USAGE NOTES:
-- This procedure will return an error if APPLY is active.
-- WARNING: be sure skipping of this transaction will not affect
-- applying future transactions.
--
-- EXCEPTIONS:
-- ora-16236 "Logical Standby metadata operation in progress"
-- ora-16103 "Logical Standby must be stopped to allow this operation"
-- ora-01031 "insufficient privileges"
--
PROCEDURE skip_transaction(xidusn_p IN NUMBER,
xidslt_p IN NUMBER,
xidsqn_p IN NUMBER,
con_name_p IN VARCHAR2 default NULL);
--
-- NAME: unskip
--
-- DESCRIPTION:
-- This is a stored procedure that deletes a row from the
-- skip table according to the data passed in. Negates effects
-- from skip procedure.
--
-- PARAMETERS
-- see documentation
--
-- USAGE NOTES:
-- This procedure will return an error if APPLY is active.
--
-- EXCEPTIONS:
-- ora-16236 "Logical Standby metadata operation in progress"
-- ora-16103 "Logical Standby must be stopped to allow this operation"
-- ora-16104 "invalid Logical Standby option requested"
-- ora-01031 "insufficient privileges"
--
PROCEDURE unskip(stmt IN VARCHAR2,
schema_name IN VARCHAR2 DEFAULT NULL,
object_name IN VARCHAR2 DEFAULT NULL);
--
-- NAME: unskip_error
--
-- DESCRIPTION:
-- This is a stored procedure that deletes a row from the
-- skip table according to the data passed in. Negates effects
-- from skip_error procedure.
--
-- PARAMETERS:
-- see documentation
--
-- USAGE NOTES:
-- This procedure will return an error if APPLY is active.
--
-- EXCEPTIONS:
-- ora-16236 "Logical Standby metadata operation in progress"
-- ora-16103 "Logical Standby must be stopped to allow this operation"
-- ora-16104 "invalid Logical Standby option requested"
-- ora-01031 "insufficient privileges"
--
PROCEDURE unskip_error(stmt IN VARCHAR2,
schema_name IN VARCHAR2 DEFAULT NULL,
object_name IN VARCHAR2 DEFAULT NULL);
--
-- NAME: unskip_transaction
--
-- DESCRIPTION:
-- This is a stored procedure that deletes a row from the
-- skip transaction table according to the data passed in.
-- Negates effects from skip_transaction procedure.
--
-- PARAMETERS
-- xid
--
-- USAGE NOTES:
-- This procedure will return an error if APPLY is active.
--
-- EXCEPTIONS:
-- ora-16236 "Logical Standby metadata operation in progress"
-- ora-16103 "Logical Standby must be stopped to allow this operation"
-- ora-16100 "not a valid Logical Standby database"
-- ora-01031 "insufficient privileges"
--
PROCEDURE unskip_transaction(xidusn_p IN NUMBER,
xidslt_p IN NUMBER,
xidsqn_p IN NUMBER,
con_name_p IN VARCHAR2 default NULL);
--
-- NAME: instantiate_table
--
-- DESCRIPTION:
-- This procedure creates and populates a table and its
-- children from a table existing on a source database as
-- accessed via the dblink parameter.
--
-- If the table currently exists in the target database,
-- it will be dropped. Any constraint or index that exists
-- on the source table will also be created but physical
-- storage characteristics will be omitted.
--
-- PARAMETERS:
-- table_name Name of table to be instantiated
-- schema_name Schema name in which the table resides
-- dblink link to database in which the table resides
--
-- USAGE NOTES:
-- This procedure should be called on a logical standby database
-- whenever a table needs to be re-instantiated. If the apply
-- engine is currently running, and exception will be raised.
-- The target table will be dropped first if it currently exists.
-- Uses datapump so datapump rules apply.
--
-- EXCEPTIONS:
-- ora-16236 "Logical Standby metadata operation in progress"
-- ora-16103 "Logical Standby must be stopped to allow this operation"
-- ora-16277 "specified table is not supported by logical standby"
-- ora-16278 "specified table has a multi-object skip rule defined"
-- ora-00942 "Table does not exist (on primary)"
-- ora-16308 "specified table has extended data type support"
--
PROCEDURE instantiate_table(schema_name IN VARCHAR2,
table_name IN VARCHAR2,
dblink IN VARCHAR2);
--
-- NAME: set_tablespace
--
-- DESCRIPTION:
-- This procedure changes the tablespace used to store logical
-- standby metadata. By default this data is stored in SYSAUX.
-- Users have the option to move the metadata to another schema
-- provided APPLY is not running when the data is moved.
--
-- PARAMETERS:
-- new_tablespace Name of tablespace to hold metadata
--
-- USAGE NOTES:
-- This procedure will return an error if APPLY is active.
--
-- EXCEPTIONS:
-- ora-16236 "Logical Standby metadata operation in progress"
-- ora-16103 "Logical Standby must be stopped to allow this operation"
--
PROCEDURE set_tablespace(new_tablespace IN VARCHAR2);
--
-- NAME: purge_session
--
-- DESCRIPTION:
-- This procedure purges the session metadata up to the latest
-- safe purge scn. This procedure can be called while the logical
-- standby apply is running
--
-- PARAMETERS:
-- NONE
--
-- USAGE NOTES:
-- This procedure can be called while apply is running
--
-- EXCEPTIONS:
-- ora-01309 "invalid session"
--
PROCEDURE purge_session;
--
-- NAME: prepare_for_new_primary
--
-- DESCRIPTION:
--
-- This procedure is called to ready the local logical standby
-- for configuration with a failed-over primary. This routine will:
--
-- 1. Ensure the primary is only one role transition ahead of us.
-- 2. Ensure we haven't applied too far (i.e. flashback required).
-- 3. Purge log$ of all logfiles that need to be obtained from the
-- new primary's copy (a.k.a terminal logs).
--
-- If the new primary was formerly a physical standby, the user should
-- issue a START LOGICAL STANDBY APPLY. If the new primary was formerly
-- a logical standby, the user must ensure to copy and re-register the
-- terminal logs, as indicated in the alert.log, and issue a START
-- LOGICAL STANDBY APPLY NEW PRIMARY. This DDL will ensure the apply
-- runs in the appropriate apply mode.
--
-- PARAMETERS:
-- former_standby_type -- Type of standby the new primary was activated
-- from. Valid values are 'PHYSICAL' | 'LOGICAL'
-- dblink -- dblink to the activated primary
--
-- USAGE NOTES:
-- NONE
--
-- EXCEPTIONS:
-- NONE
--
PROCEDURE prepare_for_new_primary (former_standby_type IN VARCHAR2,
dblink IN VARCHAR2);
--
-- NAME: map_primary_scn
--
-- DESCRIPTION:
-- Return conservative scn on standby for specified scn on primary
--
-- PARAMETERS:
-- scn -- Valid scn on primary
--
-- USAGE NOTES:
-- Return an scn on the standby that predates the supplied scn
-- from the primary by at least 5 minutes. This is a safe scn to
-- flashback the standby to prior to the scn to which the primary
-- was flashed back
--
-- EXCEPTIONS:
-- -20001, primary scn before mapped range
-- -20002, scn mapping requires PRESERVE_COMMIT_ORDER true
--
FUNCTION map_primary_scn(primary_scn NUMBER) RETURN NUMBER;
-- NAME: db_is_logstdby
--
-- DESCRIPTION:
-- Function returns 1 if called from a Logical Standby database
-- and 0 otherwise.
--
-- PARAMETERS:
-- USAGE NOTES:
-- EXCEPTIONS:
--
FUNCTION db_is_logstdby RETURN BINARY_INTEGER;
--
-- NAME: is_apply_server
--
-- DESCRIPTION:
-- Functions returns TRUE/FALSE on whether called from apply process
--
-- PARAMETERS:
--
-- USAGE NOTES:
-- Needed for standby trigger support
--
-- EXCEPTIONS:
--
FUNCTION is_apply_server RETURN BOOLEAN;
--
-- Name: eds_add_table - Add Trigger-Based Support for EDS table
--
-- Description:
-- Feature procedure for Extended Datatype Support on logical standby.
-- By calling this procedure on the primary first and then the standby,
-- tables with extended datatypes can be supported on a logical standby.
--
-- Parameters:
-- table_owner (IN) owner of the table
-- table_name (IN) table name to support
-- p_dblink (IN) db link to the primary
--
-- Usage:
-- Call on primary first, then on standby. It creates a shadow table and
-- 2 triggers; one on the base table and one on the shadow table. On the
-- standby it must be called with a dblink to the primary which it will
-- use for dictionary queries and for instantiate_table.
--
PROCEDURE eds_add_table(
table_owner IN varchar2,
table_name IN varchar2,
p_dblink IN varchar2 default NULL);
--
-- Name: eds_remove_table - Remove Trigger-Based Support for EDS table
--
-- Description:
-- Feature procedure for Extended Datatype Support on logical standby.
-- This can be invoked on the primary or the standby. If invoked on the
-- primary, its actions will be replicated by way of an AUTO pragma.
-- If invoked from the standby it will only drop EDS on that standby.
--
-- Parameters:
-- table_owner (IN) owner of the table
-- table_name (IN) table name to support
--
-- Usage:
--
PROCEDURE eds_remove_table(
table_owner IN varchar2,
table_name IN varchar2);
--
-- Name: eds_evolve_automatic - EDS Automatic Evolve
--
-- Description:
-- This procedure enables or disables the automated EDS evolve
-- infrastructure whereby EDS objects are automatically evolved
-- in response to DDL done on an EDS-maintained table.
--
-- Parameters:
-- options (IN) 'ENABLE' - enables auto-evolve
-- 'DISABLE' - disables auto-evolve
-- Usage:
-- Should be called once prior to first eds_add_table call to enable
-- automatic evolve across DDLs.
--
PROCEDURE eds_evolve_automatic(
options IN VARCHAR2);
--
-- Name: eds_evolve_manual - EDS Manual Evolve
--
-- Description:
-- This procedure should be called if the user chooses to manually
-- evolve his EDS infrastructure across a DDL on the EDS-maintained
-- table. The automated evolve facility uses this procedure itself.
--
-- Parameters:
-- options (IN) 'START' - starts an evolve operation
-- 'FINISH' - finishes an evolve operation
-- 'CANCEL' - cancels an evolve operation
-- table_owner (IN) owner of the table
-- table_name (IN) name of the table
--
-- Usage:
-- Use this procedure only if NOT using the automated evolve facility
-- (eds_evolve_automatic). If DDL must be done on an EDS-maintained
-- table, first call this procedure with options=>'START', then perform
-- the DDL, and finally call this procedure with options=>'FINISH'.
-- If this was called with the START option already and the user wishes
-- to cancel the evolve, call with options=>'CANCEL'.
--
PROCEDURE eds_evolve_manual(
options IN VARCHAR2,
table_owner IN VARCHAR2,
table_name IN VARCHAR2);
END dbms_logstdby;
/
show errors
CREATE OR REPLACE PUBLIC SYNONYM dbms_logstdby FOR sys.dbms_logstdby;
-- Revoke execute on DBMS_LOGSTDBY from public. If it has already
-- been revoked, do not throw an error. NOTE this is to accomodate
-- 9iR1 databases that formerly had the package executable to public.
DECLARE
already_revoked EXCEPTION;
PRAGMA EXCEPTION_INIT(already_revoked,-01927);
BEGIN
execute immediate 'REVOKE EXECUTE ON dbms_logstdby FROM public';
EXCEPTION WHEN already_revoked then null;
END;
/
GRANT EXECUTE ON dbms_logstdby TO dba;
-- Create role lesser than dba to manage logstdby
-- BUT: they will not be able to skip/unskip which requires 'BECOME USER'
-- Note this role is included in ku_noexp_tab via catdpb.sql.
CREATE ROLE logstdby_administrator;
GRANT EXECUTE ON dbms_logstdby TO logstdby_administrator;
GRANT RESOURCE TO logstdby_administrator;
/
-- needed by several prvt scripts
CREATE OR REPLACE LIBRARY sys.dbms_logstdby_lib TRUSTED IS STATIC;
/
CREATE CONTEXT lsby_apply_context USING dbms_logstdby_context;
CREATE OR REPLACE PACKAGE dbms_logstdby_context AS
PROCEDURE set_context(name IN VARCHAR2, value IN VARCHAR2);
PROCEDURE get_context(name IN VARCHAR2, value OUT VARCHAR2);
PROCEDURE clear_context(name IN VARCHAR2);
PROCEDURE clear_all_context;
END dbms_logstdby_context;
/
CREATE OR REPLACE PUBLIC SYNONYM dbms_logstdby_context FOR sys.dbms_logstdby_context;
GRANT EXECUTE ON dbms_logstdby_context TO public;
@?/rdbms/admin/sqlsessend.sql
OHA YOOOO