您的位置:首页 > 数据库 > Oracle

《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。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: