Oracle中如何通过DBMS_SCHEDULER作业获取创建它的会话SID?
能否从DBMS_SCHEDULER运行的作业中识别创建会话的SID?
答案是不能,仅依赖Oracle自带的元数据视图无法直接获取创建作业的会话SID,具体原因如下:
DBA_SCHEDULER_JOBS及其关联视图仅记录作业的创建者、创建时间、最后更新时间等基础信息,不会存储创建该作业时的会话SID。V$SESSION仅保留当前活跃或近期终止的会话数据,作业创建完成后原会话可能已断开,且该视图没有与作业关联的字段,无法追溯。USERENV函数只能获取当前执行会话的信息,无法回溯到作业创建时的会话。
若需实现该需求,不使用显式传递方式的前提下,只能通过审计机制间接获取:
- 启用针对
DBMS_SCHEDULER.CREATE_JOB操作的审计,审计日志(如DBA_AUDIT_TRAIL或UNIFIED_AUDIT_TRAIL)会记录执行创建操作的会话SID。后续可通过作业的创建时间、创建者等信息关联审计记录,匹配出对应的SID。
内容的提问来源于stack exchange,提问作者Rusty
相关产品推荐
相关产品推荐

