Which has the higher priority in your organization: Deploying a new database or securing the ones you already have?
Looking for a website, and resources, dedicated solely to securing Oracle databases? Check out DBSecWorx.
Purpose
Internal support utilities for Data Guard Logical Standby Databases
exec dbms_internal_logstdby.capture_scn;
BEGIN dbms_internal_logstdby.capture_scn; END;
*
ERROR at line 1:
ORA-16287: operation not permitted due to active apply state
ORA-06512: at "SYS.DBMS_INTERNAL_LOGSTDBY", line 378
ORA-06512: at line 1
dbms_internal_logstdby.enable_logical_replication(repl_state IN BOOLEAN);
DECLARE
retVal BOOLEAN := dbms_internal_logstdby.disable_logical_replication;
BEGIN
IF retVal THEN
dbms_output.put_line('TRUE');
ELSE
dbms_output.put_line('FALSE');
END IF;
END;
/ TRUE
DECLARE
retVal BOOLEAN := dbms_internal_logstdby.disable_logical_replication;
BEGIN
IF retVal THEN
dbms_output.put_line('TRUE');
ELSE
dbms_output.put_line('FALSE');
END IF;
END;
/ TRUE
DECLARE
retVal BOOLEAN := dbms_internal_logstdby.disable_logical_replication;
BEGIN
IF retVal THEN
dbms_output.put_line('TRUE');
ELSE
dbms_output.put_line('FALSE');
END IF;
END;
/ FALSE
dbms_internal_logstdby.is_eds_maintained(
owner IN VARCHAR2,
table_name IN VARCHAR2)
RETURN BOOLEAN;
BEGIN
IF dbms_internal_logstdby.is_eds_maintained(USER, 'OBJ$') THEN
dbms_output.put_line('Extended Data Type Supportable');
ELSE
dbms_output.put_line('Not Extended Data Type Supportable');
END IF;
END;
/ Not Extended Data Type Supportable
dbms_internal_logstdby.is_eds_supportable(
owner IN VARCHAR2,
table_name IN VARCHAR2)
RETURN BOOLEAN;
BEGIN
IF dbms_internal_logstdby.is_eds_supportable(USER, 'OBJ$') THEN
dbms_output.put_line('Extended Data Type Supportable');
ELSE
dbms_output.put_line('Not Extended Data Type Supportable');
END IF;
END;
/ Not Extended Data Type Supportable
dbms_internal_logstdby.is_lsdby_supportable(
owner IN VARCHAR2,
table_name IN VARCHAR2)
RETURN BOOLEAN;
BEGIN
IF dbms_internal_logstdby.is_lsby_supportable(USER, 'OBJ$') THEN
dbms_output.put_line('Logical Standby Supportable');
ELSE
dbms_output.put_line('Not Logical Standby Supportable');
END IF;
END;
/ Not Logical Standby Supportable
BEGIN
IF dbms_internal_logstdby.is_pdb_root THEN
dbms_output.put_line('Current container is CDB$ROOT');
ELSE
dbms_output.put_line('Current container is ' || SYS_CONTEXT('USERENV','CON_NAME'));
END IF;
END;
/ Current container is CDB$ROOT
PL/SQL procedure successfully completed.
ALTER SESSION SET CONTAINER = PDBDEV;
BEGIN
IF dbms_internal_logstdby.is_pdb_root THEN
dbms_output.put_line('Current container is CDB$ROOT');
ELSE
dbms_output.put_line('Current container is ' || SYS_CONTEXT('USERENV','CON_NAME'));
END IF;
END;
/
PL/SQL procedure successfully completed.
-- unfortunately another example of Oracle doing EXCEPTION WHEN OTHERS THEN NULL
dbms_internal_logstdby.is_supp_and_skip(
owner IN VARCHAR2,
table_name IN VARCHAR2)
RETURN BOOLEAN;
BEGIN
IF dbms_internal_logstdby.is_supp_and_notskip(USER, 'OBJ$') THEN
dbms_output.put_line('LTRUE');
ELSE
dbms_output.put_line('FALSE');
END IF;
END;
/ TRUE
SQL> exec dbms_internal_logstdby.verify_session;
BEGIN dbms_internal_logstdby.verify_session; END;
*
ERROR at line 1:
ORA-16100: not a valid Logical Standby database
ORA-06512: at "SYS.DBMS_INTERNAL_LOGSTDBY", line 919
ORA-06512: at line 1