ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 第9 章、Oracle 10g 中的性能管理

第9 章、Oracle 10g 中的性能管理

原创 Linux操作系统 作者:红叶DBA 时间:2011-02-28 13:33:23 0 删除 编辑

章、Oracle 10g 中的性能管理

1.          数据库统计

l  时间模型统计:

时间模型相关的视图有:v$sess_time_model v$sys_time_model ,其中DB_TIME 是最重要的时间模型统计,他等于所有会话CPU 时间和等待时间的总和。其中不包括Idle 类的等待。

时间模型的父子关系:

u  后台时间 > 后台CPU 时间。

u  DB 时间 > DB CPU 、链接管理时间、序列加载时间、sql 执行时间、解析时间、PL/SQL 执行时间、inbound PL/SQL rpc 时间、PL/SQL 编译时间、Java 执行时间。

u  解析时间 > 硬解析时间、失败的解析时间。

u  硬解析时间 > 硬解析(共享标准)时间 > 硬解析(绑定不匹配)时间。

u  失败的解析时间 > 失败的解析(超出共享内存)时间

l  等待模型统计:

l  操作系统统计:Oracle 捕获OS 信息并记录在v$osstat 视图中。

l  附加的SQL 统计:

l  数据库度量:

在性能诊断中,v$ 视图中统计值的改动比例(度量)比积累值更重要,Oracle 提供了度量信息的视图:v$sysmetric v$sessmetric v$metricname v$filemetric v$eventmetric v$waitclassmetric  

2.        新的后台进程

l  Oracle 10g 中新增两个后台进程:MMON MMNL 

1.          MMON :(Manageablility Monitor )负责各种可管理性任务,例如指定时间间隔内各种统计信息的快照,MMON 可产生多个从属进程执行任务。

2.        MMNL :(Manageablility Monitor - Lightweight )负责计算各种度量,并且获得每秒活动会话的快照。

3.        AWR Automatic Workload Repository 

l  Oracle 10g 中,AWR 使用MMON 进程收集信息,每隔60min 一次,收集的信息存储在sys 模式中的WRI_ Workload Repository Internal )、WRH_ Workload Repository Historical )、WRM_ Workload Repository Metadata )开头的表中,通过DBA_HIST_ 开头的视图来访问这些表。

l  可以通过EM 访问AWR 信息,或者使用dbms_workload_repository 程序包手工管理AWR 

l  修改快照设置(参数的单位都是min ):

        前面的dbms_workload_repository省略。

.modify_snapshot_settings(interval=>30,retention=>15*1440);

其中:interval 必须是10 分钟到100 年之间的数。但如果设为,则表示禁用快照机制,此时为此参数设置一个巨大数(41050 天)。Retention 必须是1天到100 年之间的数。如果设为,则表示永久保存,此时使用参数40150 天。

可以从dba_hist_wr_control 中查看参数的设置。

l  创建快照,可以使用过程或函数:

使用过程:exec .create_snapshot();

使用函数:select .create_snapshot( ALL ) from dual;

函数返回值是创建的snapshot id ,可选参数ALL TYPICAL 控制快照级别(flush_level )。

l  删除快照,必须提供开始快照和结束快照:

Exec .drop_snapshot_range(low_snap_id=>111,high_snap_id=>222);

使用dba_hist_snapshot 可以列出所有的快照信息。

l  创建基线,必须提供开始和结束的快照号,以及基线名:

使用过程:Exec .create_baseline(start_snap_id=>111,end_snap_id=>222, baseline_name=> xxx );

使用函数:select .create_baseline(111,222, xxx ) from dual;

函数的返回值是基线的编号,基线存在期间,其内部的快照一直被保存。

l  删除基线:exec .drop_baseline( xxx ,true);

其中:xxx 表示基线的名称,true 表示级联删除基线包含的snapshot 

4.        ASH Active Session History 

l  ASH 信息由v$active_session_history 视图可以查看,ASH 的历史信息由AWR 写入到数据文件中,可以从dba_hist_active_sess_history 查看。V$active_session_history 采样的是当前一段时间内的信息,dba_hist_active_sess_history 是对此信息的进一步采集,其基表是WRH$_ACTIVE_SESSION_HISTORY 默认此表一小时刷新一次。

l  ASH 在内存中的缓冲区大小计算公式为:

ASH Buffer=max(min(cpu_count*2M,5%*shared_pool_size,30M),1M)

简化:ASH Buffer=min(cpu_count*2M,5%*shared_pool_size,30M)

l  ASH 相关参数都是隐含参数,使用前必须注意:

1)         _ash_enable :控制是否开启ASH ,如果false ,则禁用ASH 

2)      _ash_disk_write_enable :是否将磁盘信息写入AWR 信息库,如果false ,则不保存历史ASH 信息。

3)      _ash_size :控制ASH 缓冲区的大小。

l  访问ASH 在内存中信息时,也是需要获取解析等相关的锁存器的,如果存在相关锁存器的等待,那么就不能用SQL 语句来访问ASH 信息了,此时可以使用ASHDUMP ,将ASH信息转储成追踪文件(要sysdba 身份):

Oradebug setmypid

Oradebug unlimit

Oradebug dump ashdump 10

Oradebug tracefile_name

l  或者使用alter session 命令达到同样的目的:

Alter session set event  immediate trace name ashdump,level 10 ;

5.        ADDM Automatic Database Diagnostic Monitor ,自动数据库诊断监视器)

l  ADDM 推荐的解决方法主要是为了获取较低的DB 时间。

l  初始化参数statistics_level 必须被设置为typical (默认)、all ,来启用ADDM ,如果设置为basic ,则禁用ADDM 和其他许多功能。

l  还有参数dbio_expected ,此参数不是初始参数,而是ADDM 任务参数,表示读取单个数据块的平均时间,其设置过程为:

l  exec dbms_advisor.set_default_task_parameter

(ADDM ,DBIO_EXPECTED ,30000);

此时dbio_expected=30000 微秒(30 毫秒),这是速度比较慢的磁盘。

可以从dba_advisor_def_parameters 查看此参数的信息。

l  可以使用EM 或者DBMS_ADVISOR 包或者addmrpt.sql 脚本来生成ADDM 报告,生成报告的用户必须具有advisor 权限。

l  使用DBMS_ADVISOR 程序包的具体步骤:

1)         使用create_task 过程创建任务

2)      使用set_task_parameter 设置start_snapshot end_snapshot 参数。

3)      使用execute_task 执行任务

4)      使用get_task_report 获取任务报告。

l  ADDM 相关的视图:

Dba_advisor_findings/log/rationale/recommendations/tasks

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/24465008/viewspace-688097/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2010-08-19

  • 博文量
    54
  • 访问量
    69653