「Oracle Database 12c メッタ斬り!」企画も3回目、今回はOracle Database 12cのもう1つの目玉、「ヒートマップ」に着目した。いわゆるデータのライフサイクル管理を実現するのがこの機能だが、ストレージで行うものとどう違うのか。さらには、ヒートマップを使っていて、新たにストレージを追加する際には、12cはどのような動きとなるのか。何ができるというメリットの観点だけではなく、実際にこの機能を使って運用しようとするとどうなるのかを掘り下げている。さらには、もう1つの目玉機能「redaction」にも話題は発展、redactionを使ったテストの話などにまで言及している。今回も、カタログなどでは触れることのない、Oracle Database 12cの真の姿に近づいた内容となっているはず。データベースエンジニアは必見だ。
ヒートマップ、どう使う?

谷川:今回はASMやヒートマップの話をしましょうか。データライフサイクルはこれまでストレージレベルでやっていました。データベースのレベルでやるというのはすんなり理解できましたか?
新久保:むしろストレージで管理していたILMというのはあまり機能しているのを見たことがないです。ストレージのレイヤレベルでデータを配置したところでアプリケーションのアクセス頻度とはまた違うので。
データベースでやるなら、レコード、セグメント、さらにテーブルレベルで見ることになり、それは意味があるかなと思います。レンジパーティションとヒートマップとか使いやすそう。
谷川:レンジパーティションなら時系列の塊でデータを管理するので、過去のものの取り扱いはアーカイブに近いからね。
新久保:リスクも少なそう。
谷川:ヒートマップの仕組みはASMと密接だと思うけど、必須?
新久保:関係ないです。しかしオーバーヘッドが気になります。アクセスごとにヒートマップのディクショナリーを作るのだし。
谷川:ヒートマップのディクショナリーってSQLとかで見られたりするのかな?
近藤:見えます。
新久保:「v$ ペケペケ」という感じの構文です。 (※新久保補足参照)
谷川:見て分かるものなの?

