SlideShare une entreprise Scribd logo
1  sur  11
Performance Tuning
Overview
• 系统调优是一个涉及面很宽泛的主题, 它可以
  分为硬件、软件或者按系统层次分显示层、应
  用层、数据库层等. 这一章介绍的是Oracle数
  据库层的调优, 着重于一些工具的使用和系统
  的配置, 包括:
 – 使用自动内存管理(Automatic Memory
   Management)
 – 使用内存顾问程序(Memory Advisor) 配置自动PGA
   内存管理(Automatic PGA Memory Management)
 – 使用SQL调优顾问程序(SQL Tuning Advisor)
 – 使用SQL访问顾问程序(SQL Access Advisor)
Managing Memory
           - Overview & PGA
• Oracle实例的内存管理分为两个部分: PGA内存管理和SGA内存管理. 从9i开
  始实现了对PGA内存的自动管理, 10g实现了对SGA内存的自动管理, 在11g
  中则更进一步允许将PGA和SGA作为一个整体进行自动管理.
• PGA Memory Management
  – 用户会话由客户端进程和服务端进程组成, 与服务端进程相关联的是PGA内存,
    这是每一个会话私有的. PGA内存用于存储与会话相关的数据, 包括:
     • 临时表数据(temporary tables)
     • 排序临时数据(sorting rows)
     • 合并位图(merging bitmaps)
     • 变量(variables)
     • 调用堆栈(call stack)
    对于会话数据, 有的必须使用PGA内存, 比如调用堆栈; 另外的数据在PGA内存不
    够的情况下会使用磁盘空间作为临时的存储, 比如临时表空间.
  – 在11g版本中PGA内存支持手动管理, 但这只是为了向后兼容. 使用如下两个参
    数启用PGA内存的自动管理:
     • WORKAREA_SIZE_POLICY
     • PGA_AGGREGATE_TARGET
    第一个参数的默认值是AUTO, 表示系统自动为会话分配PGA内存; 第二个参数
    表示所有会话PGA内存总和的目标值.
Managing Memory
               - SGA
• SGA包含以下内存结构, 它们的大小均可以进行独立的设置:
  – 共享池               数据块缓冲区
  – 大池                流池
  – Java池             重做日志缓冲区
  这里不讨论大池、流池和Java池. Oracle官方推荐除日志缓冲区(由启动参
  数log_buffer决定)之外, 对SGA使用自动内存管理, 在这种方式下系统会自
  动调节各个组件占用的内存空间, 以达到最佳的效率.使用SGA自动内存管
  理需要作如下设置:
  – 设置SGA_TARGET参数, 该参数表示SGA总体内存的目标值;
  将下面所有用户SGA手动管理的参数设置为0:
  – SHARED_POOL_SIZE
  – DB_CACHE_SIZE
  – LARGE_POOL_SIZE
  – STREAMS_POOL_SIZE
  – JAVA_POOL_SIZE
  在设置了SGA_TARGET参数的情况下, 如果对上述的任意参数设置了大于0的数值,
  那么该设置将作为该SGA组件分配内存的最小值, SGA仍使用自动管理.
Automatic Memory Management
             - AMM
• 前面分别介绍了PGA和SGA的自动内存管理, 这里介绍
  将PGA和SGA两者作为一个整体进行自动管理, 这需要
  设置参数MEMORY_TARGET, 前面介绍的参数均不作设
  置.
• 自动内存管理的好处是实现了在PGA和SGA之间的内存
  转移, 当需要更多的PGA内存时可以将不用的SGA内存
  分配出来, 反之也一样.
  Tip: MEMORY_TARGET参数是一个动态参数, 该参数的大
  小需要小于MEMORY_MAX_TARGET参数的设置, 后者则
  是一个静态参数.
  Tip: 在使用AMM的情况下, 如果设置了SGA_TARGET
  和PGA_AGGREGATE_TARGET参数, 它们会被作为各自的
  最小值使用.
Memory Advisor
• AMM基于内存顾问程序做出内存分配的决策,
  另外也可以通过视图v$pga_target_advice、
  v$sga_target_advice和v$memory_target_advice
  查看这些建议, eg:
