プロが教えるORACLEの表や索引の断片化解消の見積り方法

1.表の場合

‘★Owner’と’★TableName’は調査対象を指定してください。

begin
declare
  name varchar2(100);
  descr varchar2(500);
  objid number;
  begin
    name := ‘Test’;
    descr := ‘Segment Advisor Test’;
    
    dbms_advisor.create_task(‘Segment Advisor’,:id,name,descr,NULL);
    
    dbms_output.put_line(‘ID = ‘ || :id || ‘ Name = ‘ || name);
    
    dbms_advisor.create_object(
        task_name => name,
        object_type => ‘TABLE’,
        attr1 => ‘★Owner’,
        attr2 => ‘★TableName’,
        attr3 => NULL,
        attr4 => NULL,
        attr5 => NULL,
        object_id => obj_id);

    dbms_advisor.set_task_parameter(
        task_name => name,
        parameter => ‘RECOMMEND_ALL’,
        value => ‘TRUE’);

    dbms_advisor.set_task_parameter(name,’VERBOSE’,’TRUE’);

    dbms_advisor.execute_task(name);
  end;
end;

2.索引の場合

‘★Owner’と’★IndexName’は調査対象を指定してください。

begin
declare
  name varchar2(100);
  descr varchar2(500);
  objid number;
  begin
    name := ‘Test’;
    descr := ‘Segment Advisor Test’;
    
    dbms_advisor.create_task(‘Segment Advisor’,:id,name,descr,NULL);
    
    dbms_output.put_line(‘ID = ‘ || :id || ‘ Name = ‘ || name);
    
    dbms_advisor.create_object(
        task_name => name,
        object_type => ‘INDEX’,
        attr1 => ‘★Owner’,
        attr2 => ‘★IndexName’,
        attr3 => NULL,
        attr4 => NULL,
        attr5 => NULL,
        object_id => obj_id);

    dbms_advisor.set_task_parameter(
        task_name => name,
        parameter => ‘RECOMMEND_ALL’,
        value => ‘TRUE’);

    dbms_advisor.set_task_parameter(name,’VERBOSE’,’TRUE’);

    dbms_advisor.execute_task(name);
  end;
end;




3.結果の確認

1、もしくは2の実行結果からタスクIDを確認してください。
確認したタスクIDを★に設定して実行してください。

select
  *
from
  dba_advisor_recommendations a
where
  a.TASK_ID = ‘★’
;

↑断片化の効果が10MB以上の場合はこちらで表示されます。

select
  *
from
  DBA_ADVISOR_FINDINGS a
where
  a.TASK_ID =’★’
;

↑断片化の効果が10MB未満の場合はこちらで表示されます。



>>おすすめのORACLE参考書まとめ





【SQLでお困りの方にオススメ】
■SQLが遅くなる原因
・SQLが突然遅くなる原因と対応方法
・OracleSQLのレスポンスが遅い原因3つ
・JOINを使って表結合するとSQLが遅い!?
・SQLがパラレル実行されない原因

■SQLチューニングの基礎知識
・ORACLE SQLのヒントとは
・ORACLEのオプティマイザと実行計画について
・ORACLEのテーブルやインデックスの「統計情報」とは

■SQLチューニングの方法
・SLECT文が遅いときのインデックス作成によるチューニング方法
・Update文が遅いときのチューニング方法
・Delete文が遅いときのチューニング方法
・IN句をEXISTS句に置き換えするチューニング方法
・OR句の置き換えによるチューニング方法
・IN句の置き換えによるチューニング方法
・テーブルアクセスフルスキャンを無くしてチューニングする方法
・SQLでGROUP BYが遅いときのチューニング方法
・SQLのソート処理が遅い場合のチューニング方法

■表や索引の断片化対策
・プロが教えるORACLEの表や索引の断片化解消の見積り方法
・ORACLE表の断片化を解消する3つの方法

■SQLのチューニングの補足情報
・ORACLE SQLヒントの書き方
・SQLに複数のヒントの書き方
・OracleSQLに実装すべき3つのSQLヒント
・ORACLE表の統計情報取得日の確認方法
・「統計情報が古い」とはどういうことか
・ORACLE表の統計情報の取得方法

【自己学習したい方にオススメ】
・自宅で勉強用にORACLEデータベースを無償でダウンロードし構築する方法
・OracleMasterGold12cに一ヵ月で合格した勉強方法
・OracleMasterExpertパフォーマンス&チューニングに一ヵ月で合格した勉強方法
・手に職がない人はIT業界へ、オススメ資格と勉強方法
・OracleDBのチューニング勉強方法
・OraclePL/SQL勉強方法