表圧縮について All rights reserved. SECUREFILEでは、BASICFILEから以下のように変更されています。また、UNDOデータはすべてRETENTIONになります。つまり、自動UNDO管理モードでないと使用できません。, 圧縮機能と重複除外機能は、以下のようになります(ただし、Advanced Compressionオプションが必要です)。暗号化については別の機会に説明しようと思います。, 3. ③ LOBセグメントを拡張します。, このLOB索引は、チャンク・サイズが適切でないと増加してしまうため、未使用領域の検索時にアクセス数も増えてしまいます(チャンク・サイズのデフォルトは、Oracleブロックの1ブロック・サイズです)。そのため、LOBデータのサイズとチャンク・サイズを同じにするように指定します(Oracleブロック・サイズの整数倍で指定する必要があります)。ただし、LOBデータのサイズが常に同じとは限りませんので、設定するのが簡単ではありません。LOB索引名やチャンク・サイズなどは以下のようにして確認できます。, (2)SECUREFILE LOB OracleのCLOB列のサイズをバイト単位で取得するにはどうすればよいですか?LENGTH()とDBMS_LOB.getLength()は両方ともCLOBで使用される文字数を返しますが、使用されているバイト数を … 基本表圧縮は、ダイレクト・インサート操作(第15回で説明したダイレクト・パス・インサート、テーブル/パーティションのMOVE操作など)だけで圧縮することができる機能です。それに対してOLTP表圧縮は、ダイレクト・インサート操作以外のSQLでも圧縮するようになっています(ただし、列数の最大が255個までの制限があります)。OLTP表圧縮は、通常のSQLでも圧縮を行いますが、SQL文ごとにデータ圧縮が動作するのではなく、Oracleブロックの領域使用率が閾値(PCTFREEを基に計算された閾値)を超えたとき、Oracleブロック内のデータを圧縮します。指定はOracle11gR2から以下のように変更されています(デフォルトは基本表圧縮”BASIC”です)。, ILMなどで必要なときに圧縮する場合は、基本表圧縮(MOVE操作など)で問題ありません。また、初期ロード(ダイレクト・ロードなど)で圧縮する場合も基本表圧縮で問題ありません。ただし、通常のINSERT文で大量に挿入するような場合は、OLTP圧縮を使用する必要があります。ETLツールなどでは、ダイレクト操作を行わない(PL/SQLなどで行う)ものがありますので、その場合もOLTP圧縮が必要になりますので注意してください。, (2)ウェアハウス圧縮とアーカイブ圧縮

津島博士のパフォーマンス講座 第78回 Oracle DatabaseのJSONについて, Maximum Security Zonesで、クラウドのセキュリティ対策の弱体化を防ぐ, チャンク・サイズが可変長になります。チャンク・サイズは、LOBデータ・サイズと領域の使用状況から自動チューニングされますので、CHUNKパラメータは無視されます(サイズが異なるLOBデータでも効果的に管理することが可能です)。, 基本はLOB索引を使用しません(行データに格納されているLOBセグメントへのポインタを使用します)。未使用領域の検索は、LOBセグメント内の管理情報(領域の使用状況)を共有メモリ上の”in-memory dispenser”にキャッシュされますので、それを使用して行われます(つまり、メモリ上のアクセスのため高速です)。”in-memory dispenser”に存在しない場合には、管理情報を参照して”in-memory dispenser”の更新を行います(このときRETENTION期間を過ぎているチャンクも更新されます)。, LOGGING句にFILESYSTEM_LIKE_LOGGING(メタデータ変更だけをREDOログに生成する)を指定することで、障害の平均リカバリ時間を削減できます。.

dbms_lob.substrで指定するサイズはバイト数ではなく文字数なので、全角文字を扱う場合は桁あふれにご注意ください。 単にclob型を文字列に変換したいだけの場合はto_char関数が使えます。 関連項目 [oracle] clob型を文字型に変換する まずは、BASICFILEについて説明します。

Oracle University の無償オンラインセミナーに参加しませんか。11月は限定で ORACLE MASTER Oracle11gからのパフォーマンス向上(圧縮など)のために、再設計された新しいLOBデータ型です。詳細は「2.LOBデータ型」を参照してください。, (4)圧縮アドバイザ ILMという機能がOracleデータベースにある訳ではありません。これは、情報のライフサイクル(生成されてから必要なくなるまでの流れを表すもの)に対する一般的なソリューションです。すべてのデータのアクセス頻度が同じではないことを利用して、リソースや機能を効果的に管理しましょうというものです。特に大容量データを効果的に管理するには、ディスク容量や性能については大きな問題になります。このILMソリューションをOracleデータベースで実現すると、以下のように時系列のパーティションや表圧縮機能などを使用して実現することが一般的です(パーティションを使用するのは、1つのテーブル内でも管理する必要があるからです)。, このようにパーティション化して、UPDATEしなくなったら(またはUPDATEが少なくなったら)圧縮するためにMOVEパーティションを行います(このときに、性能の異なるディスクに移動なども行う)。現在はこれを自動で行うことはできませんので、運用が複雑になるからと嫌う方もいると思いますが、ディスク容量や性能が不足してくると、ディスク追加などを行っているのと同じことです(圧縮することによって、追加するディスクを削減することも可能です)。, 2. (5)表圧縮の問題点 oracleブロックは、updateによって既存データのサイズが拡張されると、pctfree領域(将来のupdateのために用意する領域の割合)の空きを使用しても足りない場合に、第8回で説明した行移行が発生します。

Oracleデータベースには、表圧縮機能といってもいくつか存在しますので、少し整理してみました。最初に、Oracle9iR2からダイレクト・ロード操作だけで圧縮することができるデータ・セグメント圧縮が提供されました。次に、Oracle Database 11g(Oracle11g)ですべてのSQLで圧縮することが可能なOLTP表圧縮が提供されました(このときデータ・セグメント圧縮から基本表圧縮に変更になっています)。同時に、LOBデータ型に対して圧縮することが可能なSecureFiles機能も提供されています。これをまとめると以下のようになります。, OLTP表圧縮とLOB圧縮は、Advanced Compressionオプションが必要です。ウェアハウス圧縮とアーカイブ圧縮は、EHCC(Exadata Hybrid Columnar Compression)機能ですので、Exadataだけで使用することが可能ですが、表圧縮機能の比較として載せています。, (1)基本表圧縮とOLTP表圧縮の違い