|
As sys!! CREATE OR REPLACE TRIGGER maintenance_trg
AFTER LOGON ON DATABASE
DECLARE
v_sid NUMBER;
v_isdba VARCHAR2 (10);
v_program VARCHAR2 (30);
BEGIN
EXECUTE IMMEDIATE 'select distinct sid from sys.v_$mystat'
INTO v_sid;
EXECUTE IMMEDIATE 'select username from sys.v_$session where sid = :b1'
INTO v_program
USING v_sid;
SELECT SYS_CONTEXT ('userenv', 'ISDBA')
INTO v_isdba
FROM DUAL;
v_program := UPPER (v_program);
IF (NOT v_program IN
('DBSNMP', 'HAMON', 'OEMAGENT', 'PATROL', 'SYS', 'SYSTEM',
'PERFSTAT', 'OPS$ORACLE')
)
AND (NOT v_program IS NULL)
--and v_isdba = 'FALSE'
THEN
raise_application_error
(-20001,
'Fw IT-OP DBA Support: '
|| 'Maintenance in corso, connessione non consentita per '
|| v_program
);
END IF;
END;
/ |