《Oracle Applications DBA 基础》- 13 - 性能调整基础
2013-10-11 15:12
736 查看
《Oracle Applications DBA
基础》- 13 - 性能调整基础
========================================
性能影响用户对系统的体验,所以显得很重要,不过因为涉及的地方比较多,
很难一下掌握,下面只是对于Oracle Applications,列出一些通常注意的地方,
包括从应用服务器到后台数据库。
性能调整自然会涉及不同的参数,具体要设什么值,就要看具体情况具体分析。
1. 应用服务器( technology stack)方面
Technology stack 方面的范围也比较广, 下面分点列出.
1.1 JVM
Oracle Applications 11i 和 R12 都有着 大量的功能用 Java 实现, 所以JVM的调优要考虑,
但一般来说,不是太复杂。主要要点:
- JVM的数量
By default, R12 有如下的JVM:
[applvis@mis scripts]$ ./adopmnctl.sh status|grep OC4J
OC4JGroup:default_group | OC4J
afm | 5552 | Alive
OC4JGroup:default_group | OC4J:forms | 5459 | Alive
OC4JGroup:default_group | OC4J
acore | 5365 | Alive
一般来说,不用启动太多的JVM, 因为Java 是multi thread的, 所以Oracle建议有俩个CPU
才用一个JVM,但如果你的connection 数量非常大,也有很多CPU, 就可以考虑是否需要
增加 JVM 的数量。Oracle 建议一个JVM 服务不超过100个 active connection。
如果想看详细点JVM的运行情况,你可以做 threaddump ( kill -3 ) 来看当前thread 的状态。
- 合理的memory配置
主要就是heap size (XMX, XMS)的设置,我见过设得太大,导致系统出现paging,
以致很慢的, 也见过设得太小, 导致 OOM error 和 GC 很忙的。所以,设置要适中。
其他还有一些JVM的参数,比如,stack size,perm size , new size, new/old ratio,
parallel collection 等等,就和你用的JVM有关 (AIX, Sun 的之类),比较复杂,
一般先用default 值看看。
如果想看详细点, 就要根据 Garbage Collection的情况。这是所有JVM tuning 都一样的,
R12也没什么不同。
GC的信息在 jvm log 中,参见有关的jvm_start_options。
-Xloggc:/u02/inst/apps/PROD_mis/logs/ora/10.1.3/opmn/jvmoacore.log -XX:+PrintGCDetails
1.2. Apache
有关 Apache 的常用的参数如下。
Timeout
Keeplive
MinSpareServers 5
MaxSpareServers 10
StartServers 3
MaxClients 512
LogLevel
SSLLogLevel
1.3 JDBC
DBC file ( $INST_TOP/appl/fnd/12.0.0/secure/prod.dbc) 控制app tier 与数据库
的JDBC连接 (参考 metalink note <278868.1> AOL/J JDBC Pool in 11i )。
每个 JVM 都会 创建自己的 JDBC Pool. 常用的参数如下,根据具体情况配置:
fnd_jdbc_buffer_decay_interval=300
fnd_jdbc_buffer_decay_size=5
fnd_jdbc_usable_check=false
fnd_jdbc_buffer_min=1
fnd_jdbc_buffer_max=5
FND_JDBC_STMT_CACHE_SIZE=200
FND_MAX_JDBC_CONNECTIONS=500
1.4 其他一些参数:
FND: View Object Max Fetch Size
FND: Enable Cancel Query
ICX: Session Timeout
s_sesstimeout: self service session timeout
s_frmConnectMode:FORMS使用 socket mode 或servlet
具体的参数描述,见metalink note <458282.1> : Context Variables.
2. 数据库方面
数据库方面跟其他应用的数据库调优并没有什么不同。也可以分两个层次:
2.1 Instance level
与R12有关的Instance level参数, 可参看metalink note
<396009.1> Database initilization parameters for Oracle applications for R12
例如, _optimizer_autostats_job=false, 这是因为R12 采用自己的FND_STATS
package 来 collect stats。 sec_case_sensitive_logon = FALSE ,这是因为
R12 不支持11g 的这个新特性。
另外,象 sga/pga 这些参数,也可根据具体情况设置。
2.2 SQL level
象大多数数据库一样, 今时今日,Instance level参数要注意的地方不多,一方面
Oracle 在不断改善,越做越好,另一方面,DBA 也越来越熟悉这些地方。现在,
棘手的问题大多在SQL level。
处理的方法可以从AWR report, v$active_session_history,或trace(concurrent manager
job或 Forms 的 trace, 具体collection方法见前述 )中, 找到问题SQL,然后再具体分析。
一些有用的view:
v$sql/v$sql_plan/v$sql_bind_capture/v$sql_plan_statistics
解决的方法,要不是 open SR (anyway, 这是Oracle 自己开发的程序),要不就用 SQL profile (10g)
SQL plan baseline (11g) 影响 optimizer 以得到正确的plan。
当然,在分析时,要保证 表的statisitcs是 up-to-date,可以这样看:
set serveroutput on
set long 10000
set linesize 132
set pages 1000
exec fnd_stats.verify_stats('GL','GL_DAILY_BALANCES');
===================================================================================================
Table GL_DAILY_BALANCES
===================================================================================================
last analyzed sample_size num_rows blocks
05-17-2008 03:14 6199 61990 4527
Index name last analyzed num_rows LB DK LB/key DB/key CF
----------------------------------------------------------------------------------------------------
GL_DAILY_BALANCES_N1 05-17-2008 03:14 61976 445 33848 1 1 60667
GL_DAILY_BALANCES_N2 05-17-2008 03:14 61976 299 194 1 146 28420
GL_DAILY_BALANCES_N3 05-17-2008 03:14 61976 300 151 1 188 28418
GL_DAILY_BALANCES_N4 05-17-2008 03:14 7547 31 5 6 359 1796
----------------------------------------------------------------------------------------------------
Histogram Stats
Schema Table Name Status last analyzed Column Name
----------------------------------------------------------------------------------------------------
GL GL_DAILY_BALANCES not present TEMPLATE_ID
Legend:
LB : Leaf Blocks
DK : Distinct Keys
DB : Data Blocks
CF : Clustering Factor
PL/SQL procedure successfully completed.
SQL>
3. 应用方面
应用层常见的需要注意的地方:
3.1. Concurrent manager
Concurrent Manager 方面,可以注意以下参数:
cache size: number of pending requestes picked up each time
number of work processes:
Workshift:
另外,一些常见的重要job:
"Purge Concurrent Request and/or Manager Data"
"Purge Obsolete Workflow Runtime Data"
有关 concurrent job 运行情况的表:
fnd_conc_req_stat ( turned off by profile "Concurrent: Collect Request Statistics"
3.2. 产品的参数表
有时候,有些product 的参数表也需要考虑,例如 HR payroll 里的 pay_action_parameters,
需要注意的参数如下:
Threads : number of processes to use in the concurrent manager
Chunk_size : commit unit
4. OS (cpu/memory/disk/network)
Last but not least, 任何tuning 都要考虑 OS 方面的东西,cpu/memory/disk/network。
基础》- 13 - 性能调整基础
========================================
性能影响用户对系统的体验,所以显得很重要,不过因为涉及的地方比较多,
很难一下掌握,下面只是对于Oracle Applications,列出一些通常注意的地方,
包括从应用服务器到后台数据库。
性能调整自然会涉及不同的参数,具体要设什么值,就要看具体情况具体分析。
1. 应用服务器( technology stack)方面
Technology stack 方面的范围也比较广, 下面分点列出.
1.1 JVM
Oracle Applications 11i 和 R12 都有着 大量的功能用 Java 实现, 所以JVM的调优要考虑,
但一般来说,不是太复杂。主要要点:
- JVM的数量
By default, R12 有如下的JVM:
[applvis@mis scripts]$ ./adopmnctl.sh status|grep OC4J
OC4JGroup:default_group | OC4J
afm | 5552 | Alive
OC4JGroup:default_group | OC4J:forms | 5459 | Alive
OC4JGroup:default_group | OC4J
acore | 5365 | Alive
一般来说,不用启动太多的JVM, 因为Java 是multi thread的, 所以Oracle建议有俩个CPU
才用一个JVM,但如果你的connection 数量非常大,也有很多CPU, 就可以考虑是否需要
增加 JVM 的数量。Oracle 建议一个JVM 服务不超过100个 active connection。
如果想看详细点JVM的运行情况,你可以做 threaddump ( kill -3 ) 来看当前thread 的状态。
- 合理的memory配置
主要就是heap size (XMX, XMS)的设置,我见过设得太大,导致系统出现paging,
以致很慢的, 也见过设得太小, 导致 OOM error 和 GC 很忙的。所以,设置要适中。
其他还有一些JVM的参数,比如,stack size,perm size , new size, new/old ratio,
parallel collection 等等,就和你用的JVM有关 (AIX, Sun 的之类),比较复杂,
一般先用default 值看看。
如果想看详细点, 就要根据 Garbage Collection的情况。这是所有JVM tuning 都一样的,
R12也没什么不同。
GC的信息在 jvm log 中,参见有关的jvm_start_options。
-Xloggc:/u02/inst/apps/PROD_mis/logs/ora/10.1.3/opmn/jvmoacore.log -XX:+PrintGCDetails
1.2. Apache
有关 Apache 的常用的参数如下。
Timeout
Keeplive
MinSpareServers 5
MaxSpareServers 10
StartServers 3
MaxClients 512
LogLevel
SSLLogLevel
1.3 JDBC
DBC file ( $INST_TOP/appl/fnd/12.0.0/secure/prod.dbc) 控制app tier 与数据库
的JDBC连接 (参考 metalink note <278868.1> AOL/J JDBC Pool in 11i )。
每个 JVM 都会 创建自己的 JDBC Pool. 常用的参数如下,根据具体情况配置:
fnd_jdbc_buffer_decay_interval=300
fnd_jdbc_buffer_decay_size=5
fnd_jdbc_usable_check=false
fnd_jdbc_buffer_min=1
fnd_jdbc_buffer_max=5
FND_JDBC_STMT_CACHE_SIZE=200
FND_MAX_JDBC_CONNECTIONS=500
1.4 其他一些参数:
FND: View Object Max Fetch Size
FND: Enable Cancel Query
ICX: Session Timeout
s_sesstimeout: self service session timeout
s_frmConnectMode:FORMS使用 socket mode 或servlet
具体的参数描述,见metalink note <458282.1> : Context Variables.
2. 数据库方面
数据库方面跟其他应用的数据库调优并没有什么不同。也可以分两个层次:
2.1 Instance level
与R12有关的Instance level参数, 可参看metalink note
<396009.1> Database initilization parameters for Oracle applications for R12
例如, _optimizer_autostats_job=false, 这是因为R12 采用自己的FND_STATS
package 来 collect stats。 sec_case_sensitive_logon = FALSE ,这是因为
R12 不支持11g 的这个新特性。
另外,象 sga/pga 这些参数,也可根据具体情况设置。
2.2 SQL level
象大多数数据库一样, 今时今日,Instance level参数要注意的地方不多,一方面
Oracle 在不断改善,越做越好,另一方面,DBA 也越来越熟悉这些地方。现在,
棘手的问题大多在SQL level。
处理的方法可以从AWR report, v$active_session_history,或trace(concurrent manager
job或 Forms 的 trace, 具体collection方法见前述 )中, 找到问题SQL,然后再具体分析。
一些有用的view:
v$sql/v$sql_plan/v$sql_bind_capture/v$sql_plan_statistics
解决的方法,要不是 open SR (anyway, 这是Oracle 自己开发的程序),要不就用 SQL profile (10g)
SQL plan baseline (11g) 影响 optimizer 以得到正确的plan。
当然,在分析时,要保证 表的statisitcs是 up-to-date,可以这样看:
set serveroutput on
set long 10000
set linesize 132
set pages 1000
exec fnd_stats.verify_stats('GL','GL_DAILY_BALANCES');
===================================================================================================
Table GL_DAILY_BALANCES
===================================================================================================
last analyzed sample_size num_rows blocks
05-17-2008 03:14 6199 61990 4527
Index name last analyzed num_rows LB DK LB/key DB/key CF
----------------------------------------------------------------------------------------------------
GL_DAILY_BALANCES_N1 05-17-2008 03:14 61976 445 33848 1 1 60667
GL_DAILY_BALANCES_N2 05-17-2008 03:14 61976 299 194 1 146 28420
GL_DAILY_BALANCES_N3 05-17-2008 03:14 61976 300 151 1 188 28418
GL_DAILY_BALANCES_N4 05-17-2008 03:14 7547 31 5 6 359 1796
----------------------------------------------------------------------------------------------------
Histogram Stats
Schema Table Name Status last analyzed Column Name
----------------------------------------------------------------------------------------------------
GL GL_DAILY_BALANCES not present TEMPLATE_ID
Legend:
LB : Leaf Blocks
DK : Distinct Keys
DB : Data Blocks
CF : Clustering Factor
PL/SQL procedure successfully completed.
SQL>
3. 应用方面
应用层常见的需要注意的地方:
3.1. Concurrent manager
Concurrent Manager 方面,可以注意以下参数:
cache size: number of pending requestes picked up each time
number of work processes:
Workshift:
另外,一些常见的重要job:
"Purge Concurrent Request and/or Manager Data"
"Purge Obsolete Workflow Runtime Data"
有关 concurrent job 运行情况的表:
fnd_conc_req_stat ( turned off by profile "Concurrent: Collect Request Statistics"
3.2. 产品的参数表
有时候,有些product 的参数表也需要考虑,例如 HR payroll 里的 pay_action_parameters,
需要注意的参数如下:
Threads : number of processes to use in the concurrent manager
Chunk_size : commit unit
4. OS (cpu/memory/disk/network)
Last but not least, 任何tuning 都要考虑 OS 方面的东西,cpu/memory/disk/network。
相关文章推荐
- 《Oracle Applications DBA 基础》- 14. 从 11i 到 R12的升级
- SQL性能优化调整的几点基础事项_oracle
- 《Oracle Applications DBA 基础》 - 引子
- 《Oracle Applications DBA 基础》 1-2 系统概要及安装
- 《Oracle Applications DBA 基础》- 9 - Concurrent Processing[Z]
- 《Oracle Applications DBA 基础》5- AD 工具 and patching
- 《Oracle Applications DBA 基础》3- 4 系统架构及基本系统管理知识
- 《Oracle Applications DBA 基础》- 7-8 OAM及系统管理
- 《Oracle Applications DBA 基础》- 9 - Concurrent Processing
- 《Oracle Applications DBA 基础》- 9 - Concurrent Processing
- 《Oracle Applications DBA 基础》- 9 - Concurrent Processing
- 《Oracle Applications DBA 基础》- 10 Custom Application Integration
- 《Oracle Applications DBA 基础》- 9 - Concurrent Processing
- 《Oracle Applications DBA 基础》 - 11 - 12 FNDCPASS ,FND_STATS 和 FNDLOAD
- Oracle 提高查询性能(基础)
- Oracle中索引的使用 索引性能优化调整
- 高级SQL优化(一) ——《12年资深DBA教你Oracle开发与优化——性能优化部分
- Oracle中的SQL语句性能调整原则
- Oracle - PGA自动管理原理深入分析及性能调整(7)
- Oracle DBA数据库高级工程师(下部)SQL语言+性能优化+数据复制