一般社団法人 全国個人事業主支援協会

COLUMN コラム

  • Oracleのパーティションで「EXCHANGE」を使用する際には注意せよ

前回の続き。

大量データを扱う上で大変便利な(むしろ、なくてはならない必須機能)パーティションですが、EXCHANGEを使用する際に「思ってた挙動と違う!」ということが現場であったため、備忘録としてまとめておきます。

 

1.EXCHANGE PARTITION とは

読んで字の如く、パーティションを入れ替える機能。

 

2.当初考えていた挙動

<例>

売上年月ごとにパーティション化(=レンジパーティション)されたテーブルA(販売履歴テーブル)に対して、2021年4月から2022年3月までのデータをパーティション単位でバックアップしたい。

 

<案>

テーブルAと全く同じパーティション構造の空テーブルB(販売履歴バックアップテーブル)を作成して、テーブルAとパーティション単位で交換(EXCHANGE)すれば、簡単にかつ高速にバックアップが取れるのではないか!

 

3.実際の挙動

上記案は実現できませんでした。

なぜなら、『非パーティション表とパーティション表間でのみ交換が可能』だから。

つまり、上記の場合はテーブルBを非パーティションにしないと交換ができなかったのです。

 

そうなると「じゃあ1年分=12個のパーティションを交換するにはどうしたらいいの?」と思った方。

そうなんです、その場合は非パーティションのテーブルBを12個用意しなければなりません。

 

なんじゃそりゃ〜〜〜!!という気持ちになりました。

それなら処理時間かかってもCTASでテーブルごとバックアップ作成するわ!!

 

 

4.まとめ

イメージしていた機能と実際の機能は違うというお話でした。

実際に使ってみないと分からないことは技術の世界にはいっぱいありますよね。

 

今後も、自分の手を動かして様々な技術に触れていきたいと思います。

 

この記事をシェアする

  • Twitterでシェア
  • Facebookでシェア
  • LINEでシェア