SQL Tuning Advisor
• SQL调优顾问程序会对执行的SQL语句进行分析, 并提出相关的SQL调
  优策略, 比如创建索引、使用物化视图或者SQL重写, 也可以手动调
  用SQL调优顾问程序. 该顾问程序执行下面的动作:
 – 统计数据分析(statistics analysis)
   检查是否有失效或者丢失的统计数据, 如果存在则建议更新或者重新创
   建;
 – SQL剖析(SQL Profiling)
   部分执行(partial execution)SQL, 并存储相应的统计信息;
 – 访问路径分析(access paths)
   分析创建索引、物化视图和分区的影响;
 – SQL结构分析(structure analysis)
   尝试重组织SQL语句, 查看是否生成更好的执行计划.
• STA可以使用下面来源的SQL语句进行分析
 –   缓存在共享池中的SQL语句
 –   预先创建的SQL
 –   来自AWR的SQL语句
 –   ad hoc SQL语句
SQL Tuning Advisor
            - DBMS_SQLTUNE
• 使用DBMS_SQLTUNE包的如下过程对SQL语句进行
  分析,
   • CREATE_TUNING_TASK
   • EXECUTE_TUNING_TASK
   • REPORT_TUNINIG_TASK
 分别用于创建、执行SQL语句分析任务和查看结果. 另外
   可以通过如下视图查看SQL语句分析的状态:
 – DBA_ADVISOR_LOG
 查看任务的状态及执行时统计数据.
 – DBA_/USER_ADVISOR_TASKS
 顾问程序任务的详细信息.
 – V$ADVISOR_PROGRESS
 顾问程序任务执行的完成情况和剩余时间.
SQL Tuning Advisor
                     - Demo
• 首先创建示例使用的表
  create table demo.object_analysis as select * from all_objects;
• 创建任务
  variable vtask varchar2(100);
  begin
    :vtask := dbms_sqltune.create_tuning_task(sql_text=>
      'select distinct object_id from demo.object_analysis');
  end;
  /
• 执行任务
  execute dbms_sqltune.execute_tuning_task(:vtask);
• 查看任务结果, 返回的是CLOB字段
  select dbms_sqltune.report_tuning_task(:vtask) from dual;
• 最后删除object_analysis表
    drop table object_analysis;
SQL Access Advisor
                        - DBMS_ADVISOR
•   SQL访问顾问程序主要提供与创建索引、物化视图以及分区相关的优化建议, 可以
    使用dbms_advisor包进行调用, 示例:
    – 调用quick_tune过程
       begin
         dbms_advisor.quick_tune(
           dbms_advisor.sqlaccess_advisor,
           'task1',
           'select distinct object_id from demo.object_analysis');
       end;
       /
    – 创建一个数据库目录, 该目录存储分析结果文件
       create directory tune_scripts as '/tmp/tune_scripts';
    – 将分析结果写入文件
       begin
         dbms_advisor.create_file(
           dbms_advisor.get_task_script('task1'),
           'TUNE_SCRIPTS',
           'tune_fts.sql');
         end;
       /
    – 接下来可以使用操作系统命令查看分析文件的内容, 该文件会包含
    创建相应索引、物化视图等对象的脚本.
END

Contenu connexe

Tendances

11, OCP - awr & alert system
11, OCP - awr & alert system11, OCP - awr & alert system
11, OCP - awr & alert systemted-xu
 
MySQL数据库生产环境维护
MySQL数据库生产环境维护MySQL数据库生产环境维护
MySQL数据库生产环境维护mysqlops
 
Sql server performance Tuning
Sql server performance TuningSql server performance Tuning
Sql server performance TuningSimon Huang
 
System optimize experience
System optimize experienceSystem optimize experience
System optimize experience召仁 刘
 
Single-Page App Development
Single-Page App DevelopmentSingle-Page App Development
Single-Page App Developmentgenify
 
Oracle 資料庫檔案介紹
Oracle 資料庫檔案介紹Oracle 資料庫檔案介紹
Oracle 資料庫檔案介紹Chien Chung Shen
 
3, OCP - instance management
3, OCP - instance management3, OCP - instance management
3, OCP - instance managementted-xu
 
Mysql性能分析之临时表(共享)
Mysql性能分析之临时表(共享)Mysql性能分析之临时表(共享)
Mysql性能分析之临时表(共享)beiyu95
 
9, OCP - restore and recovery with rman
9, OCP - restore and recovery with rman9, OCP - restore and recovery with rman
9, OCP - restore and recovery with rmanted-xu
 
A.oracle 查询结果的缓存问题
A.oracle 查询结果的缓存问题A.oracle 查询结果的缓存问题
A.oracle 查询结果的缓存问题WASecurity
 
