TA的每日心情 | 开心 2023-8-9 11:05 |
---|
|
1.段指导需要的权限
对数据库进行空间分析,主要是看表和索引的碎片回收率,建议使用oracle的段指导,如果不是sysdba,则需要授权,或者直接使用sys用户
2.自动段指导是否开启
自动维护任务使用默认的窗口和调度,如果开启,可以直接查询分析过的任务
- select client_name,window_group ,status from dba_autotask_client;
- CLIENT_NAME WINDOW_GROUP STATUS
- ---------------------- ------------------ ------------------------------ --------
- auto optimizer stats collection ORA$AT_WGRP_OS ENABLED
- auto space advisor ORA$AT_WGRP_SA ENABLED
- sql tuning advisor ORA$AT_WGRP_SQ ENABLED
复制代码 指导任务可以针对以下类型进行操作
- select * from dba_advisor_definitions;
- ADVISOR_ID ADVISOR_NAME PROPERTY
- ---------- ------------------------------ ----------
- 1 ADDM 1
- 2 SQL Access Advisor 303
- 3 Undo Advisor 1
- 4 SQL Tuning Advisor 935
- 5 Segment Advisor 67
- 6 SQL Workload Manager 0
- 7 Tune MView 31
- 8 SQL Performance Analyzer 935
- 9 SQL Repair Advisor 679
- 10 Compression Advisor 3
- 11 SPM Evolve Advisor 935
- 12 Statistics Advisor 935
复制代码 3.手动运行段指导
对单表或者多表做段分析
如果是多个表,则相应添加dbms_advisor.create_object行修改对应得表名就可以了。
- DECLARE
- taskname varchar2(100);
- taskdesc varchar2(128);
- task_id number;
- object_id number;
- timeLimit varchar2(25);
- numDaysToRetain varchar2(25);
- objectName varchar2(100);
- objectType varchar2(100);
- BEGIN
- taskname := 'SEGMENTADV_01';
- taskdesc :='SEGMENTADV';
- numDaysToRetain :='30';
- dbms_advisor.create_task('Segment Advisor',taskname,taskdesc,NULL);
- dbms_advisor.create_object( task_name => taskname, object_type => 'TABLE', attr1 => 'ZHYU', attr2 => 'OBJS', attr3 => ' ', attr4 => NULL, attr5 => NULL,object_id => object_id);
- dbms_advisor.set_task_parameter(taskname, 'RECOMMEND_ALL', 'TRUE');
- dbms_advisor.set_task_parameter(taskname, 'DAYS_TO_EXPIRE', numDaysToRetain);
- END;
- DECLARE
- taskname varchar2(100);
- BEGIN
- taskname := 'SEGMENTADV_01';
- dbms_advisor.reset_task(taskname);
- dbms_advisor.execute_task(taskname);
- END;
复制代码 对表空间进行段分析
如果是多个表空间,则相应添加dbms_advisor.create_object行修改对应得表空间名就可以了。
- DECLARE
- taskname varchar2(100);
- taskdesc varchar2(128);
- task_id number;
- object_id number;
- timeLimit varchar2(25);
- numDaysToRetain varchar2(25);
- objectName varchar2(100);
- objectType varchar2(100);
- BEGIN
- taskname := 'SEGMENTADV02';
- taskdesc := 'SEGMENTADV';
- numDaysToRetain :='30';
- dbms_advisor.create_task('Segment Advisor',taskname,taskdesc,NULL);
- dbms_advisor.create_object( task_name => taskname, object_type => 'TABLESPACE', attr1 => 'TBS_PIS_DATA01', attr2 => 'NULL', attr3 => NULL, attr4 => NULL, attr5 => NULL, object_id => object_id);
- dbms_advisor.set_task_parameter(taskname, 'RECOMMEND_ALL', 'TRUE');
- dbms_advisor.execute_task(taskname);
- END;
复制代码 4.查询运行状态
- set lines 200
- col DESCRIPTION for a50
- SELECT TASK_NAME,
- DESCRIPTION,
- STATUS,
- EXECUTION_START,
- EXECUTION_START
- FROM DBA_ADVISOR_TASKS
- WHERE ADVISOR_NAME = 'Segment Advisor'
- ORDER BY 4 DESC;
复制代码 5.查询任务结果
dba_advisor_xxx 视图保存了结果;dba_advisor_tasks可以查看task的状态,确定其是否完成;dba_advisor_findings
一个更好的办法是使用
DBMS_SPACE.ASA_RECOMMENDATIONS
- SELECT
- 'Segment Advice --------------------------'
- || CHR(10)
- || 'TABLESPACE_NAME : '
- || tablespace_name
- || CHR(10)
- || 'SEGMENT_OWNER : '
- || segment_owner
- || CHR(10)
- || 'SEGMENT_NAME : '
- || segment_name
- || CHR(10)
- || 'ALLOCATED_SPACE : '
- || allocated_space
- || CHR(10)
- || 'RECLAIMABLE_SPACE: '
- || reclaimable_space
- || CHR(10)
- || 'RECOMMENDATIONS : '
- || recommendations
- || CHR(10)
- || 'SOLUTION 1 : '
- || c1
- || CHR(10)
- || 'SOLUTION 2 : '
- || c2
- || CHR(10)
- || 'SOLUTION 3 : '
- || c3 Advice
- FROM
- TABLE(dbms_space.asa_recommendations('TRUE', 'TRUE', 'FALSE'));
复制代码- SET TERMOUT OFF
- SET ECHO OFF
- SET FEEDBACK OFF
- SET HEADING ON
- SET LINESIZE 200
- SET PAGESIZE 3000
- SET TIMING OFF
- SET TRIMSPOOL ON
- SET VERIFY OFF
- CLEAR COLUMNS BREAKS COMPUTES
- CLEAR COLUMNS BREAKS COMPUTES
- col tablespace_name format a30 heading 'ts_name'
- col segment_owner format a30 heading 'seg_owner'
- col segment_name format a30 heading 'seg_name'
- col allocated_space for 999,999,999,999 heading 'allo_mb'
- col reclaimable_space for 999,999,999,999 heading 'used_mb'
- col reclaimable_space for 999,999,999,999 heading 'recl_mb'
- BREAK ON report
- COMPUTE sum OF allo_mb ON report
- COMPUTE sum OF recl_mb ON report
- SELECT
- tablespace_name
- ,segment_owner
- ,segment_name
- ,setment_type
- ,round(allocated_space/1024/1024,0) allo_mb
- ,roud(used_space/1024/1024,0) used_mb
- ,round(reclaimable_space/1024/1024,0) recl_mb
- FROM
- TABLE(dbms_space.asa_recommendations('TRUE', 'TRUE', 'FALSE'));
复制代码- set markup html on spool on
- SPOOL ADVISOR.HTML
- set pagesize 200
- set echo on
- select af.task_name, ao.attr2 segname, ao.attr3 partition, ao.type, af.message
- from dba_advisor_findings af, dba_advisor_objects ao
- where ao.task_id = af.task_id
- and ao.object_id = af.object_id;
-
- select tablespace_name, segment_name, segment_type, partition_name,
- recommendations, c1 from
- table(dbms_space.asa_recommendations('FALSE', 'FALSE', 'FALSE'));
- spool off
- set markup html off spool off
复制代码
7.执行段指导时,会不停重复这两个sql_id
- SQL> select sid,serial#,sql_id,program,event,blocking_session from v$session where sid=2653;
- 2653 43327 7wgks43wrjtrz sqlplus@p0-cnpic-db1 (TNS V1-V3) db file sequential read
- Elapsed: 00:00:00.00
- SQL> /
- 2653 43327 8szmwam7fysa3 sqlplus@p0-cnpic-db1 (TNS V1-V3) gc cr request
- SQL> select sql_fulltext from v$sql where sql_id='&sql_id';
- Enter value for sql_id: 8szmwam7fysa3
- old 1: select sql_fulltext from v$sql where sql_id='&sql_id'
- new 1: select sql_fulltext from v$sql where sql_id='8szmwam7fysa3'
- insert into wri$_adv_objspace_trend_data select timepoint, space_usage, space_a
- lloc, quality from table(dbms_space.object_growth_trend(:1, :2, :3, :4, NULL, N
- ULL, NULL, 'FALSE', :5, 'FALSE'))
- SQL> select sql_fulltext from v$sql where sql_id='&sql_id';
- Enter value for sql_id: 7wgks43wrjtrz
- old 1: select sql_fulltext from v$sql where sql_id='&sql_id'
- new 1: select sql_fulltext from v$sql where sql_id='7wgks43wrjtrz'
- SELECT U.SPACE_USED, U.SPACE_ALLOCATED FROM TABLE(DBMS_SPACE.OBJECT_SPACE_USAGE_
- TBF( :B1 , :B2 , :B3 , 0, :B4 , 'TRUE', :B5 )) U
复制代码 |
|