nidr 发表于 2019-2-3 12:29:27

Oracle EBS环境下查找数据源(OAF篇)

  在OAF页面的查找后台的数据源相对于在Form中显得更加麻烦,同时也无法像Form中那样能够较为准确的定位,但是也能够查找出大部分的内容。
  本文介绍如何使用OAF提供的诊断功能来快速查找OAF页面对应的数据库对象:

[*]关于本页功能(About this Page)
[*]SQL Trace功能
  一、使用关于本页功能(About this Page)
  前提:在用户层设置预制文件:Personalize Self-Service Defn 的值为Yes 来启动个性化模式
  步骤:

[*]点击OAF页面左下角的“About this Page”链接
[*]进入关于页面中,展开Page Definition部分的页面结构,页面的结构会随着页面定义有所不同
[*]或者选择Business Component References Details部分中的View Object定义
[*]查看View Object列中的信息,组件引用的视图对象会有链接,直接点击链接进入视图对象页面
[*]视图对象详细信息中的SQL就是创建视图对象的语句,查看它就可以知道页面组件对应的后台数据源
[*]通过选择不同的视图对象查看对应的定义
  实例(找出PO Document Types页面中对应的后台数据库对象):

[*]点击Document Types页面左下角的About this Page链接http://oracleseeker.com/files/2009/08/po-document-types-thumb1.png
[*]进入About Page页面后,展开页面定义部分为如下的结构http://oracleseeker.com/files/2009/08/oaf-page-definition-thumb.png
[*]点击PoAllDocumentTypesVO视图对象链接进入视图对象定义详细页面http://oracleseeker.com/files/2009/08/oaf-view-objects-details-thumb.png
[*]另外也可以在About Page页面中展开Business Component References Details,然后选择下面的视图对象:oracle.apps.po.setup.server.PoAllDocumentTypesVOhttp://oracleseeker.com/files/2009/08/oaf-bc-vo-thumb.png
[*]通过视图对象详细页面可以得到SQL
view plaincopy to clipboardprint?
[*]SELECT podocumenttypeseo.document_type_code,
[*]       podocumenttypeseo.org_id,
[*]       podocumenttypeseo.document_subtype,
[*]       podocumenttypeseo.document_template_code,
[*]       podocumenttypeseo.contract_template_code,
[*]       xtv1.template_name AS document_types_layout,
[*]       xtv2.template_name AS contract_terms_layout,
[*]       plc1.displayed_field || ' ' || plc2.displayed_field AS TYPE,
[*]       decode(podocumenttypeseo.document_type_code,
[*]            'RFQ',
[*]            decode(podocumenttypeseo.document_subtype,
[*]                     'STANDARD',
[*]                     'DeleteDisabled',
[*]                     'CATALOG',
[*]                     'DeleteDisabled',
[*]                     'BID',
[*]                     'DeleteDisabled',
[*]                     'DeleteEnabled'),
[*]            'QUOTATION',
[*]            decode(podocumenttypeseo.document_subtype,
[*]                     'STANDARD',
[*]                     'DeleteDisabled',
[*]                     'CATALOG',
[*]                     'DeleteDisabled',
[*]                     'BID',
[*]                     'DeleteDisabled',
[*]                     'DeleteEnabled'),
[*]            'DeleteDisabled') AS delete_switcher,
[*]       podocumenttypeseo.type_name
[*]FROM po_document_types_all_vl podocumenttypeseo,
[*]       xdo_templates_vl         xtv1,
[*]       xdo_templates_vl         xtv2,
[*]       po_lookup_codes          plc1,
[*]       po_lookup_codes          plc2
[*] WHERE xtv1.template_code(+) = podocumenttypeseo.document_template_code
[*]   AND xtv2.template_code(+) = podocumenttypeseo.contract_template_code
[*]   AND podocumenttypeseo.document_type_code = plc1.lookup_code
[*]   AND plc1.lookup_type = 'DOCUMENT TYPE'
[*]   AND podocumenttypeseo.document_subtype = plc2.lookup_code
[*]   AND plc2.lookup_type = decode(podocumenttypeseo.document_type_code,
[*]                                 'REQUISITION',
[*]                                 'REQUISITION TYPE',
[*]                                 'RFQ',
[*]                                 'RFQ SUBTYPE',
[*]                                 'QUOTATION',
[*]                                 'QUOTATION SUBTYPE',
[*]                                 'DOCUMENT SUBTYPE')
[*]   AND podocumenttypeseo.org_id = :1
SELECT podocumenttypeseo.document_type_code,podocumenttypeseo.org_id,podocumenttypeseo.document_subtype,podocumenttypeseo.document_template_code,podocumenttypeseo.contract_template_code,xtv1.template_name AS document_types_layout,xtv2.template_name AS contract_terms_layout,plc1.displayed_field || ' ' || plc2.displayed_field AS TYPE,decode(podocumenttypeseo.document_type_code,'RFQ',decode(podocumenttypeseo.document_subtype,'STANDARD','DeleteDisabled','CATALOG','DeleteDisabled','BID','DeleteDisabled','DeleteEnabled'),'QUOTATION',decode(podocumenttypeseo.document_subtype,'STANDARD','DeleteDisabled','CATALOG','DeleteDisabled','BID','DeleteDisabled','DeleteEnabled'),'DeleteDisabled') AS delete_switcher,podocumenttypeseo.type_nameFROM po_document_types_all_vl podocumenttypeseo,xdo_templates_vl         xtv1,xdo_templates_vl         xtv2,po_lookup_codes          plc1,po_lookup_codes          plc2WHERE xtv1.template_code(+) = podocumenttypeseo.document_template_codeAND xtv2.template_code(+) = podocumenttypeseo.contract_template_codeAND podocumenttypeseo.document_type_code = plc1.lookup_codeAND plc1.lookup_type = 'DOCUMENT TYPE'AND podocumenttypeseo.document_subtype = plc2.lookup_codeAND plc2.lookup_type = decode(podocumenttypeseo.document_type_code,'REQUISITION','REQUISITION TYPE','RFQ','RFQ SUBTYPE','QUOTATION','QUOTATION SUBTYPE','DOCUMENT SUBTYPE')AND podocumenttypeseo.org_id = :1  二、使用SQL Trace功能
  只要发生数据库操作,都可以使用SQL Trace功能来跟踪数据库操作统计,OAF页面中也需要进行数据库的增删查操作,因此可以可以使用它来跟踪。
  前提:在用户层设置预制文件:FND: Diagnostics 的值为Yes,进入诊断模式
  步骤:

[*]选择Diagnostic为Set Trace Level,点击Go按钮
[*]设置SQL Trace的级别
[*]进入OAF页面中进行操作,并保证操作有查询、插入、更新或删除动作
[*]操作完成后,再次进入关闭Trace模式,记录生成的Trace>
[*]以数据库操作系统用户,如ora02登陆数据库服务器
[*]使用Tkprof工具格式化Trace结果文件输出
[*]查看被格式化过的Trace文件
[*]得出数据源
  实例:

[*]以系统管理员职责,在用户层设置预制文件:FND: Diagnostics 的值为Yes,进入诊断模式http://oracleseeker.com/files/2009/08/fnd-diagnostics-profile-thumb.png
[*]以预置文件设置的同一用户登录首页,在页面的顶部点击Global按钮 Diagnosticshttp://oracleseeker.com/files/2009/08/oaf-diagnostics-button-thumb.png
[*]根据需要,选择Trace打头的几个选项来进入SQL Trace模式,点击Save按钮http://oracleseeker.com/files/2009/08/oaf-set-trace-level-thumb.png
[*]进入PO Document Types页面更新Forward Method后保存http://oracleseeker.com/files/2009/08/update-document-type-thumb.png
[*]再次进入Diagnostics关闭Trace,记录下生成的最后一个Trace>http://oracleseeker.com/files/2009/08/oaf-disable-trace-thumb.png
[*]使用下面的SQL查询出trace文件的路径  SELECT value
  FROM v$parameter
  WHERE name = ‘user_dump_dest’;
  VALUE
  ———————————————————————–
  /d02/db/tech_st/11.1.0/admin/VIS02_ebs006/diag/rdbms/vis02/VIS02/trace
[*]以数据库操作系统用户(ora02)Telnet到数据库服务器,运行如下命令  $ cd /d02/db/tech_st/11.1.0/admin/VIS02_ebs006/diag/rdbms/vis02/VIS02/trace
  $ ls -al *16456*
  -rw-r–r– 1 ora02 dba 116421 Aug 11 17:48 16456_234_1.output
  -rw-r–r– 1 ora02 dba 502101 Aug 11 17:35 VIS02_ora_16456_234.trc
  -rw-r–r– 1 ora02 dba 17288 Aug 11 17:35 VIS02_ora_16456_234.trm
  $ tkprof VIS02_ora_16456_234.trc 16456_234_1.output
[*]上面命令生成16456_234_1.output文件,从服务器下载文件后,找出文件中的UPDATE语句,其中对ICX类型的更新动作无需关注,16456_234_1.output文件样例
[*]找到如下的UPDATE语句
    UPDATE po_document_types_all_b podocumenttypeeo
[*]   SET last_update_date   = :1,
[*]       last_updated_by      = :2,
[*]       forwarding_mode_code = :3,
[*]       last_update_login    = :4
[*] WHERE org_id = :5
[*]   AND document_type_code = :6
[*]   AND document_subtype = :7

页: [1]
查看完整版本: Oracle EBS环境下查找数据源(OAF篇)