新久保:例えばこのテーブルで何ブロック読まれているとか、スキャンしたとか。この情報はチューニングや何かに使えるんじゃないかってやらしい気持ちが(笑)。ただライセンス的にはオプションが必要ですけど。
近藤:Advanced Compression Optionのライセンスが必要です。
谷川:このデータを解析するツールとか出てきそう。
新久保:そりゃもうすぐに(笑)。
谷川:需要ありそう。
新久保:12c以前から「手軽に不要なインデックスを知りたい」という要望があります。インデックスをモニタすればいいのですが、負荷や設定で抵抗感あるお客さんが多くて。これからはヒートマップを見れば使われていないインデックスが分かり、安全に捨てることもできると思います。しかしそのために「Advanced Compression Optionのライセンスを買って」とは言えないんですが。
谷川:買ってくれた相手にはコンサルができますよね。
新久保:それで「このゴミのようなインデックスが……」と口を滑らせて怒られちゃったりして(笑)。
一同:(笑)。
※新久保補足
HEAT_MAPに関して
HEAT_MAP機能が有効化されていると様々な粒度でのアクセス統計が取得される。取得されるアクセス統計は、大きく以下の4つ
- ブロックレベル
- エクステントレベル
- オブジェクト/セグメントレベル
- テーブルスペースレベル
これらの情報はv$heat_map_segmentやdbms_heat_mapパッケージにより確認可能。
# ブロックレベルで対象のオブジェクト(この場合はテーブル)のアクセス統計を確認する場合 SQL> select * from table(dbms_heat_map.block_heat_map('SOE','ORDERENTRY_METADATA')); OWNER SEGMENT_NAME PARTITION_NAME TABLESPACE_NAME FILE_ID RELATIVE_FNO BLOCK_ID WRITETIME ----- ------------------------------ --------------- --------------- ---------- ------------ ---------- --------- SOE ORDERENTRY_METADATA SOE 1024 1018128 SOE ORDERENTRY_METADATA SOE 1024 1018129 SOE ORDERENTRY_METADATA SOE 1024 1018130 SOE ORDERENTRY_METADATA SOE 1024 1018131 ... # エクステントレベルで対象のオブジェクト(この場合はテーブル)のアクセス統計を確認する場合 SQL> select * from table(dbms_heat_map.extent_heat_map('SOE','ORDERENTRY_METADATA')); OWNER SEGMENT_NAME PARTITION_NAME TABLESPACE_NAME FILE_ID RELATIVE_FNO BLOCK_ID BLOCKS BYTES MIN_WRITE MAX_WRITE AVG_WRITE ----- ------------------------------ --------------- --------------- ---------- ------------ ---------- ---------- ---------- --------- --------- --------- SOE ORDERENTRY_METADATA SOE 1024 1018128 16 131072 # オブジェクトレベルで対象のオブジェクト(この場合はテーブル)のアクセス統計を確認する場合 SQL> select * from table(dbms_heat_map.object_heat_map('SOE','ORDERENTRY_METADATA')) OWNER SEGMENT_NAME PARTITION_NAME TABLESPACE_NAME SEGMENT_TYPE SEGMENT_SIZE MIN_WRITE MAX_WRITE AVG_WRITE MIN_READT MAX_READT AVG_READT MIN_FTSTI MAX_FTSTI AVG_FTSTI MIN_LOOKU MAX_LOOKU AVG_LOOKU ----- ------------------------------ --------------- --------------- -------------------- ------------ --------- --------- --------- --------- --------- --------- --------- --------- --------- --------- --------- --------- SOE ORDERENTRY_METADATA SOE TABLE 1048576 # テーブルスペースレベルのアクセス統計を確認する場合 SQL> select * from table(dbms_heat_map.tablespace_heat_map('SOE')); TABLESPACE_NAME SEGMENT_COUNT ALLOCATED_BYTES MIN_WRITE MAX_WRITE AVG_WRITE MIN_READT MAX_READT AVG_READT MIN_FTSTI MAX_FTSTI AVG_FTSTI MIN_LOOKU MAX_LOOKU AVG_LOOKU --------------- ------------- --------------- --------- --------- --------- --------- --------- --------- --------- --------- --------- --------- --------- --------- SOE 188 2.4721E+10
≪気になったら今すぐトライアル!≫
Oracle Database 12c トライアル・キャンペーン!

Oracle Database 12cは、もうお試しになりましたか?
Oracle Technology Networkでは、Oracle Database 12cのリリースを記念して、トライアル・キャンペーンを実施中です。 Oracle Database 12c 試用版ソフトウエアをお試しいただき、アンケートに回答していただいた方の中から、合計1,212名様にOracle Database 12cロゴ入りのスペシャルグッズをプレゼントします。Oracle Databaseを使用しているデータベースエンジニアの皆様、ぜひ挑戦してみてください!
Oracle Database 12cトライアル・キャンペーンに参加する!
この記事は参考になりましたか?
- Oracle Database 12c メッタ斬り!連載記事一覧
-
- 最終回!―オラクルはどこへゆく?
- Oracle OpenWorld参加組が語る、12cの「ここがきになる!」
- 12cでデータのライフサイクル管理はどうなる?
- この記事の著者
-
谷川 耕一(タニカワ コウイチ)
EnterpriseZine/DB Online チーフキュレーターかつてAI、エキスパートシステムが流行っていたころに、開発エンジニアとしてIT業界に。その後UNIXの専門雑誌の編集者を経て、外資系ソフトウェアベンダーの製品マーケティング、広告、広報などの業務を経験。現在はフリーランスのITジャーナリスト...
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
-
加山 恵美(カヤマ エミ)
EnterpriseZine/Security Online キュレーターフリーランスライター。茨城大学理学部卒。金融機関のシステム子会社でシステムエンジニアを経験した後にIT系のライターとして独立。エンジニア視点で記事を提供していきたい。EnterpriseZine/DB Online の取材・記事も担当しています。Webサイト:https://emiekayama.net
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
この記事は参考になりましたか?
この記事をシェア