metalink上的文章较全的,中文的可参考我的博客EBS开发技术之trace http://blog.csdn.net/cai_xingyun/article/details/17250971



This document provides instructions on how to create and retrieve Forms and Database level SQL trace. The example details below are for receiving processes,
but these instructions are also applicable for other forms and concurrent processes. 




Please reference Note 299497.1 for instructions on how to gather debug information for receiving processes.

Forms Level Trace

Forms level trace is SQL trace generated before the transaction is saved on a form. It is enabled from the form and captures SQL code related to the execution of the form.  This should be used when the error occurs on the form BEFORE clicking on the save. 
Typically these are FRM or APP errors but there could be other varying error messages.



Steps to generate forms level trace:

  1. Navigate to the point in the application right before you are experiencing the problem.
  2. Turn trace on by: Help > Diagnostics > Trace > Trace with Binds (May require password)
  3. A pop-up message with trace file location and name will be displayed. Note the filename and path.
  4. Duplicate the error and then stop immediately afterwards.

    Help > Diagnostics > Trace > No Trace
  5. Retrieve trace file from the user_dump_dest, which can be located as follows:

    select value from V$PARAMETER where name like 'user%';
  6. Run the trace file through tkprof as follows:

    tkprof <filename>.trc <filename>.out explain=<found username/password>

    example: tkprof file1234.trc file1234.out explain=<apps/apps>
Only if tracing for a performance issue on the form, enable trace with binds and waits.

Database Level Trace

Database level trace is SQL trace generated after the transaction is saved and receiving transaction processor is processing the transaction. This should be generated when the error occurs AFTER clicking Save to commit the transaction on a receiving form.
In Online receiving mode typically "rvtptcontrol failed" error occurs.  For Immediate or Batch receiving modes the error(s) is recorded in the receiving transaction processor concurrent request log file. There are many ways to gather a database trace file
for receiving processes.

Methods to Generate Database Level Trace

1. Profile PO: Enable SQL Trace for Receiving Processor

Setting this profile to ‘Yes’ will generate a Event 10046 Level 12 database level trace for the receiving transaction being saved.



Steps to generate trace file:

  1. Set profile at user level

    • Bring up the Core application - System Administrator responsibility
    • Go to Profile > System
    • Check off the USER box - and enter the username of the user for whom trace needs to be enabled
    • Search on the following profile option - 'PO: Enable SQL Trace for Receiving Processor'
    • At the user level, set the value of the profile to 'Yes'
  2. Once the profile is set, please change responsibilities and directly go and reproduce the problem.

    Error message will be displayed on the form only in online mode. In Immediate / Batch mode, the error will be recorded in the concurrent request log file of Receiving Transaction Processor.
  3. Unset the profile before logging off the applications.

Location of the trace file:

  1. If the transaction was done in Online mode, then the trace file can be found in user_dump_dest, which can be located as follows:

select value from V$PARAMETER where name like 'user%';

  1. If the transaction was done in Immediate or Batch mode, the SQL statement from method below (Enable trace for concurrent program) can be used to retrieve the location and name of the trace file.

2. Enable trace for the concurrent program

This can be used only when saving the transaction in Immediate or Batch mode. This method generates an Event 10046 Level 1 trace only with no bind variables and no waits.



Steps to generate trace file:

  1. Enable trace for concurrent program:

    • Bring up the Core application - System Administrator responsibility
    • Goto Concurrent > Program > Define
    • Query the concurrent program (shortname = RVCTP)
    • Check the trace box to enable trace and Save
  2. Change responsibilities and directly go and reproduce the problem. In this method, the error message, if any, will not be displayed on the form.
  3. Navigate to View > Requests and confirm that Receiving Transaction Processor has completed. The request may or may not end in error. The request log file should show an error. Note the Concurrent Request Id.

Location of the trace file:



The trace file can be located using the SQL below. Use the concurrent request id noted in step 3.