数据库性能诊断的七种武器
数据库性能诊断的七种武器数据库性能诊断的七种武器
数据库性能诊断的七种武器Leyi (Kamus) Zhang
 
【Ask maclean技术分享】oracle dba技能列表 z
【Ask maclean技术分享】oracle dba技能列表 z【Ask maclean技术分享】oracle dba技能列表 z
【Ask maclean技术分享】oracle dba技能列表 zmaclean liu
 
CKAN 技術介紹 (基礎篇)
CKAN 技術介紹 (基礎篇)CKAN 技術介紹 (基礎篇)
CKAN 技術介紹 (基礎篇)Chengjen Lee
 
大型互联网应用架构设计
大型互联网应用架构设计大型互联网应用架构设计
大型互联网应用架构设计thinkinlamp
 
Hyperic hq安装配置演示
Hyperic hq安装配置演示Hyperic hq安装配置演示
Hyperic hq安装配置演示bmg521
 

Tendances (20)

11, OCP - awr & alert system
11, OCP - awr & alert system11, OCP - awr & alert system
11, OCP - awr & alert system
 
MySQL数据库生产环境维护
MySQL数据库生产环境维护MySQL数据库生产环境维护
MySQL数据库生产环境维护
 
Oracle Tablespace介紹
Oracle Tablespace介紹Oracle Tablespace介紹
Oracle Tablespace介紹
 
Sql server performance Tuning
Sql server performance TuningSql server performance Tuning
Sql server performance Tuning
 
System optimize experience
System optimize experienceSystem optimize experience
System optimize experience
 
Single-Page App Development
Single-Page App DevelopmentSingle-Page App Development
Single-Page App Development
 
Oracle 資料庫檔案介紹
Oracle 資料庫檔案介紹Oracle 資料庫檔案介紹
Oracle 資料庫檔案介紹
 
3, OCP - instance management
3, OCP - instance management3, OCP - instance management
3, OCP - instance management
 
Mysql性能分析之临时表(共享)
Mysql性能分析之临时表(共享)Mysql性能分析之临时表(共享)
Mysql性能分析之临时表(共享)
 
9, OCP - restore and recovery with rman
9, OCP - restore and recovery with rman9, OCP - restore and recovery with rman
9, OCP - restore and recovery with rman
 
A.oracle 查询结果的缓存问题
A.oracle 查询结果的缓存问题A.oracle 查询结果的缓存问题
A.oracle 查询结果的缓存问题
 
数据库性能诊断的七种武器
数据库性能诊断的七种武器数据库性能诊断的七种武器
数据库性能诊断的七种武器
 
【Ask maclean技术分享】oracle dba技能列表 z
【Ask maclean技术分享】oracle dba技能列表 z【Ask maclean技术分享】oracle dba技能列表 z
【Ask maclean技术分享】oracle dba技能列表 z
 
CKAN 技術介紹 (基礎篇)
CKAN 技術介紹 (基礎篇)CKAN 技術介紹 (基礎篇)
CKAN 技術介紹 (基礎篇)
 
大型互联网应用架构设计
大型互联网应用架构设计大型互联网应用架构设计
大型互联网应用架构设计
 
点评新架构
点评新架构点评新架构
点评新架构
 
Hyperic hq安装配置演示
Hyperic hq安装配置演示Hyperic hq安装配置演示
Hyperic hq安装配置演示
 
Oracle 資料庫建立
Oracle 資料庫建立Oracle 資料庫建立
Oracle 資料庫建立
 
Oracle Instance 介紹
Oracle Instance 介紹Oracle Instance 介紹
Oracle Instance 介紹
 
DNN
DNNDNN
DNN
 

Similaire à 12, OCP - performance tuning

1, OCP - architecture intro
1, OCP - architecture intro1, OCP - architecture intro
1, OCP - architecture introted-xu
 
开源应用日志收集系统
开源应用日志收集系统开源应用日志收集系统
开源应用日志收集系统klandor
 
如何架构和开发高性能,高伸缩性Web 应用系统
如何架构和开发高性能,高伸缩性Web 应用系统如何架构和开发高性能,高伸缩性Web 应用系统
如何架构和开发高性能,高伸缩性Web 应用系统melity78
 
Oracle数据库升级前必要的准备工作
Oracle数据库升级前必要的准备工作Oracle数据库升级前必要的准备工作
Oracle数据库升级前必要的准备工作maclean liu
 
