
■ 普通のテーブル
Oracleで圧縮(Advanced Compression)されているテーブル一覧を取得しようと思います。
圧縮の有無は、USER_TABLESで確認できるようです。
/*
* 圧縮(Advanced Compression)テーブルの一覧
*/
SELECT
TABLE_NAME
,COMPRESSION
FROM
USER_TABLES
WHERE
COMPRESSION = 'ENABLED'
ORDER BY
TABLE_NAME
COMPRESSION列の値が ENABLED であれば、圧縮されているってことらしいです。
なお、DISABLED は圧縮されていないということなのですが、上記のSQL文からWHERE条件を消すと、COMPRESSION列の値が NULL になっているテーブルが存在します。
■ パーティションテーブル
OMPRESSION列の値が NULL になっているのは、パーティションで分割しているテーブルでした。パーティションテーブルは特性上、分割した単位で色々と設定できます。
例えば、実績系のテーブルで年度で分割して、アクセス頻度の少ない古い年度のパーティションだけ圧縮するってことも出来るのでしょうね。
そこで、パーティションの情報が格納されている DBA_TAB_PARTITIONS から COMPRESSION列の値が ENABLED となっているデータを取得すればOKです。
/*
* 圧縮(Advanced Compression)テーブルの一覧
* パーティションテーブル
*/
SELECT
TABLE_OWNER
,TABLE_NAME
,PARTITION_NAME
,COMPRESSION
,COMPRESS_FOR
FROM
DBA_TAB_PARTITIONS
WHERE
COMPRESSION = 'ENABLED'
ORDER BY
TABLE_OWNER
,TABLE_NAME
,PARTITION_NAME
■ 後書き
システムの移行のため、Oracle11g → Oracle12c へ移行することになりました。その移行確認のために、色々と設定に差異が無いか確認するために必要になったのです。
正直、適当に「Oracle 圧縮 テーブル 一覧」とかで検索すればサクッと見つかると思ったのですが、出てくるのは圧縮の設定方法や、圧縮した結果の検証とかばかり。
結局、Oracleのマニュアルを見ることになりました。
・・・簡単すぎて、誰もネットに情報をあげようと思わなかったってことかな?
最新の記事:http://harikofu.blog.fc2.com/
投稿記事の一覧:http://harikofu.web.fc2.com/
--- blog end ---
スポンサードリンク


