目的 管理优化程序统计信息 管理自动工作量资料档案库(AWR) 使用自动数据库诊断监视器(ADDM) 说明和使用知道框架 设置预警阀值 使用服务器生成的预警 使用自动任务 数据库维护 通过复杂的Oracle DB基础结构,可以方便地执行预先数据库维护,主要包括以下要素: -每个Oracle DB中都有一个内置的资料档案库,即自动工作量资料档案库(AWR)。 Oracle DB服务器会定期为所有重要统计信息及工作量信息创建快照,并将这些数据存储在AWR中。用户可以对捕获的数据进行分析,也可以由数据库自动进行分析,或两者兼有。 -数据库使用自动任务执行常规维护操作,如定期备份,刷新优化程序统计信息以及数据库健康检查。 被动数据库维护包括数据库健康检查器发现的严重错误和状态: -当出现无法自动解决并需要通知管理员的问题(如用完空间时)时,Oracle DB服务器会提供服务器生成的预警。Oracle DB服务器默认情况下会监视其本身,并发送预警通知您发生的问题。预警不仅通知您出现问题,通常还会就如何解决报告的问题提供建议。 -建议由一些指导生产,其中每个指导负责一个子系统。例如,有内存指导,段指导和SQL指导。 自动工作量资料档案库(AWR):是用于数据搜集,分析和提供解决方案建议的基础结构。 AWR基线:用于性能比较的一组AWR快照 度量:累计统计数据中的更改率 统计信息:提供数据库和对象详细信息的数据集合 -优化程序统计信息:供查询优化程序使用 -数据库统计信息:用于了解性能 阀值:比较度量值时所根据的边界值 Oracle优化程序 优化程序是Oracle DB的一部分,用于为SQL语句创建执行计划。确定执行计划是处理任何SQL语句的重要一步,会对执行时间产生重大影响。 执行计划是执行语句时按顺序执行的一系列操作。优化程序会考虑许多与被引用对象相关的以及与查询中所指定的条件相关的因素。优化程序所需的信息包括: -为系统(I/O,CPU等)以及方案对象(行数,索引等)搜集的统计信息 -字典中的信息 -WHERE子句限定符 -开发人员提供的提示 根据其功能的不同,Oracle优化程序具有两个名称:“查询优化程序”和“自动优化程序” 优化程序统计信息 是某一时间点的快照 每次重新启动实例后会变为永久信息 可自动收集 -统计信息包括表,列,索引和系统的统计信息。 -表和索引的统计信息存储在数据字典中。 -这些统计信息不提供实时数据。而是为优化程序提供数据存储和数据分发的正确统计快照,优化程序会使用该快照来决定如何访问数据。 收集的统计信息包括: -数据块中的表或索引的大小 -行数 -平均行大小和链计数(仅限表) -已删除叶行的高度和数量(仅限索引) 要启用收集优化程序统计信息的任务,必须确保STATISTICS_LEVEL初始化参数设置为TYPICAL或ALL 收集统计信息的频率应足够高,以保证表在两个收集期之间的变化率不超过10%。这可能需要手动收集统计信息或使用其它维护窗口。 可以使用Enterprise Manager或DBMS_STATS程序包手动收集统计信息。
手动收集统计信息 15:09:09 SQL> select count(*) from HR.EMP; COUNT(*) ---------- 221 15:09:19 SQL> select num_rows from dba_tables where table_name='EMP'; NUM_ROWS ---------- 14 12 0 15:09:39 SQL> select num_rows from dba_tables where table_name='EMP' and owner='HR'; NUM_ROWS ---------- 15:10:03 SQL> exec dbms_stats.gather_table_stats('HR','EMP'); 已順利完成 PL/SQL 程序. 15:10:35 SQL> select num_rows from dba_tables where table_name='EMP' and owner='HR'; NUM_ROWS ---------- 221 15:10:38 SQL>
除非工作量发生了显著变化,否则系统统计信息不会改变。因此,不需要频繁调整系统统计信息。DBMS_STATS.GATHER_SYSTEM_STATAS过程会在指定时间段内收集系统统计信息,也可以启动系统统计信息的收集过程并执行另一个调用来停止搜集。 exec dbms_stats.gather_system_stats(‘NOWORKLOAD’);—NOWORKLOAD选项会花费几分钟(具体取决于数据库大小)来捕获I/O特征的估计值,如平均读取查找时间和I/O传输率。 用于收集统计信息的首选项 首选项:可以为单个对象,方案或数据库设置值 SET_*_PREFS过程不属于SYS或SYSTEM的任何对象创建首选项值。 -SET_DATABASE_PREFS过程会循环访问数据库中的所有表和方案。 -SET_SCHEMA_PREFS循环访问指定方案中的表。 -SET_TABLE_PREFS为单个表设置首选项。 无论是在数据库级,方案级还是在表级设置,所有对象首选项均保存在一个单个表中。在方案级更改这些首选项会覆盖以前在表级设置的首选项。 DBA_TAB_STAT_PREFS视图中查看对象级首选项,未在对象级设置的所有首选项都会被设置为全局级首选项。通过对每个首选项调用DBMS_STATS.GET_PREFS过程,可以查看全局首选项。 可以在表级,方案级,数据库级和全局级设置,获取,删除,导出和导入这些首选项。首选项的值一般来说是按全局级向表级的顺序进行设置,最终将首选项应用于最小的组。 Oracle Database 11g中的首选项 -CASCADE,确定在收集表统计信息的过程中是否收集索引统计信息。 -DEGREE,设置用于收集统计信息的并行度。 -PUBLISH,用于确定是将统计信息发布到字典还是将其存储在专用区域中。这使得DBA可以先验证统计信息,然后在使用PUBLISH_PENDING_STATS过程将其发布到数据字典。 -STALE_PERCENT,用于确定判断对象是否具有过时统计信息所依据的阀值级别。该值是自上次搜索统计信息以来已修改的行数百分比。 -INCREMENTAL,以增量方式收集分区表的全局统计信息。 -METHOD_OPT,确定列和用于收集统计信息的直方图参数。 -GRANULARITY,确定收集统计信息的粒度(仅当表为分区表时才适用)。 -NO_INVALIDATE,确定是否使游标失效 -ESTIMATE_PERCENT,确定为获得有效的统计信息而采样的行数。它是表中行数的百分比。 使用DBMS_STATS.DELETE_*_PREFS过程,可在表级,方案级和数据库级删除首选项。 使用DBMS_STATS.RESET_PARAM_DEFAULTS过程,可将全局首选重置为建议值。 自动工作量资料档案库(AWR) AWR是oracle 11g组件提供服务的基础结构,它可以收集,维护和利用统计信息进行问题检测和自优化。可将此基础结构视为数据库统计信息,度量等的数据仓库。 数据库(默认情况下)每60分钟从SGA中自动捕获一次统计信息,然后将其以快照形式存储在AWR中。这些信息是由MMON后台进程存储在磁盘上。默认情况下,快照保留8天,您可以自行修改快照时间间隔和保留间隔。 AWR中包含数百个表,所有这些表均属于SYSMAN方案且存储在SYSAUX表空间中。Oracle建议仅适用Enterprise Manager或DBMS_WORKLOAD_REPOSITORY程序包访问资料档案库,对AWR进行操作。不支持直接对资料档案库表进行DML操作。 AWR报告保留15天
begin DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS(interval => 60,retention =>15*24*60); end;
AWR基础结构 AWR基础结构主要分为两个部分: 一个内存中统计信息收集工具,出于性能考虑将统计信息存储在内存中。可以通过动态性能(V$)视图访问这些信息。 持久部分的AWR快照。AWR快照可以通过数据字典视图和Enterprise Manager Database Control来访问。 出于以下几个方面的考虑,统计信息存储在持久存储中 -实例崩溃后统计信息需要仍然可用。 -某些分析需要使用历史记录数据进行基线比较 -可能会发生内存溢出。当旧统计信息因内存不足而被新统计信息替换时,被替换的数据可以存储起来供以后使用。 内存中的统计信息会定期通过MMON后台进程转移到磁盘上。使用AWR时,Oracle DB可自动捕获历史统计信息,而不需要DBA进行干预。 AWR基线 AWR基线是一个AWR快照集。通常是在AWR中标记和保留的某个重要时段的快照数据的集合。 DBMS_WORKLOAD_REPOSITORY.CREATE_BASELINE(- start_snap_id IN NUMBER, end_snap_id IN NUMBER, baseline_name IN VARCHAR2); 默认过期天数为NULL,表示永不过期。 管理AWR 保留期 -默认八天,需考虑存储 收集间隔 -默认60分钟,需考虑存储和性能影响 收集级别 -Basic(禁用多数ADDM功能) -Typical(建议级别) -All(将其它SQL优化信息添加到快照中) 优化新应用程序时,请考虑将手机级别设置为ALL。使用ALL可以收集SQL执行计划和定时统计信息,这些信息可以改进SQL指导的建议。优化完成后,应重新将此设置回TYPICAL. 统计级别 STATISTICS_LEVEL初始化参数可控制对各种统计信息和各种指导的捕获,其中包括自动维护任务。自动维护任何包括搜集优化程序统计信息。 BASIC:AWR统计信息和度量的计算被关闭。自动优化程序统计信息任务被禁用,所有指导和服务器生成的预警也被禁用。 TYPICAL:收集数据库自我管理所需的主要统计信息。这些统计信息表示监视Oracle DB行为通常需要的信息,这包括自动收集统计信息,以减少由于统计信息过时或无效而导致不正确执行SQL语句的可能性。 ALL:捕获所有可能的统计信息。此捕获级别增加了计时操作系统统计信息和计划执行统计信息。多数执行特定的诊断测试时需要这些统计信息。 Oracle建议将STATISTICS_LEVEL初始化参数设置为默认值TYPICAL。如果将该参数的值设置为BASIC,则会禁用自动收集优化程序统计信息功能。 自动数据库诊断监视器(ADDM) 在记录每个AWR快照之后运行 监视实例:检测瓶颈 在AWR中存储结果 ADDM检测到的一些常见问题: -CPU瓶颈 -Oracle Net连接管理不佳 -锁争用 -输入/输出(I/O)能力差 -数据库实例内存结构大小不足 -SQL语句的负载过高 -PL/SQL和Java时间过高 -检查点负载过高及原因 ADDM将考虑对系统的各种更改。其建议: -硬件更改,添加CPU或更改I/O子系统配置 -数据库配置,更改初始化参数设置 -方案更改,对表或索引进行散列分区,或者使用自动段空间管理(ASSM) -应用程序更改,对序列使用高速缓存选项,或使用绑定变量 -使用其他指导,在高负载SQL上运行SQL优化指导或在热对象上运行段指导 内存指导 多项指导功能的集合,通过它可确定数据库实例所使用的总内存的最佳设置。系统全局区(SGA)为共享池,数据库缓冲区高速缓存,Java池和流池提供了一组指导。 平均恢复时间(MTTR)指导 使用MTTR指导,可设置实例崩溃后数据库恢复所需的时间长短。 段指导 此指导用于查找占用空间多于所需空间的表和索引。此指导会在表空间级或方案级检查造成低效率的空间消耗问题,如果可能,还会生成脚本来减少空间消耗。 SQL访问指导 用于分析在给定时段发出的所有SQL语句,还就其它索引或实体化视图(可提高性能)的创建提供建议。 SQL优化指导 用于分析单个SQL语句,还提供建议以改进该语句的性能。建议中可包括重写语句,更改实例配置或添加索引等操作。 还原管理指导 使用还原管理指导时,可确定支持指定的保留期所需要的还原表空间大小。 数据恢复指导 自动诊断持续性数据故障,向用户提供修复选项并根据用户的请求执行修复。数据恢复指导的用途是减少平均恢复时间(MTTR)并提供用于自动修复数据的集中式工具。 SQL修复指导 如果某一SQL语句因严重错误而失败,进而导致在自动诊断资料档案库中生成问题,则可运行SQL修复指导。该指导会对语句进行分析,并在多数情况下会推荐一个补丁程序来修复该语句。如果实施了建议,所应用的SQL补丁程序会让查询优化程序选择一个替代执行计划以备将来执行,从而避免故障。此操作无需啊更改该SQL语句本身即可完成。 DBMS_ADVISOR程序包 DBMS_ADVISOR.CREATE_TASK 在资料档案库中创建新任务 DBMS_ADVISOR.DELETE_TASK 在资料档案库中删除任务 DBMS_ADVISOR.EXECUTE_TASK 开始执行任务 DBMS_ADVISOR.INTERRUPT_TASK 挂起当前正在执行的任务 DBMS_ADVISOR.GET_TASK_REPORT 创建指定任务的文本报表并返回文本报表 DBMS_ADVISOR.RESUME_TASK 恢复挂起的任务 DBMS_ADVISOR.UPDATE_TASK_ATTRIBUTES 更新任务属性 DBMS_ADVISOR.SET_TASK_PARAMETER 修改任务参数 DBMS_ADVISOR.MARK_RECOMMENDATION 将一个或多个建议标记为已接受,已拒绝或已忽略 DBMS_ADVISOR.GET_TASK_SCRIPT 创建由已接受的所有建议组成的脚本 DBMS_ADVISOR程序包中包含所有指导模块的所有常数和过程声明。使用这个程序包可以命令行执行任务。要执行指导过程,必须具有ADVISOR权限。使用ADVISOR权限可对指导过程和视图进行全权访问。
自定义调用AWR和ADDM诊断报表 AWR报告获取24小时内的 --conn / as sysdba; set echo off; set veri off; set feedback off; set termout on; set heading off; variable rpt_options number; define NO_OPTIONS = 0; define ENABLE_ADDM = 8; -- according to your needs, the value can be 'text' or 'html' define report_type='html'; begin :rpt_options := &NO_OPTIONS; end; / variable dbid number; variable inst_num number; variable bid number; variable eid number; variable dbname varchar2(9); variable btime number; variable etime number; begin select dbid into :dbid from v$database; select instance_number into :inst_num from v$instance; select max(snap_id)-24 into :bid from dba_hist_snapshot where DBID=:dbid; select max(snap_id) into :eid from dba_hist_snapshot where DBID=:dbid; select lower(NAME) into :dbname from v$database; select to_char(end_interval_time,'YYYYMMDDHH24') into :btime from dba_hist_snapshot where snap_id=:bid; select to_char(end_interval_time,'DDHH24') into :etime from dba_hist_snapshot where snap_id=:eid; end; / column ext new_value ext noprint column fn_name new_value fn_name noprint; column lnsz new_value lnsz noprint; --select 'txt' ext from dual where lower('&report_type') = 'text'; select 'html' ext from dual where lower('&report_type') = 'html'; --select 'awr_report_text' fn_name from dual where lower('&report_type') = 'text'; select 'awr_report_html' fn_name from dual where lower('&report_type') = 'html'; --select '80' lnsz from dual where lower('&report_type') = 'text'; select '1500' lnsz from dual where lower('&report_type') = 'html'; select :dbname||'_'||:btime||'to'||:etime||'.'||'&ext' report_name from dual; set linesize &lnsz; -- print the AWR results into the report_name file using the spool command: column report_name new_value report_name noprint; select :dbname||'_'||:btime||'to'||:etime||'.'||'&ext' report_name from dual; set termout off; spool &report_name; select output from table(dbms_workload_repository.&fn_name(:dbid, :inst_num,:bid, :eid,:rpt_options )); set termout on; clear columns sql; ttitle off; btitle off; repfooter off; undefine report_name undefine report_type undefine fn_name undefine lnsz undefine NO_OPTIONS exit ADDM自动诊断报告 set echo off; set veri off; set feedback off; set termout on; set heading off; set pagesize 0; set heading off echo off feedback off verify off; variable task_name varchar2(40); variable dbid number; variable inst_num number; variable bid number; variable eid number; variable dbname varchar2(9); variable btime number; variable etime number; begin select dbid into :dbid from v$database; select instance_number into :inst_num from v$instance; select max(snap_id)-48 into :bid from dba_hist_snapshot where DBID=:dbid; select max(snap_id) into :eid from dba_hist_snapshot where DBID=:dbid; select lower(NAME) into :dbname from v$database; select to_char(end_interval_time,'YYYYMMDDHH24') into :btime from dba_hist_snapshot where snap_id=:bid; select to_char(end_interval_time,'DDHH24') into :etime from dba_hist_snapshot where snap_id=:eid; end; / --prompt --prompt --prompt Running the ADDM analysis on the specified pair of snapshots ... --prompt begin declare id number; name varchar2(100); descr varchar2(500); BEGIN name := ''; descr := 'ADDM run: snapshots [' || :bid || ', ' || :eid || '], instance ' || :inst_num || ', database id ' || :dbid; dbms_advisor.create_task('ADDM',id,name,descr,null); :task_name := name; dbms_advisor.set_task_parameter(name, 'START_SNAPSHOT', :bid); dbms_advisor.set_task_parameter(name, 'END_SNAPSHOT', :eid); dbms_advisor.set_task_parameter(name, 'INSTANCE', :inst_num); dbms_advisor.set_task_parameter(name, 'DB_ID', :dbid); dbms_advisor.execute_task(name); end; end; / --prompt --prompt Generating the ADDM report for this analysis ... --prompt --prompt column report_name new_value report_name noprint; select :dbname||'_'||:btime||'to'||:etime||'.'||'txt' report_name from dual; set termout off; spool &report_name; set long 1000000 pagesize 0 longchunksize 1000 column get_clob format a80 select dbms_advisor.get_task_report(:task_name, 'TEXT', 'TYPICAL') from sys.dual; spool off; set termout on; prompt &report_name undefine dbid undefine inst_num undefine report_name exit
自动维护任务进程 1.打开维护窗口 2.自动任务后台进程调度作业 3.调度程序启动作业 4.资源管理限制自动任务作业的影响 默认自动任务维护作业,默认情况下工作日维护窗口在晚上10点启动,持续4小时。周六周日维护窗口在早上6点启动,持续20小时。维护窗口均可以自定义(开始时间,结束时间,频率,每周几天等等)。 收集优化程序统计信息 自动段指导 自动SQL指导 Oracle 11G自动维护任务 >auto optimizer stats collection(自动优化器统计收集):为所有对象收集陈旧的或缺少的统计数据 >auto space advisor(自动分段顾问):标识出应该被重组的段以节约空间 >sql tuning advisor(自动SQL调整顾问):标识并尝试调整高负载的SQL 优化统计信息数据的集合、描述数据库相关详细细节、数据库中的对象。通过这些统计信息使SQL优化器能选择适用于每个SQL语句的最佳执行计划。 优化统计信息包括以下内容: >Tables statistics 。Number of rows(行数) 。Number of blocks(块数) 。Average row length(行平均长度) >Column statistics 。Number of distinct values(NDV)in column(列中不同值的数目) 。Number of nulls in column(列中空值的数目) 。Data distribution(histogram)(数据分布-直方图) 。Extended statistics(扩展统计) >Index statistics 。Number of leaf blocks(叶块数) 。Levels(级别) 。Clustering factor(聚类因素) >Sytem statistics 。I/O performancce and utilization(I/O性能和利用率) 。CPU performance and utilization(CPU性能和利用率) Enabling Automatic Optimizer Statistics Collection
自动优化统计信息收集依赖于该参数‘STATISTICS_LEVEL’值TYPICAL 或者ALL,9i中还有BASIC值。视图v$statistics_level alter system set statistics_level=xxxx; -basic:oracle关闭了所有性能数据的收集,如关闭AWR或statspack收集就将STATISTICS_LEVEL设为BASIC。 typical:除了plan_executetion_statistics和OS statistics不能收集外,其他均可以收集。 all:收集所有statistics BEGIN DBMS_AUTO_TASK_ADMIN.ENABLE( client_name => 'auto optimizer stats collection', operation => NULL, window_name => NULL); END; / client_name:自动维护任务的名称,可查看dba_autotask_client视图 operation:指定作业名称 dba_autotask_operation视图可查看,其实同dba_autotask_client相同。 windows_name:作业窗口选择,其中client_name将被禁止(MONDAY_WINDOW,TUESDAY_WINDOW,WEDNESDAY_WINDOW,THURSDAY_WINDOW,FRIDAY_WINDOW,SATURDAY_WINDOW,SUNDAY_WINDOW)。 。如果operation和window_name为NULL,client_name将启用/禁止。 。如果operation not NULL,windows_name被忽略,operation指定的'client_name'启用/禁止。 。如果operation NULl,windows_name not NULL那么client_name指定的窗口将启用/禁止。 管理自动维护的窗口或JOB Oracle 10g中以dba_scheduler_jobs.job_name形式 Oracle 11g有所改变,视图dba_autotask_window_clients可以查看一周七天执行情况。 DBA_AUTOTASK_WINDOW_CLIENTS WINDOW_NAME ->维护窗口的名称,周一至周七 WINDOW_NEXT_TIME->下一次维护窗口计划的时间,除非此维护窗口被禁用 WINDOW_ACTIVE ->指定维护窗口是否活动 TRUE/FALSE AUTOTASK_STATUS ->系统自动维护任务状态 ENABLED/DISABLED OPTIMIZER_STATS ->优化器统计信息收集状态 ENABLED/DISABLED SEGMENT_ADVISOR ->段顾问状态 ENABLED/DISABLED SQL_TUNE_ADVISOR->SQL优化顾问状态 ENABLED/DISABLED HEALTH_MONITOR ->健康监控状态 ENABLED/DISABLED 如WINDOW_ACTIVE为FALSE表示自动维护相关窗口均失效。 begin dbms_scheduler.enable( name=>'MONDAY_WINDOW'); end; / execute DBMS_AUTO_TASK_ADMIN.ENABLE; execute DBMS_AUTO_TASK_ADMIN.DISABLE; dba_autotask_task dba_autotask_client dba_autotask_client_job dba_autotask_window_clients dba_autotask_client_history dba_scheduler_jobs dba_scheduler_job_classes dba_scheduler_window_groups dba_scheduler_windows dba_scheduler_wingroup_members dba_autotask_job_history Statistics on Table,Index adn Columns DBA_TABLES DBA_OBJECT_TABLES DBA_TAB_STATISTICS DBA_TAB_COL_STATISTICS DBA_TAB_HISTOGRAMS DBA_TAB_COLS DBA_COL_GROUP_COLUMNS DBA_INDEXES DBA_IND_STATISTICS DBA_CLUSTERS DBA_TAB_PARTITIONS DBA_TAB_SUBPARTITIONS DBA_IND_PARTITIONS DBA_IND_SUBPARTITIONS DBA_PART_COL_STATISTICS DBA_PART_HISTOGRAMS DBA_SUBPART_COL_STATISTICS DBA_SUBPART_HISTOGRAMS dba_autotask_client -->dba_scheduler_window_groups -->dba_scheduler_windows -->dba_scheduler_jobs -->dba_autotask_client -->dba_scheduler_job_classes
--关闭sql tuning advisor,避免消耗过多的资源 BEGIN DBMS_AUTO_TASK_ADMIN.disable( client_name => 'sql tuning advisor', operation => NULL, window_name => NULL); END; / --关闭auto space advisor,避免消耗过多的IO,还有避免出现这个任务引起的library cache lock BEGIN DBMS_AUTO_TASK_ADMIN.disable( client_name => 'auto space advisor', operation => NULL, window_name => NULL); END; / --光闭自动统计信息收集,(慎用,除非有其他手工收集统计信息的完整方案,否则不建议关闭) BEGIN DBMS_AUTO_TASK_ADMIN.disable( client_name => 'auto optimizer stats collection', operation => NULL, window_name => NULL); END; / --启动sql tuning advisor BEGIN DBMS_AUTO_TASK_ADMIN.enable( client_name => 'sql tuning advisor', operation => NULL, window_name => NULL); END; / --启动auto space advisor BEGIN DBMS_AUTO_TASK_ADMIN.enable( client_name => 'auto space advisor', operation => NULL, window_name => NULL); END; / --启动自动统计信息收集 BEGIN DBMS_AUTO_TASK_ADMIN.enable( client_name => 'auto optimizer stats collection', operation => NULL, window_name => NULL); END; / --关闭星期天的自动段顾问Job BEGIN dbms_auto_task_admin.disable( client_name => 'auto space advisor', peration => NULL, window_name => 'SUNDAY_WINDOW'); END; /
服务器生成的预警 默认情况下受监视的度量大约有60个,其中包括: 中断作业计数 等待所用的数据库时间百分比(%) 转储区占用率(%) 参照基线的SQL响应时间百分比(%) 表空间占用率(%) 一般意外事件 另外一些可提前提供问题通知的重要度量 平均文件读取时间(厘秒) 响应时间(每事务处理) 等待时间(%) 对预警作业响应 如果需要,应收集更多的输入信息(如运行ADDM阔其它指导进行收集)。 调查严重错误 采取纠正措施 确认不会自动清空的预警 服务器生成预警分为两种类型:阀值预警(有状态)和非阀值预警(无状态) 数据库度量设置预警阀值和严重阀值来配置的,可为120多个度量定义阀值: 每秒的物理读取次数 每秒的用户提交次数 SQL服务响应时间 有状态预警显示在DBA_OUTSTANDING_ALERTS视图中,清空后转到DBA_ALERT_HISTORY(无状态预警也存储在内)视图中。 总结 数据库统计信息,主要使用dbms_stats.程序包进行收集和调用。在使用dbms_stats程序包时可设置数据库或采集对象的首选项。 自动工作量资料档案库AWR,dbms_workload_repository,可以创建快照create_snapshot,创建用于比对的基线create_baseline。 $ORACLE_HOME/rdbms/admin/awrrpt.sql 使用自动数据库诊断监视器ADDM $ORACLE_HOME/rdbms/admin/addmrpt.sql 自动诊断指导框架 dbms_advisor,可以对内存,磁盘I/O,SQL语句,锁等等提供优化和建议 服务器生成的预警日志 维护自动任务