SQL>
prompt
undefine request_id
accept request_id
prompt 'Please enter the concurrent request id of Receiving Transaction Processor:'
prompt column traceid format a8
column tracename format a80
column user_concurrent_program_name format a40
column execname format a15
column enable_trace format a12
set lines 80
set pages 22
set head off SELECT 'Request id: '||request_id ,
'Trace id: '||oracle_Process_id,
'Trace Flag: '||req.enable_trace,
'Trace Name:
'||dest.value||'/'||lower(dbnm.value)||'_ora_'||oracle_process_id||'.trc',
'Prog. Name: '||prog.user_concurrent_program_name,
'File Name: '||execname.execution_file_name|| execname.subroutine_name ,
'Status : '||decode(phase_code,'R','Running')
||'-'||decode(status_code,'R','Normal'),
'SID Serial: '||ses.sid||','|| ses.serial#,
'Module : '||ses.module
from fnd_concurrent_requests req, v$session ses, v$process proc,
v$parameter dest, v$parameter dbnm, fnd_concurrent_programs_vl prog,
fnd_executables execname
where req.request_id = &request_id
and req.oracle_process_id=proc.spid(+)
and proc.addr = ses.paddr(+)
and dest.name='user_dump_dest'
and dbnm.name='db_name'
and req.concurrent_program_id = prog.concurrent_program_id
and req.program_application_id = prog.application_id
and prog.application_id = execname.application_id
and prog.executable_id=execname.executable_id;

3. Enable profile ‘Initialization SQL Statement – Custom’

This method should be used when there is requirement to capture trace for processes in related products like INV, OM, WIP etc. initiated by Receiving Transaction Processor. This method enables and Event 10046 Level 12 database trace for the entire session
of the user for whom the profile is enabled. The session can be linked to an online Form, a Concurrent Program, or any other piece of code that requires accessing the database.  Hence, this method must be used carefully as it can generate many trace files
as user navigates through the applications.



Steps to generate trace file :

  1. Enable trace for a specific user:

    • Bring up the Core application - System Administrator responsibility
    • Move to Profile/System
    • Check off the USER box - and enter the username of the user for whom trace needs to be enabled
    • Search on the following profile option - 'Initialization SQL Statement - Custom'
    • Please set this at the user level with the following string:

BEGIN FND_CTL.FND_SESS_CTL('','', '', 'TRUE','','ALTER SESSION SET TRACEFILE_IDENTIFIER='||''''||'RCVTRACE' ||''''||' EVENTS ='||''''|| '10046 TRACE NAME CONTEXT FOREVER, LEVEL 12 '||''''); END;

    • # 1. Cut and paste the above sql statement into the profile value editor. This must be one complete line of text - so may be best to copy the string into notepad prior to putting it into the profile and making sure that there are no special
      characters in the string.



      # 2. String 'RCVTRACE' in the above statement can be changed to any user-defined value. This is the string that will be included in the filename and will help in identifying all the trace files related to a session.
  1. Once the profile is set, please change responsibilities and directly go and reproduce the problem.

    Error message will be displayed on the form only in online mode. In Immediate / Batch mode, the error will be recorded in the concurrent request log file of Receiving Transaction Processor.

Location of the trace file:

  1. Locate the trace file using the following sql in sqlplus. The value is the location of the trace file on the database server

select name, value from v$parameter where name like 'user_dump_dest';

  • Please move to this directory and search for the file having RCVTRACE (or any user-defined value that was specified in the profile value statement) in the filename. There may be more than one trace file created for the session.
  • Ensure that the profile option is unset before exiting the Application. This is a very important step. If this is not unset, unnecessary trace files will be generated.
  • FORM级别和数据库级别的Trace的更多相关文章

    1. 实例级别和类级别的static、构造函数、字段属性的简单介绍

      using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace 实例级别 ...

    2. SQLServer性能优化之---数据库级日记监控

      上节回顾:https://www.cnblogs.com/dotnetcrazy/p/11029323.html 4.6.6.SQLServer监控 脚本示意:https://github.com/l ...

    3. hibernate5学习之理解数据库级并发

      本文作者:苏生米沿 本文地址:http://blog.csdn.net/sushengmiyan/article/details/50551741 当我们谈起隔离的时候,我们总是假定两个物体直接要么隔 ...

    4. SQL SERVER数据库级的触发器

      CREATE TRIGGER [Object_Change_Trigger_DDL] ON database FOR DROP_TABLE AS DECLARE @EventData AS xml; ...

    5. Django Form 实时从数据库中获取数据

      修改 models.py 添加 class UserType(models.Model): caption = models.CharField(max_length=32) 执行命令,生成数据库 p ...

    6. pytest_用例运行级别_模块级

      ''' pytest 参数说明 https://www.jianshu.com/p/7a7432340f02 -x test_fixt_model.py 遇到错误时,停止运行 用-v运行(-v显示运行 ...

    7. 06.SQLServer性能优化之---数据库级日记监控

      汇总篇:http://www.cnblogs.com/dunitian/p/4822808.html#tsql 之前说了一下数据库怎么发邮件:http://www.cnblogs.com/duniti ...

    8. pytest_用例运行级别_函数级

      '''  函数级(setup_function/teardown_function只对函数用例生 效(不在类中)在类中是用该方法不生效 ''' import pytest def setup_mod ...

    9. 【事务隔离级别】数据库事务隔离级别-UNDERSTANDING ISOLATION LEVELS

      参考链接:ISOLATION LEVELS ISOLATION LEVELS In a database system, concurrent transactions are processed i ...

    随机推荐

    1. [ Java学习基础 ] Java构造函数

      构造方法是类中特殊方法,用来初始化类的实例变量,它在创建对象(new运算符)之后自动调用. Java构造方法的特点如下: 构造方法名必须与类名相同. 构造方法没有任何返回值,包括void. 构造方法只 ...

    2. Delphi Inputbox,InputQuery用法

      Delphi :InputQuery,InputBox用法及区别 function InputQuery(const ACaption, APrompt: string; var Value: str ...

    3. Python中模块之copy的功能介绍

      模块之copy的功能介绍 copy主要分两种: 1.浅拷贝 2.深拷贝 赋值: 在python中赋值算特殊的拷贝,其实赋值可以理解为同一个对象有两个名字,所以当其中一个发生变化,另一个也跟着会变化. ...

    4. Vue2学习(3)

      子组件索引 尽管有 props 和 events,但是有时仍然需要在 JavaScript 中直接访问子组件.为此可以使用 ref 为子组件指定一个索引 ID.例如: <div id=" ...

    5. 算法工程师:双非渣硕是如何获得百度、京东双SP

      本人本科硕士皆双非,和牛客大佬们没得比,目前拿到的还可以的offer就是百度SP和京东SP,都是做的推荐算法,其他的不说了. 先说一下个人经历吧,学校比较水,实验室没有项目,实习经历:腾讯实习+滴滴实 ...

    6. 2018春招实习笔试面试总结(PHP)

      博主双非渣本计算机软件大三狗一枚,眼看着春招就要结束了,现将自己所经历的的整个春招做一个个人总结. 首先就是关于投递计划,博主自己整理了一份各大公司的春招信息,包括网申地址,开始时间,结束时间,以及自 ...

    7. IOI2016Day2. Messy

      题目链接:http://uoj.ac/problem/239 题目大意: 这是一道交互题,交互库维护了一个数据结构,可以存储n为二进制串,一开始你可以向空的数据结构中插入若干二进制串, 接下来这个数据 ...

    8. Jupyter Notebook

      Jupyter Notebook(此前被称为 IPython notebook)是一个交互式笔记本,支持运行 40 多种编程语言.在本文中,我们将介绍 Jupyter notebook 的主要特性,以 ...

    9. OLE:对象的类没有在注册数据库中注册

      我在网上下载了破解版的SAS9.3,用了一段时间之后,今天打开就填出一个提示框:OLE:对象的类没有在注册数据库中注册 激活该对象所需的应用程序不可用.是否用"转换--"将其转换为 ...

    10. 【python标准库模块五】Xml模块学习

      Xml模块 xml本身是一种格式规范,是一种包含了数据以及数据说明的文本格式规范.在json没有兴起之前各行各业进行数据交换的时候用的就是这个.目前在金融行业也在广泛在运用. 举个简单的例子,xml是 ...