配置Oracle 10g 双向流复制
配置Oracle 10g 双向流复制配置Oracle 10g 双向流复制
配置Oracle 10g 双向流复制maclean liu
 
P6 数据库安装和配置
P6 数据库安装和配置P6 数据库安装和配置
P6 数据库安装和配置epst
 
Itpub电子杂志(第五期)
Itpub电子杂志(第五期)Itpub电子杂志(第五期)
Itpub电子杂志(第五期)yiditushe
 
Sina my sq概述及优化
Sina my sq概述及优化Sina my sq概述及优化
Sina my sq概述及优化pigso
 
Struts快速学习指南
Struts快速学习指南Struts快速学习指南
Struts快速学习指南yiditushe
 
Mybatis学习培训
Mybatis学习培训Mybatis学习培训
Mybatis学习培训flynofry
 
MySQL5.6&5.7 Cluster 7.3 Review
MySQL5.6&5.7 Cluster 7.3 ReviewMySQL5.6&5.7 Cluster 7.3 Review
MySQL5.6&5.7 Cluster 7.3 Review郁萍 王
 
Oracle数据库体系结构简介.ppt
Oracle数据库体系结构简介.pptOracle数据库体系结构简介.ppt
Oracle数据库体系结构简介.pptjames tong
 
腾讯大讲堂48 数据库查询优化浅析
腾讯大讲堂48 数据库查询优化浅析腾讯大讲堂48 数据库查询优化浅析
腾讯大讲堂48 数据库查询优化浅析George Ang
 
Essential oracle security internal for dba
Essential oracle security internal for dbaEssential oracle security internal for dba
Essential oracle security internal for dbamaclean liu
 
Oracle北大青鸟完全教程
Oracle北大青鸟完全教程Oracle北大青鸟完全教程
Oracle北大青鸟完全教程yiditushe
 
MySQL Replication新功能介绍
MySQL Replication新功能介绍 MySQL Replication新功能介绍
MySQL Replication新功能介绍 orczhou
 
03.wls depoly jdbc
03.wls depoly jdbc03.wls depoly jdbc
03.wls depoly jdbcMeng He
 
【Maclean liu技术分享】开oracle调优鹰眼,深入理解awr性能报告 第二讲 正式版 20130410
【Maclean liu技术分享】开oracle调优鹰眼,深入理解awr性能报告 第二讲 正式版 20130410【Maclean liu技术分享】开oracle调优鹰眼,深入理解awr性能报告 第二讲 正式版 20130410
【Maclean liu技术分享】开oracle调优鹰眼,深入理解awr性能报告 第二讲 正式版 20130410maclean liu
 
SQL Server 資料庫版本控管
SQL Server 資料庫版本控管SQL Server 資料庫版本控管
SQL Server 資料庫版本控管Will Huang
 
Kid171 chap03 traditional Chinese Version
Kid171 chap03 traditional Chinese VersionKid171 chap03 traditional Chinese Version
Kid171 chap03 traditional Chinese VersionFrank S.C. Tseng
 

Similaire à 12, OCP - performance tuning (20)

1, OCP - architecture intro
1, OCP - architecture intro1, OCP - architecture intro
1, OCP - architecture intro
 
开源应用日志收集系统
开源应用日志收集系统开源应用日志收集系统
开源应用日志收集系统
 
如何架构和开发高性能,高伸缩性Web 应用系统
如何架构和开发高性能,高伸缩性Web 应用系统如何架构和开发高性能,高伸缩性Web 应用系统
如何架构和开发高性能,高伸缩性Web 应用系统
 
Oracle数据库升级前必要的准备工作
Oracle数据库升级前必要的准备工作Oracle数据库升级前必要的准备工作
Oracle数据库升级前必要的准备工作
 
配置Oracle 10g 双向流复制
配置Oracle 10g 双向流复制配置Oracle 10g 双向流复制
配置Oracle 10g 双向流复制
 
P6 数据库安装和配置
P6 数据库安装和配置P6 数据库安装和配置
P6 数据库安装和配置
 
Itpub电子杂志(第五期)
Itpub电子杂志(第五期)Itpub电子杂志(第五期)
Itpub电子杂志(第五期)
 
Sina my sq概述及优化
Sina my sq概述及优化Sina my sq概述及优化
Sina my sq概述及优化
 
