分页:
上一页 1 2 3 4 5 [6] 7 8 下一页
INSERT INTO log$information(login_user,login_time,ip_adress,ausid,terminal,
osuser,machine,program,sid,serial#)
VALUES(ora_login_user,SYSDATE,SYS_CONTEXT (’USERENV’,’IP_ADDRESS’),
userenv(’SESSIONID’),
mtSession.Terminal,mtSession.Osuser,
mtSession.Machine,mtSession.Program,
mtSession.Sid,mtSession.Serial#);
ELSE
--if user don’t exists then return error
sp_write_log(’Session Information Error:’||SQLERRM);
CLOSE cSession;
raise_application_error(-20099,’Login Exception’,FALSE);
END IF;
CLOSE cSession;
EXCEPTION
WHEN OTHERS THEN
sp_write_log(’Login Trigger Error:’||SQLERRM);
END tr_login_record;
在以上触发器中需要注意以下几点
1、该用户有v_$session与v_$mystat的对象查询权限,可以在sys下对该拥护显式授权。
2、sp_write_log原本是一个写日志的过程,可以置换为自己的需要,如null跳过。
3、必须在创建该触发器之前创建一个log$information的表记录登录信息。
[Q]怎么捕获整个数据库的DDL语句或者是说对象结构变化与修改
[A]可以采用DDL触发器,如
CREATE OR REPLACE TRIGGER tr_trace_ddl
AFTER DDL ON DATABASE
DECLARE
sql_text ora_name_list_t;
分页:
上一页 1 2 3 4 5 [6] 7 8 下一页