CREATE OR REPLACE TRIGGER TRG_DDL_CHANGES AFTER alter OR drop ON DATABASE DECLARE PRAGMA AUTONOMOUS_TRANSACTION; v_username VARCHAR2(30); v_osuser VARCHAR2(1000); v_sql_text ORA_NAME_LIST_T; v_stmt VARCHAR2(4000); v_n NUMBER; e_not_allowed EXCEPTION; BEGIN v_osuser := SYS_CONTEXT('USERENV', 'OS_USER'); IF v_osuser IS NOT NULL THEN -- The action is not a system initiated process. v_username := SYS_CONTEXT('USERENV', 'SESSION_USER'); IF v_username IN ('WASIM','SCOTT','XXX' ) THEN -- The Above Users Needs To Audited v_n := ORA_SQL_TXT(v_sql_text); FOR i IN 1..v_n LOOP v_stmt := v_stmt || v_sql_text(i); END LOOP; RAISE e_not_allowed; END IF; END IF; EXCEPTION WHEN e_not_allowed THEN RAISE_APPLICATION_ERROR(-20101, 'Illegal Operation, DDL Not Allowed. Please Contact the DBA.'); END; /