Struts快速学习指南
Struts快速学习指南Struts快速学习指南
Struts快速学习指南
 
Mybatis学习培训
Mybatis学习培训Mybatis学习培训
Mybatis学习培训
 
MySQL5.6&5.7 Cluster 7.3 Review
MySQL5.6&5.7 Cluster 7.3 ReviewMySQL5.6&5.7 Cluster 7.3 Review
MySQL5.6&5.7 Cluster 7.3 Review
 
Oracle数据库体系结构简介.ppt
Oracle数据库体系结构简介.pptOracle数据库体系结构简介.ppt
Oracle数据库体系结构简介.ppt
 
腾讯大讲堂48 数据库查询优化浅析
腾讯大讲堂48 数据库查询优化浅析腾讯大讲堂48 数据库查询优化浅析
腾讯大讲堂48 数据库查询优化浅析
 
Essential oracle security internal for dba
Essential oracle security internal for dbaEssential oracle security internal for dba
Essential oracle security internal for dba
 
Oracle北大青鸟完全教程
Oracle北大青鸟完全教程Oracle北大青鸟完全教程
Oracle北大青鸟完全教程
 
MySQL Replication新功能介绍
MySQL Replication新功能介绍 MySQL Replication新功能介绍
MySQL Replication新功能介绍
 
03.wls depoly jdbc
03.wls depoly jdbc03.wls depoly jdbc
03.wls depoly jdbc
 
【Maclean liu技术分享】开oracle调优鹰眼,深入理解awr性能报告 第二讲 正式版 20130410
【Maclean liu技术分享】开oracle调优鹰眼,深入理解awr性能报告 第二讲 正式版 20130410【Maclean liu技术分享】开oracle调优鹰眼,深入理解awr性能报告 第二讲 正式版 20130410
【Maclean liu技术分享】开oracle调优鹰眼,深入理解awr性能报告 第二讲 正式版 20130410
 
SQL Server 資料庫版本控管
SQL Server 資料庫版本控管SQL Server 資料庫版本控管
SQL Server 資料庫版本控管
 
Kid171 chap03 traditional Chinese Version
Kid171 chap03 traditional Chinese VersionKid171 chap03 traditional Chinese Version
Kid171 chap03 traditional Chinese Version
 

Plus de ted-xu

10, OCP - flashback
10, OCP - flashback10, OCP - flashback
10, OCP - flashbackted-xu
 
8, OCP - backup with rman
8, OCP - backup with rman8, OCP - backup with rman
8, OCP - backup with rmanted-xu
 
5, OCP - oracle storage
5, OCP - oracle storage5, OCP - oracle storage
5, OCP - oracle storageted-xu
 
4, OCP - oracle networking
4, OCP - oracle networking4, OCP - oracle networking
4, OCP - oracle networkingted-xu
 
2, OCP - installing and creating a database
2, OCP - installing and creating a database2, OCP - installing and creating a database
2, OCP - installing and creating a databaseted-xu
 
7, business event system
7, business event system7, business event system
7, business event systemted-xu
 
6, workflow miscellaneous
6, workflow miscellaneous6, workflow miscellaneous
6, workflow miscellaneousted-xu
 
5, workflow function activity
5, workflow function activity5, workflow function activity
5, workflow function activityted-xu
 
4, workflow tables & api
4, workflow tables & api4, workflow tables & api
4, workflow tables & apited-xu
 
3, workflow in ebs
3, workflow in ebs3, workflow in ebs
3, workflow in ebsted-xu
 
2, a simple workflow
2, a simple workflow2, a simple workflow
2, a simple workflowted-xu
 
1, workflow intro
1, workflow intro1, workflow intro
1, workflow introted-xu
 
8, bes tables & api
8, bes tables & api8, bes tables & api
8, bes tables & apited-xu
 
OPM Recipe designer notes
OPM Recipe designer notesOPM Recipe designer notes
OPM Recipe designer notested-xu
 
5, sed
5, sed5, sed
5, sedted-xu
 
4, grep
4, grep4, grep
4, grepted-xu
 
3, regular expression
3, regular expression3, regular expression
3, regular expressionted-xu
 
2, bash synax simplified
2, bash synax simplified2, bash synax simplified
2, bash synax simplifiedted-xu
 
1, shell intro
1, shell intro1, shell intro
1, shell introted-xu
 
6, awk
6, awk6, awk
6, awkted-xu
 

Plus de ted-xu (20)

