我想记录一个关与哪些人查询这个表的记录

syonghua 2007-03-01 04:36:57
我想记录一个关与哪些人查询这个表的记录的日志怎么做
...全文
295 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
manyroads 2007-03-05
  • 打赏
  • 举报
回复
审计

上网搜索一下
以前的项目似乎也是用这个方法
Hunterdiary 2007-03-02
  • 打赏
  • 举报
回复
可以使用触发器呀!
对数据库中的DDL,DML事件进行监控……
这是我写的,对数据库中DDL事件进行监控的触发器,
仅供参考:

create table sys.ddl_actions
(who varchar2(100),
what varchar2(2000),
when date,
ip_address varchar2(100),
terminal varchar2(100)
);
/

-------------------------------------------------------------------
CREATE OR REPLACE TRIGGER sys.LogDDLActions
BEFORE DDL ON DATABASE
DECLARE
executor ddl_actions.who%TYPE;
action ddl_actions.what%TYPE;
ipaddr ddl_actions.ip_address%TYPE;
tterminal ddl_actions.terminal%TYPE;

BEGIN
executor := LOGIN_USER;
action := SYSEVENT||' '||DICTIONARY_OBJ_TYPE||' '
||DICTIONARY_OBJ_OWNER||'.'||DICTIONARY_OBJ_NAME;

SELECT DISTINCT TRIM(SYS_CONTEXT('userenv','ip_address')), terminal INTO ipaddr, tterminal
FROM V_$SESSION
WHERE NVL(USERNAME,'NULL') = USER
AND TERMINAL = USERENV('TERMINAL');

INSERT INTO ddl_actions VALUES (executor, action, SYSDATE, ipaddr, tterminal);

EXCEPTION
WHEN OTHERS THEN
INSERT INTO ddl_actions VALUES (executor, action, SYSDATE, null, null);
END;
/

个人建议:最好不要使用基于数据库级别DML触发器,这样会给数据库的性能带来很大的影响!
syonghua 2007-03-02
  • 打赏
  • 举报
回复
就是要查询的跟踪记录
syonghua 2007-03-02
  • 打赏
  • 举报
回复
能讲详细点吗
steven_he 2007-03-02
  • 打赏
  • 举报
回复
做个审计.
waitwater 2007-03-01
  • 打赏
  • 举报
回复
如果是更新表的记录的话比较容易,查询不清楚,看有没有高手了

17,082

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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