《Oracle Applications DBA 基础》- 13 - 性能调整基础

来源:互联网 发布:精品php源码 编辑:程序博客网 时间:2024/05/19 11:45
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          | OC4Jafm          |    5552 | Alive
OC4JGroup:default_group          | OC4J:forms         |    5459 | Alive
OC4JGroup:default_group          | OC4Jacore        |    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。