10, OCP - flashback
10, OCP - flashback10, OCP - flashback
10, OCP - flashback
 
8, OCP - backup with rman
8, OCP - backup with rman8, OCP - backup with rman
8, OCP - backup with rman
 
5, OCP - oracle storage
5, OCP - oracle storage5, OCP - oracle storage
5, OCP - oracle storage
 
4, OCP - oracle networking
4, OCP - oracle networking4, OCP - oracle networking
4, OCP - oracle networking
 
2, OCP - installing and creating a database
2, OCP - installing and creating a database2, OCP - installing and creating a database
2, OCP - installing and creating a database
 
7, business event system
7, business event system7, business event system
7, business event system
 
6, workflow miscellaneous
6, workflow miscellaneous6, workflow miscellaneous
6, workflow miscellaneous
 
5, workflow function activity
5, workflow function activity5, workflow function activity
5, workflow function activity
 
4, workflow tables & api
4, workflow tables & api4, workflow tables & api
4, workflow tables & api
 
3, workflow in ebs
3, workflow in ebs3, workflow in ebs
3, workflow in ebs
 
2, a simple workflow
2, a simple workflow2, a simple workflow
2, a simple workflow
 
1, workflow intro
1, workflow intro1, workflow intro
1, workflow intro
 
8, bes tables & api
8, bes tables & api8, bes tables & api
8, bes tables & api
 
OPM Recipe designer notes
OPM Recipe designer notesOPM Recipe designer notes
OPM Recipe designer notes
 
5, sed
5, sed5, sed
5, sed
 
4, grep
4, grep4, grep
4, grep
 
3, regular expression
3, regular expression3, regular expression
3, regular expression
 
2, bash synax simplified
2, bash synax simplified2, bash synax simplified
2, bash synax simplified
 
1, shell intro
1, shell intro1, shell intro
1, shell intro
 
6, awk
6, awk6, awk
6, awk
 

