oracle 找出是谁引发了手术

yeotifhr  于 2022-11-03  发布在  Oracle
关注(0)|答案(3)|浏览(152)

我有一个Oracle PL/SQL过程monitoring_5_min,据我所知,它必须每5分钟由某个外部接口(可能是Web服务)或某个调度作业调用一次。是否有任何Oracle系统方法可以找出调用该过程的对象?可能是一些系统视图?我尝试从v$sql中选择,但似乎它只包括SQL调用,而不包括PL/SQL。

t98cgbkg

t98cgbkg1#

您可以查询v$session以获取所有详细信息:

select * from v$session where sid = sys_context('userenv','sid')

另请查看OWA_UTIL.WHO_CALLED_ME

b4wnujal

b4wnujal2#

Alex,在Oracle中按调度运行任务的最可能的方法是通过cron(如果在UNIX上)或DBMS_SCHEDULER。您可以同时查看这两个选项,并查询DBA_DEPENDENCIES以获取对存储过程的引用,前提是任务实际上没有使用匿名PL/SQL。
当SP正在运行时,您可以通过V$ACCESS找到调用会话,然后通过V$SESSION获取Oracle用户名、操作系统用户名、发出请求的计算机以及正在调用的程序,这有助于识别源。
若要使用dba_hist_active_sess_history,您的网站必须取得额外费用EM Diagnostic Pack受权的受权。

omvjsjqw

omvjsjqw3#

v$sql视图将同时包含sql和pl/sql的条目,您可能没有看到它的高速缓存。请尝试查看DBA_HIST_SQLTEXT视图。另一个捕获其执行的可靠方法是对此过程执行启用审计。在Oracle中,审计是一个两步操作;首先必须在数据库级别启用扩展审计,然后可以设置审计策略以在执行过程时记录审计事件。

相关问题