LoginSignup
2
2

More than 3 years have passed since last update.

Oracleのテーブル最適化の作業、メモ書き

Last updated at Posted at 2019-08-08

Oracleで作業していて肥大化したテーブルの割り出しと、テーブルの最適化を行う方法をとりあえずメモ書き。

各テーブルサイズの取得

以下のSQLでテーブル名、テーブルサイズを取得してどのテーブルを最適化するか判断。

SELECT 
      a.table_name AS "テーブル名称"
      ,a.num_rows AS "レコード数"
      , b.MB AS "容量(MB)"
FROM user_tables a 
      , (Select Segment_Name,Sum(bytes)/1024/1024 MB From user_segments Group By Segment_Name) b 
WHERE a.table_name = b.Segment_Name
ORDER BY a.num_rows desc, b.MB desc;

元のSQLはこちらを参考に

テーブルの行移動を有効にする

以下のSQLを使ってテーブルの行移動を有効にする。すでに行移動が有効になっている場合には必要ない。

ALTER TABLE "テーブル名" ENABLE ROW MOVEMENT;

テーブルの縮小を行う

以下のSQLを使ってテーブルの縮小を行う。
CASCADEは関連するインデックスのサイズの縮小まで行う。COMPACTにも切り替えができるが、こちらはセグメントデータの再構成のみ行う。

ALTER TABLE "テーブル名" SHRINK SPACE CASCADE;

補足

一先ずメモ書き程度にまとめ。
追々記述を追加するかも。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2