我有一个Oracle PL/SQL过程monitoring_5_min,据我所知,它必须每5分钟由某个外部接口(可能是Web服务)或某个调度作业调用一次。是否有任何Oracle系统方法可以找出调用该过程的对象?可能是一些系统视图?我尝试从v$sql中选择,但似乎它只包括SQL调用,而不包括PL/SQL。
t98cgbkg1#
您可以查询v$session以获取所有详细信息:
select * from v$session where sid = sys_context('userenv','sid')
另请查看OWA_UTIL.WHO_CALLED_ME
OWA_UTIL.WHO_CALLED_ME
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受权的受权。
omvjsjqw3#
v$sql视图将同时包含sql和pl/sql的条目,您可能没有看到它的高速缓存。请尝试查看DBA_HIST_SQLTEXT视图。另一个捕获其执行的可靠方法是对此过程执行启用审计。在Oracle中,审计是一个两步操作;首先必须在数据库级别启用扩展审计,然后可以设置审计策略以在执行过程时记录审计事件。
3条答案
按热度按时间t98cgbkg1#
您可以查询v$session以获取所有详细信息:
另请查看
OWA_UTIL.WHO_CALLED_ME
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受权的受权。
omvjsjqw3#
v$sql视图将同时包含sql和pl/sql的条目,您可能没有看到它的高速缓存。请尝试查看DBA_HIST_SQLTEXT视图。另一个捕获其执行的可靠方法是对此过程执行启用审计。在Oracle中,审计是一个两步操作;首先必须在数据库级别启用扩展审计,然后可以设置审计策略以在执行过程时记录审计事件。