EBS的性能调优

摘要:
最后,我们为数据库层/应用程序层的性能调整提供了最佳实践。假设STATISTICS_LEVEL设置为TYPICAL或ALL,并且参数SGA_TARGET未设置为“0”,Oracle将控制内存池,否则将由以下参数控制:DB_CCACHE_SIZESHARED_pool_SIZELARGE_pool_SIZESJAVA_pool_ SIZE4。如果以上所有设置都正常,但仍存在性能缓慢的问题,则必须检查AWR或Statspack报告。如果SQL语句不属于ORACLE标准应用程序模块,例如我们上面看到的“XXPOLCWB”,则需要由客户的开发团队进行调整。在调优SQL语句之后,观察您的性能,看看它是否能让您满意。

metalink    Tuning performance on eBusiness suite (Doc ID 744143.1)

这篇文档描述了如何调查电子商务套件的整体性能下降。特别是,我们强调最普遍的等待时间和如何在AWR/ Statspack 报表中理解它们。在最后,我们提供了在数据库层/应用层性能调优的最佳实践。

1. 确保对eBusiness suite初始化参数的设置是正确的。

 可以用 文档 Note 174605.1中的 bde_chk_cbo.sql脚本来进行检查。然后你可以用下面两个文档中的任何一篇文档来验证结果:


Note 216205.1 Database Initialization Parameters for Oracle Applications 11i

Note 396009.1 Database Initialization Parameters for Oracle Applications Release 12

2.确保Gather Schema Stats定期运行. 这可以被bde_last_analyzed.sql(Note 163208.1)检查, 它按照Schema和索引的验证统计信息.

不要过度收集整个Schema或整个数据库的统计数据,如按日或按周收集.
不要在系统高峰期间对永久性对象做数据收集.
数据收集会将游标无效化。除非您使用 'No Invalidate'选项.
收集统计数据需要字典和对象级锁。
'GATHER_AUTO选项只有对指定了'修改阈值'(DML与表的行数的数量的比值的百分比)的对象时才使用。
如果数据分配没有改变的话计划是不可能改变的.
只使用FND_STATS或者 Gather Schema 和Gather Table Statistics 并发程序。
不要直接使用分析或者dbms_stats命令。因为这是不支持的并且会导致局部最优计划。
为了从SQL*Plus执行FND_STATS相关的存储进程对一个或所有的schemas,或者某个表来收集 CBO stats,请使用如下例子:

# sqlplus apps/<apps_pwd>
SQL> exec fnd_stats.gather_schema_statistics('MRP'); <- One schema
SQL> exec fnd_stats.gather_schema_statistics('ALL'); <- All schemas
SQL> exec fnd_stats.gather_table_stats('MRP','MRP_FORECAST_DATES'); <- One table


3.对与10g数据库的用户,我们推荐启用自动共享内存管理(Automatic shared memory management). 这使得Oracle在SGA范围内控制内存的分配。SGA_TARGET 参数对SGA设定可用的内存的大小。这个参数能够被动态地更改到SGA_MAX_SIZE 参数值的最大值。假定STATISTICS_LEVEL 被设定成 TYPICAL 或者ALL ,并且参数 SGA_TARGET 不被设定成"0",Oracle会控制内存池,否则会被以下参数所控制:

DB_CACHE_SIZE (默认块大小)
SHARED_POOL_SIZE
LARGE_POOL_SIZE
JAVA_POOL_SIZE


4.如果所有上面的设定都是没问题的,但您还是会有性能慢的问题,那么您必须要检查AWR 或 Statspack报表。

-对于10g数据库用户,  请参考 Note 276103.1  PERFORMANCE TUNING USING 10g ADVISORS AND MANAGEABILITY .
-对于9i 数据库用户, 请参考 Note 94224.1 Title: FAQ- Statspack Complete Reference

如何理解AWR 或 Statspack 报表?


在下面的例子中,我们试图给您一些指引,以帮助您理解AWR或Statspack报告.
当您开始分析时,首先应该查看一下 Top 5 timed  events.
您将会从ARW 或者Statspack 报表看到类似以下内容:

Top 5 Timed Events

Event                              Waits Time(s)     Avg Wait(ms) % Total Call Time  Wait Class
db file sequential read            11,948,893         56,405          535.1      User I/O
db file scattered read             8,992,348          32,431          420.2      User I/O
enq: TX - row lock contention      10,697 31,327      2,929           19.5      Application
CPU time                                              23,634           7.9


在上面的例子中,db file sequential read 是第一个等待事件。db文件顺序读出的可能原因是调整得不好的SQL, 然后您需要到AWR中去进一步的研究 SQL ordered by Reads , 您将会看到如下信息:

