ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 查找用户正在访问的对象

查找用户正在访问的对象

原创 Linux操作系统 作者:golden_zhou 时间:2011-09-15 17:07:56 0 删除 编辑
一旦发现某些用户或者系统中的查询存在问题,查询V$ACCESS 可以为您指出有潜在问题的对象(可能
缺少索引)。当想修改一个特殊的对象,或者需要知道在一个给定的时间点上谁在使用该对象时,它也非常
有帮助,如下面程序清单所示。
select a.sid, a.username, b.owner, b.object, b.type
from v$session a, v$access b
where a.sid = b.sid;
SID USERNAME OWNER OBJECT TYPE
--- -------- ----- --------------------- -------
8 SCOTT SYS DBMS_APPLICATION_INFO PACKAGE
9 SYS SYS DBMS_APPLICATION_INFO PACKAGE
9 SYS SYS X$BH TABLE
10 SYSTEM PUBLIC V$ACCESS SYNONYM
10 SYSTEM PUBLIC V$SESSION SYNONYM
10 SYSTEM SYS DBMS_APPLICATION_INFO PACKAGE
10 SYSTEM SYS V$ACCESS VIEW
10 SYSTEM SYS V$SESSION VIEW
10 SYSTEM SYS V_$ACCESS VIEW
该脚本显示了所有正被访问的对象,包括同名表、视图、已存储的源代码等。
技巧:
通过查询V$ACCESS 视图可查看在给定的时间点上用户所访问的所有对象。这有助于查明
有问题的对象,在想修改一个特定的对象时也很有用(查找谁在访问它)。然而,当系统
有一个很大的共享池和数百个用户时,这个操作的开销将很大。
获得详细的用户信息
当 正在测试一个新的或者升版的应用程序模块以决定其开销时,分析用户的统计数据的方法是极为
有用的。当用户遇到性能问题时,它也向用户提供了一个窗口,因为 它提供的统计数据涵盖了每个用户的
各个方面。此外,在设置配置文件来限制特定用户时,也可将其作为一种指导。下面程序清单中的脚本将
统计数据限制为必须有 值的数据(b.value != 0)。注意只列出了IMU,它只存在于Oracle 10g 之中:
select a.username, c.name, sum(b.value) value
from v$session a, v$sesstat b, v$statname c
where a.sid = b.sid
and b.statistic# = c.statistic#
and b.value != 0
group by name, username;
USERNAME NAME VALUE
------------------- ------------------------- ----------
SYS DB time 3690
redo size 2143640
SYS redo size 98008
303
user calls 28
SYS user calls 337
IMU Flushes 1
SYS IMU Flushes 2
IMU commits 19
SYS IMU commits 1
redo writes 4443
redo entries 8728
...etc.

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/25198367/viewspace-707592/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2011-03-09

  • 博文量
    238
  • 访问量
    344446