
■ 新年度対応
勤め先のシステムには、年度を分割キーとしているパーティションテーブルがあります。そう、年度で区切ってるため新年度が始まるたびにパーティションを追加しなければなりません。
正直、環境を弄るのは怖いのでやりたくないんですけど、これもお仕事です。気合い入れてやっていきましょう。
■ 環境調査
基本的な環境を再確認します。
①まず、Oracleのバージョンを確認します。
-- Oracleのバージョンを確認するSQL
select * from v$version
②次に、パーティションテーブルの一覧を確認します。
-- パーティションテーブルの一覧
SELECT TABLE_NAME,PARTITIONING_TYPE,PARTITION_COUNT
FROM dba_part_tables WHERE OWNER = [ユーザー名]
「PARTITIONING_TYPE」には、リスト、レンジなどのパーティションの種類が、「PARTITION_COUNT」にはパーティションの分割件数が表示されます。
③さらに、パーティション化キーを確認します。
-- パーティション化項目の確認
SELECT NAME,COLUMN_NAME,COLUMN_POSITION
FROM dba_part_key_columns
WHERE OWNER = [ユーザー名] AND OBJECT_TYPE = 'TABLE'
ORDER BY NAME,COLUMN_NAME,COLUMN_POSITION
「COLUMN_NAME」に分割キーにしている項目を確認します。
④最後に、パーティションの詳細を確認します。
-- パーティションの定義の確認
SELECT TABLE_NAME,PARTITION_NAME,HIGH_VALUE,TABLESPACE_NAME
FROM dba_tab_partitions
WHERE TABLE_OWNER = [ユーザー名]
ORDER BY TABLE_NAME,PARTITION_POSITION
「PARTITION_NAME」にはパーティション名、「HIGH_VALUE」には分割する値、「TABLESPACE_NAME」にはパーティションを作成しているテーブルスペースの名称が表示されます。
■ 結果
バージョンは11gのエンタープライズエディション、パーティションの種類はリストパーティションです。
④の「HIGH_VALUE」の値に"DEFAULT"ってのがあったので、リストに指定していない値が入ってきても大丈夫なようにしているようです。
■ 後書き
このパーティションってエンタープライズエディションのオプション機能なんですよね。
開発環境はスタンダードエディションなので、事前に開発環境でテスト出来ないってのが怖くてなりません。
どうしてもテストするとなると、本番環境のOracleに適当なユーザーを追加して、そこにテスト用のパーティションテーブルを作って試して見るって感じでしょうか?
うーん、しかし本番環境用のストレージに妙なゴミを残すと、後々祟りそうな気がしますし...
何となならないものですかねぇ。
次回:Oracleのリストパーティションを追加(分割)してみた Part2 やってみた
最新の記事:http://harikofu.blog.fc2.com/
投稿記事の一覧:http://harikofu.web.fc2.com/
--- blog end —
スポンサードリンク


