当前用户使用的功能和程序

时间:2014-04-12 12:21:12

标签: sql oracle plsql

有没有办法在pl / sql中找到我(当前用户)使用的程序? 我的意思是,我想用一种观点或其他东西来做。

SELECT * FROM  USER_SOURCE WHERE USER = 'myuser';

问题在于user ='myuser'。我做错了什么?

3 个答案:

答案 0 :(得分:0)

如果我没有错,那么您应该查看owner列,如

SELECT * FROM  ALL_SOURCE WHERE OWNER = 'myuser';

OWNER列表示Owner of the object。因此,使用上述查询,您将获得由您或myuser拥有的存储对象,但这不会让您知道最近是否使用过该存储对象。

请参阅此处ALL_SOURCE

修改

不确定为什么会遇到这个奇怪的错误,但仍然可以通过使用user_source表来获取当前用户可以访问的函数和过程

SELECT * FROM  USER_SOURCE 
WHERE type in ('PROCEDURE','FUNCTION');

答案 1 :(得分:0)

监视sql执行的一般方法是使用V $ SQL和V $ SQLTEXT视图。

SELECT
   module, 
   sql_text , 
   u.username
  FROM
   sys.v_$sql s, 
   sys.all_users u 
  WHERE
   s.parsing_user_id = u.user_id 
   and UPPER(u.username) = UPPER('YOUR_USER_NAME') 
   -- AND S.SQL_TEXT like '%SOME PROCUDER NAME%'

为了更具体地针对给定的程序,您可以使用ORACLE AUDITING

audit execute on PROCEDUR_NAME by session;

在多次调用该过程后,您可以通过以下方式查看执行日志:

select username, owner, obj_name, action_name 
from dba_audit_trail where obj_name = 'PROCEDUR_NAME';

答案 2 :(得分:0)

SELECT  grantee, owner, table_name, type, grantor, privilege 
FROM USER_TAB_PRIVS 
WHERE upper(grantee) in ('PUBLIC', 'MYUSER');