有没有办法在pl / sql中找到我(当前用户)使用的程序? 我的意思是,我想用一种观点或其他东西来做。
SELECT * FROM USER_SOURCE WHERE USER = 'myuser';
问题在于user ='myuser'。我做错了什么?
答案 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');