EBS - 查询会话SQL

本文介绍了一种在Oracle数据库中使用PL/SQL捕获特定会话ID(SID)所执行SQL语句的方法,通过定义游标遍历v$sqltext_with_newline和v$sessions视图来获取SQL文本,再通过v$sql_bind_capture视图获取SQL绑定参数,最后将SQL语句及其参数输出,适用于深入理解SQL执行过程和调优。
DECLARE
  v_sid NUMBER := 333; --SID

  CURSOR sql_lines IS
    SELECT sql_text, t.sql_id
      FROM v$sqltext_with_newlines t, v$session s
     WHERE t.address = s.prev_sql_addr
       AND s.sid = v_sid
     ORDER BY t.piece;

  CURSOR paras(p_sql_id VARCHAR2) IS
    SELECT DISTINCT bc.name, bc.value_string
      FROM v$sql_bind_capture bc
     WHERE bc.sql_id = p_sql_id
       AND bc.was_captured = 'YES'
     ORDER BY bc.name;

  v_sql_id VARCHAR2(100);
  v_sql    VARCHAR2(30000);
BEGIN
  FOR sql_line IN sql_lines LOOP
    v_sql    := v_sql || sql_line.sql_text;
    v_sql_id := sql_line.sql_id;
  END LOOP;
  dbms_output.put_line('SQL');
  dbms_output.put_line('-----------------------------------------');
  dbms_output.put_line(v_sql);
  dbms_output.put_line('');
  dbms_output.put_line('');
  dbms_output.put_line('Parameter');
  dbms_output.put_line('-----------------------------------------');
  FOR para IN paras(v_sql_id) LOOP
    dbms_output.put_line(para.name || ' = ' || para.value_string);
  END LOOP;
END;

1.获取用户会话ID,“帮助”-->“关于”,注意要配置个人用户的配置文件 “FND:诊断” =“是”

2.执行看的LOV,或其他会触发SQL语句的操作

3..执行SQL脚本

4.查看output,获得完整SQL

### 查询快码设置与配置的方法 在 Oracle EBS 系统中,查询快码(Lookups)的设置和配置通常涉及通过数据库表直接查询或使用系统提供的界面进行查看。快码是系统中用于定义静态列表的核心机制,广泛应用于数据验证、字段取范围定义等场景。根据快码的类型,其的来源可以是集(Value Set),也可以是 FND_LOOKUP_VALUES 等基表中的数据。 #### 查询快码设置的 SQL 方法 可以通过查询 FND_LOOKUP_TYPES、FND_LOOKUP_TYPES_TL 和 FND_LOOKUP_VALUES 表来获取快码的详细信息。例如,若要查询名为 'CREDIT_CHECK_STATUS' 的快码类型的所有可用及其描述信息,可使用如下 SQL 语句: ```sql SELECT B.APPLICATION_ID, B.LOOKUP_TYPE, V.LOOKUP_CODE, V.MEANING, V.DESCRIPTION, V.TAG, V.ATTRIBUTE_CATEGORY, V.ATTRIBUTE1, V.ATTRIBUTE2 FROM FND_LOOKUP_TYPES_TL T, FND_LOOKUP_TYPES B, FND_LOOKUP_VALUES V WHERE B.LOOKUP_TYPE = T.LOOKUP_TYPE AND B.SECURITY_GROUP_ID = T.SECURITY_GROUP_ID AND T.LOOKUP_TYPE = V.LOOKUP_TYPE AND V.LANGUAGE = USERENV('LANG') AND B.VIEW_APPLICATION_ID = T.VIEW_APPLICATION_ID AND T.LANGUAGE = USERENV('LANG') AND B.LOOKUP_TYPE = 'CREDIT_CHECK_STATUS'; ``` 此查询语句可以返回快码的代码(LOOKUP_CODE)、含义(MEANING)、描述(DESCRIPTION)以及扩展属性(ATTRIBUTE1、ATTRIBUTE2)等信息,适用于快速定位和分析特定快码的配置内容[^1]。 #### 使用 EBS 界面查询快码配置 除了通过 SQL 查询快码信息外,还可以通过 EBS 系统提供的图形化界面进行快码的维护和查看。快码的维护通常在 **Application Developer** 模块下的 **Application > Lookups** 路径中进行操作。通过该界面,用户可以查看快码类型(LOOKUP_TYPE)、对应的代码(LOOKUP_CODE)、语言相关的含义(MEANING)以及描述(DESCRIPTION)等详细信息[^2]。 在该界面中,用户不仅可以查看快码,还可以新增、修改或删除快码,适用于需要动态调整快码内容的业务场景。此外,系统还支持通过 API 的方式对快码进行操作,例如使用 `fnd_lookup_types_pkg.insert_row` 过程插入新的快码类型[^4]。 #### 快码配置的调试与测试 在实际应用中,为了确保快码配置的正确性,通常需要进行调试和测试。可以通过查询 `v$session` 视图获取当前会话SQL 地址信息,从而跟踪快码相关的数据库操作。例如,执行以下 SQL 语句可以获取当前会话SQL 地址: ```sql SELECT s.prev_sql_addr, s.sql_address FROM v$session s WHERE s.sid = 84; ``` 该查询可用于定位快码操作过程中涉及的 SQL 语句,帮助开发人员分析快码的执行路径和潜在问题[^3]。 ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值