12, OCP - performance tuning

  • 2. Overview • 系统调优是一个涉及面很宽泛的主题, 它可以 分为硬件、软件或者按系统层次分显示层、应 用层、数据库层等. 这一章介绍的是Oracle数 据库层的调优, 着重于一些工具的使用和系统 的配置, 包括: – 使用自动内存管理(Automatic Memory Management) – 使用内存顾问程序(Memory Advisor) 配置自动PGA 内存管理(Automatic PGA Memory Management) – 使用SQL调优顾问程序(SQL Tuning Advisor) – 使用SQL访问顾问程序(SQL Access Advisor)
  • 3. Managing Memory - Overview & PGA • Oracle实例的内存管理分为两个部分: PGA内存管理和SGA内存管理. 从9i开 始实现了对PGA内存的自动管理, 10g实现了对SGA内存的自动管理, 在11g 中则更进一步允许将PGA和SGA作为一个整体进行自动管理. • PGA Memory Management – 用户会话由客户端进程和服务端进程组成, 与服务端进程相关联的是PGA内存, 这是每一个会话私有的. PGA内存用于存储与会话相关的数据, 包括: • 临时表数据(temporary tables) • 排序临时数据(sorting rows) • 合并位图(merging bitmaps) • 变量(variables) • 调用堆栈(call stack) 对于会话数据, 有的必须使用PGA内存, 比如调用堆栈; 另外的数据在PGA内存不 够的情况下会使用磁盘空间作为临时的存储, 比如临时表空间. – 在11g版本中PGA内存支持手动管理, 但这只是为了向后兼容. 使用如下两个参 数启用PGA内存的自动管理: • WORKAREA_SIZE_POLICY • PGA_AGGREGATE_TARGET 第一个参数的默认值是AUTO, 表示系统自动为会话分配PGA内存; 第二个参数 表示所有会话PGA内存总和的目标值.
  • 4. Managing Memory - SGA • SGA包含以下内存结构, 它们的大小均可以进行独立的设置: – 共享池 数据块缓冲区 – 大池 流池 – Java池 重做日志缓冲区 这里不讨论大池、流池和Java池. Oracle官方推荐除日志缓冲区(由启动参 数log_buffer决定)之外, 对SGA使用自动内存管理, 在这种方式下系统会自 动调节各个组件占用的内存空间, 以达到最佳的效率.使用SGA自动内存管 理需要作如下设置: – 设置SGA_TARGET参数, 该参数表示SGA总体内存的目标值; 将下面所有用户SGA手动管理的参数设置为0: – SHARED_POOL_SIZE – DB_CACHE_SIZE – LARGE_POOL_SIZE – STREAMS_POOL_SIZE – JAVA_POOL_SIZE 在设置了SGA_TARGET参数的情况下, 如果对上述的任意参数设置了大于0的数值, 那么该设置将作为该SGA组件分配内存的最小值, SGA仍使用自动管理.
  • 5. Automatic Memory Management - AMM • 前面分别介绍了PGA和SGA的自动内存管理, 这里介绍 将PGA和SGA两者作为一个整体进行自动管理, 这需要 设置参数MEMORY_TARGET, 前面介绍的参数均不作设 置. • 自动内存管理的好处是实现了在PGA和SGA之间的内存 转移, 当需要更多的PGA内存时可以将不用的SGA内存 分配出来, 反之也一样. Tip: MEMORY_TARGET参数是一个动态参数, 该参数的大 小需要小于MEMORY_MAX_TARGET参数的设置, 后者则 是一个静态参数. Tip: 在使用AMM的情况下, 如果设置了SGA_TARGET 和PGA_AGGREGATE_TARGET参数, 它们会被作为各自的 最小值使用.
  • 6. Memory Advisor • AMM基于内存顾问程序做出内存分配的决策, 另外也可以通过视图v$pga_target_advice、 v$sga_target_advice和v$memory_target_advice 查看这些建议, eg:
  • 7. SQL Tuning Advisor • SQL调优顾问程序会对执行的SQL语句进行分析, 并提出相关的SQL调 优策略, 比如创建索引、使用物化视图或者SQL重写, 也可以手动调 用SQL调优顾问程序. 该顾问程序执行下面的动作: – 统计数据分析(statistics analysis) 检查是否有失效或者丢失的统计数据, 如果存在则建议更新或者重新创 建; – SQL剖析(SQL Profiling) 部分执行(partial execution)SQL, 并存储相应的统计信息; – 访问路径分析(access paths) 分析创建索引、物化视图和分区的影响; – SQL结构分析(structure analysis) 尝试重组织SQL语句, 查看是否生成更好的执行计划. • STA可以使用下面来源的SQL语句进行分析 – 缓存在共享池中的SQL语句 – 预先创建的SQL – 来自AWR的SQL语句 – ad hoc SQL语句
  • 8. SQL Tuning Advisor - DBMS_SQLTUNE • 使用DBMS_SQLTUNE包的如下过程对SQL语句进行 分析, • CREATE_TUNING_TASK • EXECUTE_TUNING_TASK • REPORT_TUNINIG_TASK 分别用于创建、执行SQL语句分析任务和查看结果. 另外 可以通过如下视图查看SQL语句分析的状态: – DBA_ADVISOR_LOG 查看任务的状态及执行时统计数据. – DBA_/USER_ADVISOR_TASKS 顾问程序任务的详细信息. – V$ADVISOR_PROGRESS 顾问程序任务执行的完成情况和剩余时间.
  • 9. SQL Tuning Advisor - Demo • 首先创建示例使用的表 create table demo.object_analysis as select * from all_objects; • 创建任务 variable vtask varchar2(100); begin :vtask := dbms_sqltune.create_tuning_task(sql_text=> 'select distinct object_id from demo.object_analysis'); end; / • 执行任务 execute dbms_sqltune.execute_tuning_task(:vtask); • 查看任务结果, 返回的是CLOB字段 select dbms_sqltune.report_tuning_task(:vtask) from dual; • 最后删除object_analysis表 drop table object_analysis;
  • 10. SQL Access Advisor - DBMS_ADVISOR • SQL访问顾问程序主要提供与创建索引、物化视图以及分区相关的优化建议, 可以 使用dbms_advisor包进行调用, 示例: – 调用quick_tune过程 begin dbms_advisor.quick_tune( dbms_advisor.sqlaccess_advisor, 'task1', 'select distinct object_id from demo.object_analysis'); end; / – 创建一个数据库目录, 该目录存储分析结果文件 create directory tune_scripts as '/tmp/tune_scripts'; – 将分析结果写入文件 begin dbms_advisor.create_file( dbms_advisor.get_task_script('task1'), 'TUNE_SCRIPTS', 'tune_fts.sql'); end; / – 接下来可以使用操作系统命令查看分析文件的内容, 该文件会包含 创建相应索引、物化视图等对象的脚本.
  • 11. END