Databaseを運用していて、表領域が足りなくなってくる。使用率のしきい値を超えてアラートが出ている。表領域の空きが少なくなっているが、追加するためのデータファイルが無い、または残り少ない。そんなDBを運用している場合、既存の表や索引で断片化してるのを解消することで、新たにデータファイルを追加しなくても、表領域の空き領域を増やすことができます。表領域の容量が足りなくなったら、盲目的にデータファイルを追加するのではなく、断片化を解消することで、効率よく表領域を利用し、更には表や索引のアクセススピードを上げることも可能です。Databaseにおいて、表や索引を作り、その後の運用でInsertやUpdate、Deleteの更新処理によって、段々と表や索引の使用領域が断片化していきます。断片化のデメリットとして、無駄に領域を使用したり、Selectでの参照において読み込むブロック数が増えるといった性能への影響もあります。定期的に断片化解消の運用を行うことが、未然に性能劣化を防ぐ手当になります。表の断片化はデータの更新・削除によって表内部で空き領域が分散している状態になります。索引と違い、行を格納するブロックが値によって影響されないため、表の空きブロックは再利用されるが、読み込みブロック量は多くなります。Scanは表全体のブロックを読み込むため、断片化による処理影響を最も強く受けます。表断片化は、セグメントの管理方法と、セグメント内の空きブロックの状況により確認します。Blocks」:セグメントがいっぱいになった(PCTFREEに達した)ブロック数を表しています。>=40%といったところでしょうか。運用しているシステムによってサイズのしきい値は変更すべきですが。断片化率と解消対象の考え方は上記ASSMセグメントの考え方と同じ。上記の中でオススメするとしたら、2.Moveでしょうか。同じ表領域の中で再作成するのでキレイに断片化が解消されます。1.SHRINKは元表内での圧縮なので、若干、断片化が残るイメージ。3.Expdp/Impdpは一旦、ファイルを吐き出して、入れ直すので、2.Moveよりは若干手間なイメージです。断片化解消のために提供されているOracleのコマンド。COMPACTIONとSHRINKの2ステップで構成されている。COMPACTIONで表データの断片化を解消し、SHRINKで未使用領域を開放する。表に対して行移動ができるようにしておく必要があります。1)COMPACTIONのイメージcompactionのイメージ2)SHRINKのイメージshrinkのイメージ【表断片化の解消方法〜MOVE〜】Oracle内部で表の再構築(コピー)することで断片化を解消する。Move先の表領域に表のコピーを作成し、コピーが完了したら既存の表は削除される。索引がある場合はMove後に再構築が必須となる。MOVE;1)コピーのイメージMOVEによるコピーのイメージ(2)コピー後の元表の削除イメージMOVEによるコピー後の元表の削除イメージ【表断片化の解消方法〜Expdp/Impdp〜】Expdp/Impdpによって表、索引の再作成することで断片化を解消する。ExpdpでOS上のファイルにデータを出力し、オブジェクトの削除後にImpdpする。断片化イメージ索引データの追加・削除によって、削除エントリーが増加し、領域が開放されずに残った状態です。影響としては、読み込みブロック数が多くなる。索引は表と異なり、行を格納するブロックが値の範囲に影響されるため、先雨女後の空き領域が再利用されにくい傾向がある。断片化が進行してブロック数が増加すると、不要にBツリーが高くなり、索引アクセス全体の性能に影響する。Scanの性能に影響する。断片化の確認手順は以下のとおり。※排他テーブルロックが発生し、対象の表への更新が待たされる。LF_ROWS)が大まかな目安になるかと。解消方法としては、以下を実施する。索引の再編成を実行する。ONLINEの指定有無で動作が変わる。表を読み込んで作成するため、REBUILD(ONLINEなし)と比べ、断片化解消に時間がかかる。同じブランチ内で、空き領域が50%以上存在し、(論理的に)隣り合った2つのリーブ・ブロックを結合し、未使用領域を開放する。・8i以降使用可能REBUILD(ONLINEなし)実行中は索引が使用できないため、システムによっては業務停止やメンテナンス時間に実施するか、他の手段を利用することを検討。索引REBUILDのチューニング索引を作成、再編成する際にはソート処理が発生するが、自動PGAの場合には1セッションあたりのメモリソート領域が、PGA_AGGREGATE_TARGETとの比率に依存して制限されている。そのため、ただREBUILDするだけでは、この制限により時間が掛かる場合がある。索引再編成の高速化については以下の2点が考えられる。索引の再編成を行う際に、下記SQLを実行してセッション単位でメモリソート領域を拡大することでディスクソートを避けて、高速化に再編成できる。REBUILD;再編成のパラレル化パラレル化を行うことで並列読み込み、並列作成のメリットがあるだけでなく、メモリソート領域が増加するというメリットもある。1.でセッションあたりのメモリソート領域を拡大しておくと、パラレル化した場合には各パラレル・スレーブ・プロセス(PQ)毎に設定が適用されるため、最大サイズがより大きなメモリソート領域を確保することが可能になる。INDEX文により、索引のデフォルトDEGREEを元の設定に戻す必要がある。通常のユーザー表領域とは表領域の使用ロジックが違うため、ユーザー表領域と同じ監視方法では正しく監視できません。性能問題で既存のSQLレポートより多くの情報を取得でき、今後の性能改善に役立てることができます。利用したことがなければ、ぜひ導入を検討してみませんか。アカウント作成とDatabase作成が15分程度で完了します。定期的に見ることは無くても、性能問題や障害のタイミングで見たことがある人は多いと思います。そもそもSTATSPACKって何?どんな情報が取得できるの?といったところから解説していきます。コメントをキャンセルメールアドレスが公開されることはありません。コメントデータの処理方法の詳細はこちらをご覧ください。Homescreen!Add。