考试网 >> IT认证 >> Oracle >> Oracle指导 >> Oracle FAQ 之网络与安全篇

Oracle FAQ 之网络与安全篇

发布时间:2006-06-28 10:02     点击:
分页:上一页  1 2 3 4 5 6 [7] 8  下一页

   state_sql ddl$trace.ddl_sql%TYPE; 

   BEGIN 

   FOR i IN 1..ora_sql_txt(sql_text) LOOP 

   state_sql := state_sql||sql_text(i); 

   END LOOP; 

   INSERT INTO ddl$trace(login_user,ddl_time,ip_address,audsid, 

   schema_user,schema_object,ddl_sql) 

   VALUES(ora_login_user,SYSDATE,userenv(’SESSIONID’), 

   sys_context(’USERENV’,’IP_ADDRESS’), 

   ora_dict_obj_owner,ora_dict_obj_name,state_sql); 

   EXCEPTION 

   WHEN OTHERS THEN 

   sp_write_log(’Capture DDL Excption:’||SQLERRM); 

   END tr_trace_ddl; 

   在创建以上触发器时要注意几点 

   1、必须创建一个ddl$trace的表,用来记录ddl的记录 

   2、sp_write_log原本是一个写日志的过程,可以置换为自己的需要,如null跳过。 

   [Q]怎么捕获表上的DML语句(不包括select)语句) 

   [A]可以采用dml触发器,如 

   CREATE OR REPLACE TRIGGER tr_capt_sql 

   BEFORE DELETE OR INSERT OR UPDATE 

   ON manager.test 

   DECLARE 

   sql_text ora_name_list_t; 

   state_sql capt$sql.sql_text%TYPE; 

   BEGIN 

   FOR i IN 1..ora_sql_txt(sql_text) LOOP 

   state_sql := state_sql || sql_text(i); 

   END LOOP; 

   INSERT INTO capt$sql(login_user,capt_time,ip_address,audsid,owner,table_name,sql_text) 
分页:上一页  1 2 3 4 5 6 [7] 8  下一页
版权申明:未经书面授权请勿转载本站信息!!作品版权归所属媒体与作者所有!!
发表评论: 匿名发表 用户名: 查看评论
您将承担一切因您的行为、言论而直接或间接导致的民事或刑事法律责任
留言板管理人员有权保留或删除其管辖留言中的任意内容
本站提醒:不要进行人身攻击。谢谢配合。
在本站搜索相关信息
2003-2005 Ksw123.com All Rights Reserved. - TOP
Copyright © 2006 Ksw123.com. All rights reserved.中国考题网 版权所有