How to Enable Trace or Debug for APIs executed as SQL Script Outside of the Applications ?
In this Document
| Goal |
| Solution |
| 1: How do you enable trace for an API when executed from a SQL script outside of Oracle Applications ? |
| 2: How do you get debug log for an API when executed from a SQL script outside of Oracle Applications ? |
| a) For Inventory APIs |
| b) For Bills of Material & Engineering APIs |
| c) For Advanced Product Catalog (APC / PIM / EGO) APIs |
| References |
APPLIES TO:
Oracle Inventory Management - Version 11.5.10.CU2 to 12.1.3 [Release 11.5.10 to 12.1]
Oracle Bills of Material - Version 11.5.10.2 to 12.1.3 [Release 11.5 to 12.1]
Oracle Engineering - Version 11.5.10.2 to 12.1.3 [Release 11.5 to 12.1]
Oracle Product Hub - Version 11.5.10.2 to 12.1.3 [Release 11.5 to 12.1]
Information in this document applies to any platform.
This document includes all versions of 11.5.10 and R12 and later
GOAL
This document addresses the below questions:
1. How do you enable trace for an API when executed from a SQL script outside of Oracle Applications ?
2. How to get the debug log for APIs when executed from a SQL script outside of Oracle Applications ?
a) Inventory APIs
b) Bills of Material and Engineering APIs
c) Advanced Product Catalog (APC / EGO/ PIM) APIs
Note: Debug profiles are specific to modules, but, trace can be enabled for any API by following the steps provided here.
SOLUTION
1: How do you enable trace for an API when executed from a SQL script outside of Oracle Applications ?
ALTER SESSION SET EVENTS '10046 trace name context forever, level 12';
-- Set the trace file identifier, to locate the file on the server
ALTER SESSION SET TRACEFILE_IDENTIFIER = 'API_TRACE';
-- Execute the API from the SQL script, in the same session.
EXEC <procedure name> ;
-- Once the API completes execution, disable trace
ALTER SESSION SET EVENTS '10046 trace name context off';
-- Locate the trace file based on the tracefile identifier
SELECT VALUE FROM V$PARAMETER WHERE NAME = 'user_dump_dest';
-- Generate the tkprof of the trace file
tkprof <trace_File>.trc <tkprof>.out sys=no explain=apps/<apps pwd>
2: How do you get debug log for an API when executed from a SQL script outside of Oracle Applications ?
a) For Inventory APIs
i. Enable INV Debug profiles at User level for the user who would be running the API.
For example:
INV:Debug level = 15
INV: Debug File = /tmp/invdbg_TAR.dbg
For more information, on INV Debug profiles, Please refer to Note 148651.1
ii. Add the below declarations to the sql script calling the API outside of Oracle Applications.
l_user_id NUMBER := -1;
l_resp_id NUMBER := -1;
l_application_id NUMBER := -1;
l_user_name VARCHAR2(30) := 'MFG'; -- user name
l_resp_name VARCHAR2(30) := 'Inventory'; -- responsibility name
iii. Add the below code before the API is called in the SQL script. This will initialize applications context, and will use the values of the debug profiles set for this user.
SELECT user_id
INTO l_user_id
FROM fnd_user
WHERE user_name = l_user_name;
-- Get the application_id and responsibility_id
SELECT application_id, responsibility_id
INTO l_application_id, l_resp_id
FROM fnd_responsibility_vl
WHERE responsibility_name = l_resp_name;
FND_GLOBAL.APPS_INITIALIZE(l_user_id, l_resp_id, l_application_id); -- Mfg / Mfg & Dist Mgr / INV
dbms_output.put_line('Initialized applications context: '|| l_user_id || ' '|| l_resp_id ||' '|| l_application_id );
iv. Now, go ahead and execute the API from the SQL script, this willl create the debug log file with the file name as provided in the profile "INV: Debug File".
You can review step-by-step video here - Video - Trace
and Debug INV API (2:00)
b) For Bills of Material & Engineering APIs
i. Initialize the below parameters to the API:
p_debug => 'Y',
p_output_dir => '/usr/tmp', -- Directory from utl_file_dir
p_debug_filename => 'bom_api_debug.log' -- Debug log filename
);
ii. Now run the API script or procedure created, This will create the debug log in the directory as mentioned in the parameters.
For example:
p_api_version_number => 1.0,
p_init_msg_list => TRUE,
p_bom_header_rec => l_bom_header_rec,
p_bom_revision_tbl => l_bom_revision_tbl,
p_bom_component_tbl => l_bom_component_tbl,
p_bom_ref_designator_tbl => l_bom_ref_designator_tbl,
p_bom_sub_component_tbl => l_bom_sub_component_tbl,
x_bom_header_rec => x_bom_header_rec,
x_bom_revision_tbl => x_bom_revision_tbl,
x_bom_component_tbl => x_bom_component_tbl,
x_bom_ref_designator_tbl => x_bom_ref_designator_tbl,
x_bom_sub_component_tbl => x_bom_sub_component_tbl,
x_return_status => l_return_status,
x_msg_count => l_msg_count ,
p_debug => 'Y',
p_output_dir => '/usr/tmp',
p_debug_filename => 'bom_api_debug.log'
);
You can review step-by-step video here - Video
- Trace and Debug ECO API (2:00)
c) For Advanced Product Catalog (APC / PIM / EGO) APIs
i. Initialize the below parameters to the API:
p_debug_level => 3 -- 0 - No debug, 3 - finest debug information
);
ii. Now run the API script or procedure created, This will create the debug log in the directory (as in 'utl_file_dir' DB parameter, for ex: /usr/tmp)
For example:
l_api_version
, l_object_name
, l_attributes_row_table
, l_attributes_data_table
, l_pk_column_name_value_pairs
, l_class_code_name_value_pairs
, l_user_privileges_on_object
, l_entity_id
, l_entity_index
, l_entity_code
, l_debug_level
, l_init_error_handler
, l_write_to_concurrent_log
, l_init_fnd_msg_list
, l_log_errors
, l_add_errors_to_fnd_stack
, l_commit
, x_failed_row_id_list
, x_return_status
, x_errorcode
, x_msg_count
, x_msg_data
);
How to Enable Trace or Debug for APIs executed as SQL Script Outside of the Applications ?的更多相关文章
- Trace、Debug和TraceSource的使用以及日志设计 .
[-] Trace 和 Debug区别 什么是Listeners 跟踪开关 使用BooleanSwitch开关 使用TraceSwitch开关 使用TraceSource代替Trace和Debug 设 ...
- C#学习笔记14——TRACE、DEBUG和TRACESOURCE的使用以及日志设计
Trace.Debug和TraceSource的使用以及日志设计 .NET Framework 命名空间 System.Diagnostics 包含用于跟踪执行流程的 Trace.Debug 和 ...
- 【转】 C#学习笔记14——Trace、Debug和TraceSource的使用以及日志设计
[转] C#学习笔记14——Trace.Debug和TraceSource的使用以及日志设计 Trace.Debug和TraceSource的使用以及日志设计 .NET Framework 命名空 ...
- Trace和Debug主要用法
#region 日志记录 //System.Diagnostics.Trace.Listeners.Clear(); //System.Diagnostics.Trace.AutoFlush = tr ...
- Oracle Bills of Material and Engineering Application Program Interface (APIs)
In this Document Goal Solution 1. Sample Notes for BOM APIs 2. Datatypes used in these APIs ...
- Oracle Inventory Management Application Program Interface ( APIs)
In this Document Goal Solution References APPLIES TO: Oracle Inventory Management - Version 12 ...
- Oracle Inventory Management Application Program Interface ( APIs) (Doc ID 729998.1)
In this Document Goal Solution References APPLIES TO: Oracle Inventory Management - Version 12.0.0 a ...
- 如何利用RMAN Debug和10046 Trace来诊断RMAN问题?
学习转摘:https://blogs.oracle.com/Database4CN/entry/%E5%A6%82%E4%BD%95%E5%88%A9%E7%94%A8rman_debug%E5%92 ...
- 如何利用RMAN Debug和10046 Trace来诊断RMAN问题?
在做Support的这些年,我很大的收获是掌握了许多troubleshooting问题的方法和工具,对于每一类问题,都可以大体归类出一些诊断方法.无论问题多么复杂,像扒洋葱一样,一层层去掉无 ...
随机推荐
- 剑指架构师系列-Redis集群部署
初步搭建Redis集群 克隆已经安装Redis的虚拟机,我们使用这两个虚拟机中的Redis来搭建集群. master:192.168.2.129 端口:7001 slave:192.168.2.132 ...
- jspacker压缩及解压缩研究(js eval)
起因: 在研究爬虫的时候发现很多网站都出现了同一种方式的js混淆,并且名字都是pde.js,怀疑是使用了同一款混淆工具,所以研究一下. 这款工具叫JS Packer,并不是专门的混淆工具,而是一款js ...
- 【伯乐在线】HashMap的工作原理
本文由 ImportNew - 唐小娟 翻译自 Javarevisited.欢迎加入翻译小组.转载请见文末要求. HashMap的工作原理是近年来常见的Java面试题.几乎每个Java程序员都知道Ha ...
- Spark技术内幕:Shuffle Pluggable框架详解,你怎么开发自己的Shuffle Service?
首先介绍一下需要实现的接口.框架的类图如图所示(今天CSDN抽风,竟然上传不了图片.如果需要实现新的Shuffle机制,那么需要实现这些接口. 1.1.1 org.apache.spark.shuf ...
- Swift基础之Demo包含刷新,加载,网络请求,MVC
Swift中有一个Alamofire第三方是进行网络请求的,它是AFNetworking的作者写的Swift形式,今天先介绍一下,利用pod导入AFNetworking,SVProgressHUD,M ...
- JAVA进阶之旅(二)——认识Class类,反射的概念,Constructor,Field,Method,反射Main方法,数组的反射和实践
JAVA进阶之旅(二)--认识Class类,反射的概念,Constructor,Field,Method,反射Main方法,数组的反射和实践 我们继续聊JAVA,这次比较有意思,那就是反射了 一.认识 ...
- 手把手图文并茂教你发布Android开源库
转载请把头部出处链接和尾部二维码一起转载,本文出自逆流的鱼,文章链接: http://blog.csdn.net/hejjunlin/article/details/52452220 经常逛githu ...
- EXT JS认识EXTJS,第一个EXTJS例子
大部分内容转载自:http://blog.csdn.net/wanghuan203/article/details/8011112 和http://www.cnblogs.com/willick/p/ ...
- Java的LinkedList详解,看源码之后的总结
1. LinkedList实现了一个带表头的双向循环链表: 2. LinkedList是线程不同步的: 3. LinkedList中实现了push.pop.peek.empty等方法,因此Linked ...
- 发现----Android Demo
时间悄悄的走,转眼来实习已经三个月了,三个月的时间,小编慢慢的成长着,从刚开始的电商项目到现在的车段子项目,小编在走过一个又一个项目的同时,走过了一个又一个战胜自己的奇迹,每次遇到一个新的技术点,小编 ...