可以在触发器查到更改表的SESSION吗?

csusmart 2003-08-23 10:21:12
我在创建一个触器,用于日志,记录下对表进行修改操作的SESSION,请问如何作
...全文
41 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
jiezhi 2003-08-23
  • 打赏
  • 举报
回复
在触发器往你的日志表里面插入紀錄即可。
bluemeteor 2003-08-23
  • 打赏
  • 举报
回复
记SESSION?没听说过,UP一下,学习一下
klbt 2003-08-23
  • 打赏
  • 举报
回复
学习。
beckhambobo 2003-08-23
  • 打赏
  • 举报
回复
用如下的方式可以審計執行drop動作的事件:
/**
* drop語句的審計日誌表
*/
create table drop_log
(
session_id int not null, -- sessionid
drop_time date, -- drop的時間
ip_address varchar2(20), -- ip地址
object_owner varchar2(30), -- 對象的擁有者
object_name varchar2(30), -- 對象名稱
object_type varchar2(20), -- 對象類型
drop_by_user varchar2(30) -- 執行drop語句的用戶
);

create or replace trigger drop_info
after drop on mfg0513user.schema -- 在mfg0513user用戶上創建審計drop的觸發器
begin
insert into drop_log
(session_id,
drop_time,
ip_address,
object_owner,
object_name,
object_type,
drop_by_user)
values(USERENV('SESSIONID'),
sysdate,
SYS_CONTEXT('USERENV','IP_ADDRESS'),
sys.dictionary_obj_owner,
sys.dictionary_obj_name,
sys.dictionary_obj_type,
sys.login_user);
end;

執行drop的語句我沒有辦法給你抓出來,就像你說的那樣,v$sql不紀錄DDL語句,
不過對象名稱和對象類型都可以抓出來,我想這對你來說應該足夠了.

另外:create和alter動作都可以按照上面的方式建類似的表和類似的觸發器做到.
希望對你有所幫助.

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