Physical Reads Executions Reads per Exec %Total CPU Time (s) Elapsed Time (s) SQL Id SQL Module SQL Text
9,889,217 1,089 9,081.01 12.42 537.78 1774.66 73gnca4jdqv67 XXPOLCWB SELECT XCD.CHARGE_LINE_ID, XCD...
9,683,142 1,089 8,891.77 12.16 520.62 1761.63 9u72nudw7csmy XXPOLCWB SELECT 1 FROM XXPO_LC_CHARGE...
8,761,131 50 175,222.62 11.00 641.13 10598.91 g0g2sj2by3p75 JDBC Thin Client BEGIN WF_EVENT.LISTEN ( p_ag...

检查排在前面的SQL语句。如果其中的SQL语句不属于ORACLE标准应用模块的像上面我们看到的'XXPOLCWB',那么这就需要由客户的开发团队对其进行调优。
如果其中的SQL语句有属于ORACLE标准应用模块的像 GL, PO , FND 或者 WF,那么应由ORACLE每个对应的产品组进行研究。
当对SQL语句调优后,观察您的性能并且看是否是会让您满意。
当性能是好的时候,我们也会推荐您产生一下ARW 或者Statspack 报表,当您再遇到性能问题是,这会个您一个数字比照基准。
在其他情况您会看到 CPU time 是最高等待事件, 那么您要对SQL ordered by CPU Time 进行进一步的研究。所以您需要按照上面一样的方法来分析。

在下面的表格中,我们收集最常见的等待事件,并给出了一个诊断概览, 它在下面的查看中是有用的.

常见的等待事件


等待事件 描述 范围 检查
db file sequential read 这个会话已经发起了一个I/O请求来从数据文件里读取一个块到缓冲区缓存并且等待到操作完成。这种情况通常发生在索引查找或通过ROWID从表中读取已不在内存中的所需数据块时 I/O SQL 调优
查看AWR/Statspack中按读排序的排在前面的SQL

db file scattered read 这个会话已经发起了一个I/O请求来从一个数据文件里读取一系列的连续块到缓冲区缓存并且等待到操作完成。特别的这会发生在全表扫描或快速全索引扫描过程中。 I/O SQL 调优
查看AWR/Statspack中按获取和读取排序的排在前面的SQL

物理读取的段

检查会话中表空间I/O数据并且确保对那个top表空间的平均读取时间要小于20分钟。

Buffer busy waits
会话要访问一个数据块,要么是:
1.当前不在内存中,但另一个进程已经发起了读取块到内存的I/O请求,或者

2.在内存中但在一个不兼容的模式下(例如,另一个会话已经更新了块但没有提交),所以我们需要从还原段段中重建块

在任何一种情况下,是指至少有两个会话在为同一个块竟争,或者我们所说的有一个‘热块’


缓冲区高速缓存
按缓冲区忙等待查看段统计数据

请参照 Note.163424.1 How To Identify a Hot Block Within The Database Buffer Cache

Library cache
闩锁争用的症状往往是由于一个合法的问题,如非共享的SQL,执行全表或全索引扫描的次优SQL,动态对象的创建/删除等

因此有太多的解析或者没有共享的SQL


共享池/闩锁
查看AWR报表的闩锁数据部分来判断热闩锁。跟踪一些waiter and holder sessions来判断实际的原因和SQL语句。按照Parse Calls排序查看AWR或者Statspack SQL。

使用文档Note 62143.1中'Useful SQL for looking at Shared Pool problems'中的语句来鉴别出有问题的SQL

Enque waits (enq:)
 

取决于enq 类型:

TX Transaction Lock 
总体来说是由于应用或者表的设置问题。请参照Note 62354.1 中能引起TX lock waits的案例情况。


TM DML enqueue 

总体来说是由于应用问题,特别是如果外键约束没有被索引.以下两篇文章描述了TM locking相关的参照完整性问题

Note 38373.1 

Note 33453.1 

ST Space management enqueue 

通常是由于有太多的空间管理引起的(例如:小的,很多的排序问题..)
更多关于ST enqueue 的信息请查看Note 33567.1


Locks 请看下面的部分: enqueue,  row lock & ITL waits


 

性能调优的最佳实践


数据库层

请参照note  244040.1 Recommended Performance Patches for the Oracle E-Business Suite.
有几种优化相关的修补程序需要应用在版本10.2.0.(2/3)上.请参照Note <a href="https://support.us.oracle.com/oip/faces/secure/km/DocumentDisplay.jspx?id=244040.1" a="" <="">
将EBusiness Suite转换成OATM表空间模型。请参照Note 404954.1How to run OATM migration utility. 


应用层

内部用户部署socket模式:R12: 请参照Note 384241.1. 
启用Forms死客户端检测
      数值以分钟来制定: FORMS_TIMEOUT=10
• 终止死掉的客户端的 fwebmx 进程.
• 启用Forms异常终止手柄
 不要设置 FORMS_CATCHTERM


以上两个变量( FORMS_TIMEOUT 和 FORMS_CATCHTERM ) 能从context 文件.XML更改。 
对11i的用户您可以通过s_f60catchterm 和s_f60time两个参数找到。
对R12的用户您可以通过s_forms_catchterm 和s_forms_time两个参数找到。

 禁止取消查询
• 取消查询会增加中间层和数据库层的CPU
• 关于如何启用并且调优取消查询相关的参数,请参照Note 138159.1
• 禁止取消查询 :  将 预置文件 “FND: Enable Cancel Query” 设置成 ‘No’
 关于调优JVM/OC4J ,请参照Note 362851.1:Guidelines to setup the JVM in Apps 11i
 每两个CPUs使用一个JVM
• 每个CPU不超过一个JVM
• 每个JVM不超过100个并行用户。


 

References
NOTE:33453.1 - Locking and Referential Integrity
NOTE:33567.1 - TECH: ORA-1575 Timeout waiting for Space Management Enqueue
NOTE:34566.1 - WAITEVENT: "enqueue" Reference Note
NOTE:38373.1 - TECH: Example TM(Table Locks) During Referential Integrity Enforcement
NOTE:396009.1 - Database Initialization Parameters for Oracle E-Business Suite Release 12
NOTE:404954.1 - How to run OATM migration utility
NOTE:62143.1 - Troubleshooting: Tuning the Shared Pool and Tuning Library Cache Latch Contention
NOTE:228913.1 - Systemwide Tuning using STATSPACK Reports
NOTE:244040.1 - Oracle E-Business Suite Recommended Performance Patches
NOTE:169935.1 - Troubleshooting Oracle Applications Performance Issues
NOTE:174605.1 - bde_chk_cbo.sql - EBS initialization parameters - Healthcheck
NOTE:216205.1 - Database Initialization Parameters for Oracle Applications Release 11i
NOTE:62354.1 - Waits for 'Enq: Tx - Row Lock Contention' - Wait Scenario Examples
NOTE:153507.1 - Oracle Applications and StatsPack
NOTE:384241.1 - Using Forms Socket Mode with Oracle E-Business Suite Release 12
NOTE:362851.1 - JVM: Guidelines to setup the Java Virtual Machine in Apps Ebusiness Suite 11i and R12
NOTE:138159.1 - Canceling Long Running Queries in Oracle Applications 11i
NOTE:276103.1 - Performance Tuning Using Advisors and Manageability Features: AWR, ASH, ADDM and Sql Tuning Advisor
NOTE:94224.1 - FAQ- Statspack Complete Reference
NOTE:163208.1 - bde_last_analyzed.sql - Verifies CBO Statistics
NOTE:163424.1 - How To Identify a Hot Block Within The Database Buffer Cache.
NOTE:1020008.6 - SCRIPT: FULLY DECODED LOCKING
NOTE:1020012.6 - Script to Return Locking Information (Medium Detail)
NOTE:122371.1 - How To Gather Statistics For Oracle Applications Prior to 11.5.10
---------------------
作者:caixingyun
来源:CSDN
原文:https://blog.csdn.net/cai_xingyun/article/details/17994971
版权声明:本文为博主原创文章,转载请附上博文链接!

免责声明:文章转载自《EBS的性能调优》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇【Solr】——Solr7安装教程寻找一把进入 Alibaba Sentinel 的钥匙(文末附流程图)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

SQL Server 2005服务无法启动的解决方法

本文为原创,如需转载,请注明作者和出处,谢谢!     今天想使用一下SQL Server 2005,启动SQL Server Management Studio后,发现连不了数据库了,看了下SQL Server的服务,竟然是停止状态,启动它,但无法启动,但看日志后,发现如下的日志信息: “C:\Program Files\Microsoft SQL Se...

将excel文件的内容导入sql server数据库的方法

1,首先创建一个相应的表,格式保证和excel文件相同。 2,在导入之前,要把数据库安全限制的开关打开。地点是sql server 构成 tool 的 security 构成里面的机能security构成里面的 open row set & open data source 选项打上钩。确定。 3,输入sql语句,执行导入 例子如下 Codeus...

关于Javaweb的比较好用的jar包概述

(连接数据库之前首先要导入这个数据库的驱动jar包 例如mysql 为mysql-connector-java-5.1.46.jar) 关于连接数据库的数据库连接池c3p0  jar包: c3p0-0.9.5-pre1.jar相关依赖有mchange-commons-java-0.2.4.jar    itcast-tools-1.4.jar(这个里面有一...

修改SQL Server2005 sa密码方法

在安装SQL server2005时没有设定sa的秘密,但其又没有默认空密码,所以,修改密码是个问题。 在SQL Server2005下修改sa密码的一种方法如下: 使用SQL Server2005的管理器(SQL Server Management Studio )登入数据库,登入时选择windows身份验证,即可登录,登录后,选中系统数据库,新建如下查...

oracle 的用户管理 sqlplus的常用命令

创建用户:create user 用户名 identified by 密码; SQL> create user scw identified by 123; 用户已创建。 SQL> 在oracle中创建用户只能由管理员或者具有管理员的权限的用户创建 修改密码: 1.修改自己的密码: SQL> passw; 更改 SCW 的口令 旧口令...

Dubbo系列(3)_官方Demo说明

一、本文目的     通过Dubbo的官方Demo介绍,学会搭建一个简单的Dubbo程序,包括服务端、客户端、接口等。 Demo地址:https://github.com/alibaba/dubbo/tree/master/dubbo-demo 二、Demo概况      1、Demo分为三个项目             a) dubbo-demo-...