社内SEの徒然なる日記

Oracleの圧縮テーブルの一覧取得方法(Advanced Compression)

■ 普通のテーブル

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 --- スポンサードリンク

PageTop

コメント


管理者にだけ表示を許可する