You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何查找Oracle ADF 12c Form后台执行的SQL查询

方案1:启用ADF BC层内置SQL日志
  • 找到你ADF应用部署域的setDomainEnv.sh(Linux)或setDomainEnv.cmd(Windows)文件
  • 在JVM启动参数中添加如下配置,开启ADF业务组件的SQL输出能力:
    -Djbo.debugoutput=console
    -Djbo.logging.showLevel=INFO
    -Djbo.logging.showConnection=true
    -Djbo.logging.showBindParameters=true
    
  • 重启WebLogic域后,所有ADF BC执行的SQL、绑定变量值都会输出到WebLogic对应服务的日志文件中,可以直接匹配操作时间戳筛选对应点击动作触发的SQL
方案2:Oracle EBS端启用表单追踪
  • 登录EBS系统,进入系统管理员职责 > 配置文件 > 系统
  • 查询配置项FND: 启用表单运行时诊断,将当前操作账号对应的配置值设置为是
  • 重新登录EBS后,打开待追踪的ADF Form,点击路径:帮助 > 诊断 > 追踪 > 开启追踪,选择SQL追踪+绑定变量选项
  • 执行点击弹窗等你要追踪的操作后,关闭追踪,系统会直接生成追踪结果页面,可查看所有执行的SQL语句和参数信息
方案3:Oracle数据库层面会话追踪

如果前两种方案不满足需求,可直接从数据库端抓取会话SQL:

  • 先查询ADF应用连接数据库的会话标识,执行SQL:
    SELECT sid, serial#, username, machine, program 
    FROM v$session 
    WHERE username = 'ADF应用连接数据库的用户名' 
    AND (program LIKE '%ADF%' OR machine = 'ADF应用部署服务器IP');
    
  • 对目标会话开启10046追踪(级别12会包含SQL语句、绑定变量、等待事件全量信息):
    EXEC DBMS_SYSTEM.SET_SQL_TRACE_IN_SESSION(sid => 目标SID, serial# => 目标SERIAL#, sql_trace => true);
    
  • 执行完待追踪的操作后,关闭会话追踪:
    EXEC DBMS_SYSTEM.SET_SQL_TRACE_IN_SESSION(sid => 目标SID, serial# => 目标SERIAL#, sql_trace => false);
    
  • 生成的trc追踪文件存放在数据库USER_DUMP_DEST目录下,用tkprof工具格式化后即可查看完整的SQL执行序列。

内容的提问来源于stack exchange,提问作者silent_explorer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.11 19:15:00