Oracle 11g R1中AWR基线增强(1)
51cto 【转载】 2009年03月13日 10:28
自动工作量仓库是从Oracle 10g开始引入的,不过只包括了一些简单的基线功能,创建一个基线允许保留指定范围内的快照用于性能对比,与AWR保留策略无关,可以使用DBMS_WORKLOAD_REPOSITORY包来管理这个功能,在11g中,它被增强了。
注意,DBMS_WORKLOAD_REPOSITORY包中的大部分存储过程和函数接受DBID参数,该参数是本地数据库的默认标识符,由于这个原因,下面的例子中将会省略掉该参数。
固定基线
相对Oracle 10g而言,11g中的固定或静态基线功能更丰富,最初,在Oracle 10g中,DBMS_WORKLOAD_REPOSITORY包中只提供了一个CREATE_BASELINE存储过程允许你使用特定的快照ID来定义基线,在Oracle 11g中,包括了更多的用于创建基线存储过程和函数,它们使用开始时间和截至时间进行基线创建,这样有助于计算出有关的快照ID,函数与存储过程的参数一样,但返回的是基线的ID,默认基线永远保存,但新的有效期参数expiration允许指定在某一日期后那些基线将自动失效。
SET SERVEROUTPUT ONDECLARE l_return NUMBER;BEGIN -- Using procedures. DBMS_WORKLOAD_REPOSITORY.create_baseline( start_snap_id => 2490,【快照开始ID】 end_snap_id => 2491,【快照截至ID】 baseline_name => 'test1_bl', expiration => 60);【60天后失效】 DBMS_WORKLOAD_REPOSITORY.create_baseline( start_time => TO_DATE('09-JUL-2008 17:00', 'DD-MON-YYYY HH24:MI'),【开始时间】 end_time => TO_DATE('09-JUL-2008 18:00', 'DD-MON-YYYY HH24:MI'),【截至时间】 baseline_name => 'test2_bl', expiration => NULL);【永远都不失效】 -- Using functions. l_return := DBMS_WORKLOAD_REPOSITORY.create_baseline( start_snap_id => 2492, end_snap_id => 2493, baseline_name => 'test3_bl', expiration => 30); DBMS_OUTPUT.put_line('Return: ' || l_return); l_return := DBMS_WORKLOAD_REPOSITORY.create_baseline( start_time => TO_DATE('09-JUL-2008 19:00', 'DD-MON-YYYY HH24:MI'), end_time => TO_DATE('09-JUL-2008 20:00', 'DD-MON-YYYY HH24:MI'), baseline_name => 'test4_bl', expiration => NULL); DBMS_OUTPUT.put_line('Return: ' || l_return);END;/Return: 8Return: 9PL/SQL procedure successfully completed.SQL> |
新的基线在DBA_HIST_BASELINE视图中可见。
COLUMN baseline_name FORMAT A15SELECT baseline_id, baseline_name, START_SNAP_ID, TO_CHAR(start_snap_time, 'DD-MON-YYYY HH24:MI') AS start_snap_time, END_SNAP_ID, TO_CHAR(end_snap_time, 'DD-MON-YYYY HH24:MI') AS end_snap_timeFROM dba_hist_baselineWHERE baseline_type = 'STATIC'ORDER BY baseline_id;BASELINE_ID BASELINE_NAME START_SNAP_ID START_SNAP_TIME END_SNAP_ID END_SNAP_TIME----------- --------------- ------------- ----------------- ----------- ----------------- 6 test1_bl 2490 09-JUL-2008 17:00 2491 09-JUL-2008 18:00 7 test2_bl 2490 09-JUL-2008 17:00 2491 09-JUL-2008 18:00 8 test3_bl 2492 09-JUL-2008 19:00 2493 09-JUL-2008 20:00 9 test4_bl 2492 09-JUL-2008 19:00 2493 09-JUL-2008 20:004 rows selected.SQL> |
使用管道表函数SELECT_BASELINE_DETAILS,指定BASELINE_ID参数,可以返回某个特定基线的信息,也可以使用管道表函数SELECT_BASELINE_METRIC,指定BASELINE_NAM参数,返回同样的结果。
SELECT * FROM TABLE(DBMS_WORKLOAD_REPOSITORY.select_baseline_details(6));SELECT * FROM TABLE(DBMS_WORKLOAD_REPOSITORY.select_baseline_metric('SYSTEM_MOVING_WINDOW')); |
基线可以使用存储过程RENAME_BASELINE进行重命名。
BEGIN DBMS_WORKLOAD_REPOSITORY.rename_baseline( old_baseline_name => 'test4_bl', new_baseline_name => 'test5_bl');END;/ |
使用存储过程DROP_BASELINE可以删除基线。
BEGIN DBMS_WORKLOAD_REPOSITORY.drop_baseline(baseline_name => 'test1_bl'); DBMS_WORKLOAD_REPOSITORY.drop_baseline(baseline_name => 'test2_bl'); DBMS_WORKLOAD_REPOSITORY.drop_baseline(baseline_name => 'test3_bl'); DBMS_WORKLOAD_REPOSITORY.drop_baseline(baseline_name => 'test5_bl');END;/ |
企业管理器可能是管理AWR基线最方便的方法。在“AWR基线”屏幕上(服务器AWR基线),点击“创建”按钮。
选择时间间隔类型“单一”,然后点击“继续”按钮。
输入基线的名字,然后通过选择起止快照ID或指定时间范围来指定基线的起止点。然后点击“完成”按钮。
新创建的基线显示在“AWR基线”屏幕。
可以选中基线名称后,点“删除”按钮将该基线删除,点“查看”按钮查看该基线的详细信息。在“AWR基线”屏幕,选择基线后,从操作下拉列表中选择“调度统计信息计算”,然后点击“开始”按钮,可以进行调度统计。
|