gpt4 book ai didi

oracle - 在Oracle中查找用户访问过的表

转载 作者:行者123 更新时间:2023-12-02 01:22:06 24 4
gpt4 key购买 nike

使用 Oracle XE 10g。

我们有一个应用程序使用具有受限访问权限的数据库用户。由于通过反复试验找出该用户需要访问哪些表非常麻烦,因此我们正在寻找一种方法来查询 Oracle 数据字典以获取有关表访问的信息。

最好的查询是提供该用户自某个时间点以来访问过的表的列表,最好是写访问权限还是只读访问权限。

这样,我们可以对具有不受限制访问权限的用户运行测试,找出它使用了哪些表,然后将此用户设置为只能访问这些表。

我正在查看 V$SEGMENT_STATISTICS,但这不会记录访问该对象的用户。

最佳答案

您可以使用 AUDIT 跟踪访问命令。这会生成大量数据,所以要小心。

对来自特定用户的所有语句启用审计,以捕获所有访问:

audit all statements by jheller;

直到下一个 session 才会生效。重新登录后,运行一些测试命令:

create table test1(a number);
select * from test1;
insert into test1 values(1);
delete from test1;

现在查询 DBA_AUDIT_TRAIL 以查找数据。审计线索中有很多垃圾,因此需要一些努力来缩小结果范围。

select owner, obj_name, action_name
from dba_audit_trail
where username = 'JHELLER'
and owner = 'JHELLER'
and timestamp > sysdate - 1
order by timestamp desc;

结果:

OWNER    OBJ_NAME  ACTION_NAME
----- -------- --------
JHELLER TEST1 DELETE
JHELLER TEST1 INSERT
JHELLER TEST1 SELECT
JHELLER TEST1 CREATE TABLE

关于oracle - 在Oracle中查找用户访问过的表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39490010/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com