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.
dbms_ddl_internal.check_trigger_firing_property(
trig_owner IN VARCHAR2,
trig_name IN VARCHAR2,
canon_owner OUT VARCHAR2,
canon_oname OUT VARCHAR2,
p_property IN OUT NUMBER,
unsupported_trig OUT BOOLEAN);
conn uwclass/uwclass@pdbdev
CREATE OR REPLACE TRIGGER t_trig
BEFORE UPDATE
ON airplanes
BEGIN
NULL;
END t_trig;
/
conn sys@pdbdev as sysdba
set serveroutput on
DECLARE
co VARCHAR2(30);
cn VARCHAR2(30);
pp NUMBER(10) := 0;
ut BOOLEAN;
BEGIN
dbms_ddl_internal.check_trigger_firing_property('UWCLASS', 'T_TRIG', co, cn, pp, ut);
Returns true of the trigger is a DDL Event Trigger
dbms_ddl_internal.is_ddl_trigger(sys_evts IN NUMBER) RETURN BOOLEAN;
conn sys@pdbdev as sysdba
desc trigger$
SELECT sys_evts, type#, COUNT(*)
FROM trigger$
GROUP BY sys_evts, type#
ORDER BY 1;
-- from sql.bsq
type# number not null, /* trigger type: */
/* 0 = BEFORE TABLE, 1 = BEFORE ROW, 2 = AFTER TABLE, 3 = AFTER ROW */
/* 4 = INSTEAD OF TRIGGER */
-- also see dba_triggers in catprc.sql
set serveroutput on
BEGIN
IF dbms_ddl_internal.is_ddl_trigger(31) THEN
dbms_output.put_line('TRUE');
ELSE
dbms_output.put_line('FALSE');
END IF;
END;
/
BEGIN
IF dbms_ddl_internal.is_ddl_trigger(32) THEN
dbms_output.put_line('TRUE');
ELSE
dbms_output.put_line('FALSE');
END IF;
END;
/