日本語PDF

5.2 ヒート・マップおよびADOを使用したILM戦略の実装

データベースでのデータ移動のために情報ライフサイクル管理(ILM)計画を実装するには、ヒート・マップおよび自動データ最適化(ADO)の機能を使用します。

ノート:

ヒート・マップおよびADOは、Oracle Database 12cリリース2のマルチテナント環境でサポートされています。

この項では、次の項目について説明します。

関連項目:

5.2.1 ヒート・マップの使用

ILM戦略を実装するために、Oracle Databaseのヒート・マップを使用すればデータのアクセスと変更を追跡できます。

ヒート・マップは、セグメント・レベルのデータ・アクセス・トラッキングおよびセグメントおよび行レベルのデータ変更トラッキングを提供します。HEAT_MAP初期化パラメータを使用して、この機能を有効にできます。

ヒート・マップ・データは、ADOポリシーを使用してインメモリー列ストア(IM列ストア)のコンテンツを管理するための、自動データ最適化(ADO)を支援します。列統計およびその他の関連統計が含まれるヒート・マップ・データを使用すると、IM列ストアがいつ満杯(メモリー不足)になるかを判断できます。ほぼ満杯と判断されたときに、アクセス頻度が高くIM列ストアに移入することで利点が得られるセグメントが存在する場合は、非アクティブなセグメントが削除されます。

この項では、次の項目について説明します。

関連項目:

5.2.1.1 ヒート・マップの有効化および無効化

HEAT_MAP句を含むALTER SYSTEMまたはALTER SESSION文を使用して、システムまたはセッション・レベルでヒート・マップ・トラッキングを有効化および無効化できます。

たとえば、次のSQL文は、データベース・インスタンスのヒート・マップ・トラッキングを有効化します。

ALTER SYSTEM SET HEAT_MAP = ON;

ヒート・マップを有効にすると、すべてのアクセスがインメモリー・アクティビティ・トラッキング・モジュールによって追跡されます。SYSTEMおよびSYSAUX表領域のオブジェクトは追跡されません。

次のSQL文は、ヒート・マップ・トラッキングを無効化します。

ALTER SYSTEM SET HEAT_MAP = OFF;

ヒート・マップを無効にすると、アクセスがインメモリー・アクティビティ・トラッキング・モジュールによって追跡されません。HEAT_MAP初期化パラメータのデフォルト値はOFFです。

HEAT_MAP初期化パラメータでも自動データ最適化(ADO)を有効化および無効化できます。ADOの場合、システム・レベルでヒート・マップを有効にする必要があります。

関連項目:

5.2.1.2 ビューを使用したヒート・マップ・トラッキング・データの表示

ヒート・マップ・トラッキング・データは、V$*ALL*DBA*およびUSER*ヒート・マップ・ビューで表示されます。

例5-1に、ヒート・マップ・ビューで提供される情報の例を示します。V$HEAT_MAP_SEGMENTビューは、リアルタイム・セグメント・アクセス情報を表示します。ALL_DBA_およびUSER_HEAT_MAP_SEGMENTビューは、ユーザーに表示されるすべてのセグメントの最新のセグメント・アクセス時間を表示します。ALL_DBA_およびUSER_HEAT_MAP_SEG_HISTOGRAMビューは、ユーザーに表示されるすべてのセグメントのセグメント・アクセス情報を表示します。DBA_HEATMAP_TOP_OBJECTSビューは、最もアクティブなオブジェクトのヒート・マップ情報を表示します。DBA_HEATMAP_TOP_TABLESPACESビューは、最もアクティブな表領域のヒート・マップ情報を表示します。

関連項目:

ヒート・マップ・ビューの詳細は、『Oracle Databaseリファレンス』を参照してください

例5-1 ヒート・マップ・ビュー

/* enable heat map tracking if necessary*/

SELECT SUBSTR(OBJECT_NAME,1,20), SUBSTR(SUBOBJECT_NAME,1,20), TRACK_TIME, SEGMENT_WRITE,
  FULL_SCAN, LOOKUP_SCAN FROM V$HEAT_MAP_SEGMENT;

SUBSTR(OBJECT_NAME,1 SUBSTR(SUBOBJECT_NAM TRACK_TIM SEG FUL LOO
-------------------- -------------------- --------- --- --- ---
SALES                SALES_Q1_1998        01-NOV-12 NO  NO  NO
SALES                SALES_Q3_1998        01-NOV-12 NO  NO  NO
SALES                SALES_Q2_2000        01-NOV-12 NO  NO  NO
SALES                SALES_Q3_1999        01-NOV-12 NO  NO  NO
SALES                SALES_Q2_1998        01-NOV-12 NO  NO  NO
SALES                SALES_Q2_1999        01-NOV-12 NO  NO  NO
SALES                SALES_Q4_2001        01-NOV-12 NO  NO  NO
SALES                SALES_Q1_1999        01-NOV-12 NO  NO  NO
SALES                SALES_Q4_1998        01-NOV-12 NO  NO  NO
SALES                SALES_Q1_2000        01-NOV-12 NO  NO  NO
SALES                SALES_Q1_2001        01-NOV-12 NO  NO  NO
SALES                SALES_Q2_2001        01-NOV-12 NO  NO  NO
SALES                SALES_Q3_2000        01-NOV-12 NO  NO  NO
SALES                SALES_Q4_2000        01-NOV-12 NO  NO  NO
EMPLOYEES                                 01-NOV-12 NO  NO  NO
...

SELECT SUBSTR(OBJECT_NAME,1,20), SUBSTR(SUBOBJECT_NAME,1,20), SEGMENT_WRITE_TIME,
  SEGMENT_READ_TIME, FULL_SCAN, LOOKUP_SCAN FROM USER_HEAT_MAP_SEGMENT;

SUBSTR(OBJECT_NAME,1 SUBSTR(SUBOBJECT_NAM SEGMENT_W SEGMENT_R FULL_SCAN LOOKUP_SC
-------------------- -------------------- --------- --------- --------- ---------
SALES                SALES_Q1_1998                            30-OCT-12 01-NOV-12
SALES                SALES_Q1_1998                            30-OCT-12 01-NOV-12
SALES                SALES_Q1_1998                            30-OCT-12 01-NOV-12
SALES                SALES_Q1_1998                            30-OCT-12 01-NOV-12
SALES                SALES_Q1_1998                            30-OCT-12 01-NOV-12
SALES                SALES_Q1_1998                            30-OCT-12 01-NOV-12
...

SELECT SUBSTR(OBJECT_NAME,1,20), SUBSTR(SUBOBJECT_NAME,1,20), TRACK_TIME, SEGMENT_WRITE, FULL_SCAN,
  LOOKUP_SCAN FROM USER_HEAT_MAP_SEG_HISTOGRAM;

SUBSTR(OBJECT_NAME,1 SUBSTR(SUBOBJECT_NAM TRACK_TIM SEG FUL LOO
-------------------- -------------------- --------- --- --- ---
SALES                SALES_Q1_1998        31-OCT-12 NO  NO  YES
SALES                SALES_Q1_1998        01-NOV-12 NO  NO  YES
SALES                SALES_Q1_1998        30-OCT-12 NO  YES YES
SALES                SALES_Q2_1998        01-NOV-12 NO  NO  YES
SALES                SALES_Q2_1998        31-OCT-12 NO  NO  YES
SALES                SALES_Q2_1998        30-OCT-12 NO  YES YES
SALES                SALES_Q3_1998        01-NOV-12 NO  NO  YES
SALES                SALES_Q3_1998        30-OCT-12 NO  YES YES
SALES                SALES_Q3_1998        31-OCT-12 NO  NO  YES
SALES                SALES_Q4_1998        01-NOV-12 NO  NO  YES
SALES                SALES_Q4_1998        31-OCT-12 NO  NO  YES
SALES                SALES_Q4_1998        30-OCT-12 NO  YES YES
SALES                SALES_Q1_1999        01-NOV-12 NO  NO  YES
SALES                SALES_Q1_1999        31-OCT-12 NO  NO  YES
...

SELECT SUBSTR(OWNER,1,20), SUBSTR(OBJECT_NAME,1,20), OBJECT_TYPE, SUBSTR(TABLESPACE_NAME,1,20),
    SEGMENT_COUNT FROM DBA_HEATMAP_TOP_OBJECTS ORDER BY SEGMENT_COUNT DESC;

SUBSTR(OWNER,1,20)   SUBSTR(OBJECT_NAME,1 OBJECT_TYPE        SUBSTR(TABLESPACE_NA SEGMENT_COUNT
-------------------- -------------------- ------------------ -------------------- -------------
SH                   SALES                TABLE              EXAMPLE                         96
SH                   COSTS                TABLE              EXAMPLE                         48
PM                   ONLINE_MEDIA         TABLE              EXAMPLE                         22
OE                   PURCHASEORDER        TABLE              EXAMPLE                         18
PM                   PRINT_MEDIA          TABLE              EXAMPLE                         15
OE                   CUSTOMERS            TABLE              EXAMPLE                         10
OE                   WAREHOUSES           TABLE              EXAMPLE                          9
HR                   EMPLOYEES            TABLE              EXAMPLE                          7
OE                   LINEITEM_TABLE       TABLE              EXAMPLE                          6
IX                   STREAMS_QUEUE_TABLE  TABLE              EXAMPLE                          6
SH                   FWEEK_PSCAT_SALES_MV TABLE              EXAMPLE                          5
SH                   CUSTOMERS            TABLE              EXAMPLE                          5
HR                   LOCATIONS            TABLE              EXAMPLE                          5
HR                   JOB_HISTORY          TABLE              EXAMPLE                          5
SH                   PRODUCTS             TABLE              EXAMPLE                          5
...

SELECT SUBSTR(TABLESPACE_NAME,1,20), SEGMENT_COUNT 
    FROM DBA_HEATMAP_TOP_TABLESPACES ORDER BY SEGMENT_COUNT DESC;

SUBSTR(TABLESPACE_NA SEGMENT_COUNT
-------------------- -------------
EXAMPLE                        351
USERS                           11

SELECT COUNT(*) FROM DBA_HEATMAP_TOP_OBJECTS;

  COUNT(*)
----------
        64

SELECT COUNT(*) FROM DBA_HEATMAP_TOP_TABLESPACES;

  COUNT(*)
----------
         2

5.2.1.3 DBMS_HEAT_MAPサブプログラムを使用したヒート・マップ・データの管理

DBMS_HEAT_MAPパッケージは、DBMS_HEAT_MAPサブプログラムを使用したヒート・マップ・データの表示にさらに柔軟性を提供します。

DBMS_HEAT_MAPには、ブロック、エクステント、セグメント、オブジェクト、表領域などの様々なレベルの記憶域でヒート・マップを外部化する1番目のAPIのセットおよび上位の表領域のバックグラウンド・プロセスでマテリアライズド化されたヒート・マップを外部化する2番目のAPIのセットが含まれます。

例5-2に、DBMS_HEAT_MAPパッケージのサブプログラムの使用の例を示します。

関連項目:

DBMS_HEAT_MAPパッケージの詳細は、『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』を参照してください

例5-2 DBMS_HEAT_MAPパッケージのサブプログラムの使用

SELECT SUBSTR(segment_name,1,10) Segment, min_writetime, min_ftstime 
  FROM TABLE(DBMS_HEAT_MAP.OBJECT_HEAT_MAP('SH','SALES'));

SELECT SUBSTR(tablespace_name,1,16) Tblspace, min_writetime, min_ftstime 
  FROM  TABLE(DBMS_HEAT_MAP.TABLESPACE_HEAT_MAP('EXAMPLE'));

SELECT relative_fno, block_id, blocks, TO_CHAR(min_writetime, 'mm-dd-yy hh-mi-ss') Mintime,
   TO_CHAR(max_writetime, 'mm-dd-yy hh-mi-ss') Maxtime, 
   TO_CHAR(avg_writetime, 'mm-dd-yy hh-mi-ss') Avgtime 
   FROM TABLE(DBMS_HEAT_MAP.EXTENT_HEAT_MAP('SH','SALES')) WHERE ROWNUM < 10;

SELECT SUBSTR(owner,1,10) Owner, SUBSTR(segment_name,1,10) Segment, 
  SUBSTR(partition_name,1,16) Partition, SUBSTR(tablespace_name,1,16) Tblspace, 
  segment_type, segment_size FROM TABLE(DBMS_HEAT_MAP.OBJECT_HEAT_MAP('SH','SALES'));

OWNER      SEGMENT    PARTITION        TBLSPACE         SEGMENT_TYPE         SEGMENT_SIZE
---------- ---------- ---------------- ---------------- -------------------- ------------
SH         SALES      SALES_Q1_1998    EXAMPLE          TABLE PARTITION           8388608
SH         SALES      SALES_Q2_1998    EXAMPLE          TABLE PARTITION           8388608
SH         SALES      SALES_Q3_1998    EXAMPLE          TABLE PARTITION           8388608
SH         SALES      SALES_Q4_1998    EXAMPLE          TABLE PARTITION           8388608
SH         SALES      SALES_Q1_1999    EXAMPLE          TABLE PARTITION           8388608
...

5.2.2 自動データ最適化の使用

ILM戦略を実装するには、自動データ最適化(ADO)を使用して、データベース内の異なる層のストレージ間のデータの圧縮および移動を自動化できます。

この機能には、各層の異なる圧縮レベルを指定するポリシーを作成する機能およびデータの移動が発生する時間を制御する機能が含まれます。

この項では、次の項目について説明します。

自動データ最適化を使用するには、システム・レベルでヒート・マップを有効にする必要があります。HEAT_MAP初期化パラメータを使用して、この機能を有効にします。HEAT_MAP初期化パラメータの設定の詳細は、ヒート・マップの有効化および無効化を参照してください。

5.2.2.1 自動データ最適化のポリシーの管理

SQL文を使用して表を作成および変更する場合、行、セグメントおよび表領域の粒度レベルでADOのポリシーを指定できます。また、ADOポリシーは索引に対してアクションを実行できます。

ADOのポリシーを指定すると、データベース内の異なる層のストレージ間のデータの移動を自動化できます。これらのポリシーにより、各層に異なる圧縮レベルを指定し、データの移動が発生する時間を制御することもできます。

表のADOポリシー

SQL CREATEおよびALTER TABLE文のILM句により、ADOのポリシーを作成、削除、有効化または無効化できます。ILMポリシー句は、圧縮およびストレージ層ポリシーを決定します。また、ポリシー・アクションを起こす条件を指定するAFTER句やON句など、その他の句を含みます。表を作成する場合、ADOの新しいポリシーを追加できます。表を変更してポリシーを追加したり、既存のポリシーを有効化、無効化または削除できます。ポリシーは、表全体または表のパーティションに追加できます。ADOポリシーを表、または表のパーティションに追加する場合、AFTER句には1つの条件タイプのみを指定できます。ILM ADOポリシーには、P1P2およびPnなどのシステム生成名が付けられます。

セグメント・レベルのポリシーは1回のみ実行されます。ポリシーが正常に実行されると、そのポリシーは無効になり、再度評価されることはありません。ただし、ポリシーを明示的に再び有効化することはできます。行レベルのポリシーは継続的に実行され、正常な実行後も無効になることはありません。

ADOポリシーの有効範囲は、キーワードGROUPROWまたはSEGMENTを使用して、関連オブジェクトのグループに対して、またはセグメントや行のレベルで指定できます。

ポリシーのグループ化に適用できる圧縮のデフォルト・マッピングは次のとおりです。

  • ヒープ表のCOMPRESS ADVANCEDは、索引に対して標準の圧縮およびLOBセグメントに対してLOWにマップされます。

  • ヒープ表のCOMPRESS FOR QUERY LOW/QUERY HIGHは、索引に対して標準の圧縮およびLOBセグメントに対してMEDIUMにマップされます。

  • ヒープ表のCOMPRESS FOR ARCHIVE LOW/ARCHIVE HIGHは、索引に対して標準の圧縮およびLOBセグメントに対してHIGHにマップされます。

圧縮マッピングは変更できません。GROUPは、セグメント・レベルのポリシーにのみ適用できます。ストレージ層ポリシーはセグメント・レベルでのみ適用可能で、行レベルで指定できません。

インメモリー列ストアのADOポリシー

自動データ最適化(ADO)では、INMEMORYINMEMORY MECOMPRESSNO INMEMORYポリシー・タイプを使用してインメモリー列ストア(IM列ストア)がサポートされています。

  • オブジェクトをインメモリー列ストアに移入できるようにするには、ADD POLICY句にINMEMORYを含めます。

  • IM列ストア内のオブジェクトに対する圧縮レベルを上げるには、ADD POLICY句にINMEMORY MEMCOMPRESSを含めます。

  • 利点が最も少ないオブジェクトをIM列ストアから明示的に削除するには、ADD POLICY句にNO INMEMORYを含めます。例:

NO INMEMORY句を使用してIM列ストアからオブジェクトを削除する例を次に示します。

ALTER TABLE sales_2015 ILM ADD POLICY NO INMEMORY 
      AFTER 7 DAYS OF NO ACCESS;

インメモリー列ストア句を使用するADOポリシーは、セグメント・レベルのポリシーのみとなります。USER/DBA_ILMDATAMOVEMENTPOLICIESビューおよびV$HEAT_MAP_SEGMENTビューには、インメモリー列ストアについてADOポリシーの情報が含まれています。

ADOポリシーのカスタマイズ

ポリシーを実行する時間を決定する機能を提供するON PL/SQL_functionオプションを使用して、ポリシーをカスタマイズできます。ON PL/SQL_functionオプションは、セグメント・レベルのポリシーでのみ使用できます。例:

CREATE OR REPLACE FUNCTION my_custom_ado_rules (objn IN NUMBER) RETURN BOOLEAN;

ALTER TABLE sales_custom ILM ADD POLICY COMPRESS ADVANCED SEGMENT
      ON my_custom_ado_rules;

関連項目:

5.2.2.2 ILM ADOポリシーを含む表の作成

ILM ADOポリシーを含む表を作成するには、CREATE TABLE文でILM ADD POLICY句を使用します。

例5-3のSQL文は、表を作成し、ILMポリシーを追加します。

例5-3 ILM ADOポリシーを含む表の作成

/* Create an example table with an ILM ADO policy */
CREATE TABLE sales_ado 
 (PROD_ID NUMBER NOT NULL,
  CUST_ID NUMBER NOT NULL, 
  TIME_ID DATE NOT NULL, 
  CHANNEL_ID NUMBER NOT NULL,
  PROMO_ID NUMBER NOT NULL,
  QUANTITY_SOLD NUMBER(10,2) NOT NULL,
  AMOUNT_SOLD NUMBER(10,2) NOT NULL )
 PARTITION BY RANGE (time_id)
 ( PARTITION sales_q1_2012 VALUES LESS THAN (TO_DATE('01-APR-2012','dd-MON-yyyy')),
   PARTITION sales_q2_2012 VALUES LESS THAN (TO_DATE('01-JUL-2012','dd-MON-yyyy')),
   PARTITION sales_q3_2012 VALUES LESS THAN (TO_DATE('01-OCT-2012','dd-MON-yyyy')),
   PARTITION sales_q4_2012 VALUES LESS THAN (TO_DATE('01-JAN-2013','dd-MON-yyyy')) )
  ILM ADD POLICY COMPRESS FOR ARCHIVE HIGH SEGMENT 
      AFTER 12 MONTHS OF NO ACCESS;

/* View the existing ILM ADO polices */
SELECT SUBSTR(policy_name,1,24) POLICY_NAME, policy_type, enabled 
       FROM USER_ILMPOLICIES;

POLICY_NAME              POLICY_TYPE   ENABLE
------------------------ ------------- ------
P1                       DATA MOVEMENT YES

5.2.2.3 ILM ADOポリシーの追加

ILM ADOポリシーを表に追加するには、ALTER TABLE文でILM ADD POLICY句を使用します。

例5-4のSQL文では、sales表のパーティションへのILMポリシーの追加の例を示します。

例5-4 ILM ADOポリシーの追加

/* Add a row-level compression policy after 30 days of no modifications */
ALTER TABLE sales MODIFY PARTITION sales_q1_2002 
  ILM ADD POLICY ROW STORE COMPRESS ADVANCED ROW 
  AFTER 30 DAYS OF NO MODIFICATION;

/* Add a segment level compression policy for data after 6 months of no modifications */
ALTER TABLE sales MODIFY PARTITION sales_q1_2001 
  ILM ADD POLICY COMPRESS FOR ARCHIVE HIGH SEGMENT 
  AFTER 6 MONTHS OF NO MODIFICATION;

/* Add a segment level compression policy for data after 12 months of no access */
ALTER TABLE sales MODIFY PARTITION sales_q1_2000 
      ILM ADD POLICY COMPRESS FOR ARCHIVE HIGH SEGMENT 
      AFTER 12 MONTHS OF NO ACCESS;

/* Add storage tier policy to move old data to a different tablespace */
/* that is on low cost storage media */
ALTER TABLE sales MODIFY PARTITION sales_q1_1999 
  ILM ADD POLICY
  TIER TO my_low_cost_sales_tablespace;

/* View the existing polices */
SELECT SUBSTR(policy_name,1,24) POLICY_NAME, policy_type, enabled 
   FROM USER_ILMPOLICIES;

POLICY_NAME              POLICY_TYPE   ENABLE
------------------------ ------------- ------
P1                       DATA MOVEMENT YES
P2                       DATA MOVEMENT YES
P3                       DATA MOVEMENT YES
P4                       DATA MOVEMENT YES
P5                       DATA MOVEMENT YES

5.2.2.4 ILM ADOポリシーの無効化と削除

ILM ADOポリシーを無効化または削除するには、ALTER TABLE文でILM DISABLE POLICYまたはILM DELETE POLICY句を使用します。

例5-5のSQL文に示すように、ADOのILMポリシーを無効化または削除できます。既存のILMポリシーが追加する新しいポリシーと競合する場合、既存のポリシーの削除が必要になることがあります。

例5-5 ILM ADOポリシーの無効化と削除

/* You can disable or delete an ADO policy in a table with the following */
ALTER TABLE sales_ado ILM DISABLE POLICY P1;
ALTER TABLE sales_ado ILM DELETE POLICY P1;

/* You can disable or delete all ADO policies in a table with the following */
ALTER TABLE sales_ado ILM DISABLE_ALL;
ALTER TABLE sales_ado ILM DELETE_ALL;

/* You can disable or delete an ADO policy in a partition with the following */
ALTER TABLE sales MODIFY PARTITION sales_q1_2002 ILM DISABLE POLICY P2;
ALTER TABLE sales MODIFY PARTITION sales_q1_2002 ILM DELETE POLICY P2;

/* You can disable or delete all ADO policies in a partition with the following */
ALTER TABLE sales MODIFY PARTITION sales_q1_2000 ILM DISABLE_all;
ALTER TABLE sales MODIFY PARTITION sales_q1_2000 ILM DELETE_ALL;

5.2.2.5 ADOを使用したセグメント・レベルの圧縮層およびストレージ層の指定

セグメント・レベルの圧縮層ポリシーを使用して、表内のセグメント・レベルで圧縮を指定できます。

行レベルの圧縮層ポリシーと組み合せて、データベースのデータの格納および管理方法を非常に細かく制御します。

例5-6に、ADOのポリシーを作成してsales_ado表の圧縮およびストレージ層ポリシーを施行する方法を示し、次のビジネス要件を反映します。

  1. バルク・ロード・データ

  2. OLTPワークロードの実行

  3. 更新が6か月間なければ、ARCHIVE HIGHで圧縮

  4. 低コスト・ストレージへの移動

例5-6 セグメント・レベルの圧縮層およびストレージ層の使用

/* Add a segment level compression policy after 6 months of no changes */
ALTER TABLE sales_ado ILM ADD POLICY
  COMPRESS FOR ARCHIVE HIGH SEGMENT 
  AFTER 6 MONTHS OF NO MODIFICATION;

Table altered.

/* Add storage tier policy */
ALTER TABLE sales_ado ILM ADD POLICY
  TIER TO my_low_cost_tablespace;

SELECT SUBSTR(policy_name,1,24) POLICY_NAME, policy_type, enabled 
  FROM USER_ILMPOLICIES;

POLICY_NAME              POLICY_TYPE   ENABLED
------------------------ ------------- -------
...
P6                       DATA MOVEMENT  YES
P7                       DATA MOVEMENT  YES

5.2.2.6 ADOを使用した行レベルの圧縮層の指定

自動データ最適化(ADO)のポリシーでは、基本および拡張圧縮に加えて、ハイブリッド列圧縮(HCC)がサポートされています。

HCC行レベル・ポリシーは、表の圧縮タイプに関係なく、任意の表で定義できます。セグメントの他の部分にDMLアクティビティがある場合は、コールド・ブロックの行をHCCで圧縮できます。

非HCC表のHCCポリシーでは、行がHCC圧縮単位(CU)にある場合は、更新中に行が移動される可能性があります。また、行移動のその他の使用事例と同様に、移動された行を参照している索引エントリを更新するには、索引メンテナンスが必要となります。

行レベル・ポリシーは、Oracle Database 12cリリース1 (12.1)でサポートされています。ただし、HCC行レベル圧縮ポリシーを使用するには、データベースが12.2互換であるか、それ以上である必要があります。

関連項目:

表の圧縮の詳細は、『Oracle Database管理者ガイド』を参照してください

例5-7 行レベルのハイブリッド列圧縮の使用によるADOポリシーの作成

例5-7のSQL文では、HCCを使用して表employees_ilmの行でポリシーが作成されます。

ALTER TABLE employees_ilm 
   ILM ADD POLICY COLUMN STORE COMPRESS FOR QUERY ROW 
   AFTER 30 DAYS OF NO MODIFICATION;

例5-8 行レベルの拡張圧縮の使用によるADOポリシーの作成

例5-8のSQL文では、拡張圧縮を使用して表sales_adoの行でポリシーが作成されます。

ALTER TABLE sales_ado 
  ILM ADD POLICY ROW STORE COMPRESS ADVANCED ROW 
  AFTER 60 DAYS OF NO MODIFICATION;

SELECT policy_name, policy_type, enabled 
   FROM USER_ILMPOLICIES;
 
POLICY_NAME              POLICY_TYPE   ENABLE
------------------------ ------------- -------
...
P8                       DATA MOVEMENT YES

5.2.2.7 ILM ADOパラメータの管理

DBMS_ILM_ADMIN PL/SQLパッケージでCUSTOMIZE_ILMプロシージャを使用して設定する、ILM ADOパラメータを使用して、ADO環境をカスタマイズできます。

様々なILM ADOパラメータを表5-2に示します。

表5-2 ILM ADOパラメータ

名前 説明

ABSOLUTEJOB LIMIT

ABSOLUTEJOB LIMITの値は、同時に存在するADOジョブの絶対数を制限します。

DEGREEOF PARALLELISM

DEGREEOF PARALLELISMの値は、ADOポリシーのジョブが実行される並列度を決定します。

ENABLED

ENABLEDパラメータは、ADOバックグラウンド評価および実行を制御します。デフォルトでは有効化されています(TRUEまたは1)。

ENABLEDおよびHEAT_MAP初期化パラメータの設定は、次のように相互作用します。

  • HEAT_MAP初期化パラメータがONに設定され、ENABLEDパラメータがFALSEに設定されている場合(0)、ヒート・マップ統計は収集されますが、ADOは統計に対して自動的には機能しません。

  • HEAT_MAP初期化パラメータがOFFに設定され、ENABLEDパラメータがTRUEに設定されている場合(1)、ヒート・マップ統計は収集されず、ADOはヒート・マップ統計を信頼できないため、ADOは何も動作しません。ADOは、ENABLEDFALSEに設定されているかのように動作します。

EXECUTION MODE

EXECUTION MODEの値は、ADOがオンライン・モードまたはオフライン・モードのどちらで実行されるかを制御します。デフォルトはオンライン(2)です。

EXECUTION INTERVAL

EXECUTION INTERVALのタイプは、ADOがバックグラウンド評価を開始する頻度を決定します。デフォルトは15分です。

JOB LIMIT

JOB LIMITの値は、任意の時点でのADOジョブの最大数を制御します。同時ADOジョブの最大数は、(JOB LIMIT)*(インスタンス数)*(インスタンスごとのCPU数)として計算されます。デフォルト値は2です。

POLICY TIME

POLICY TIMEの値は、ADOポリシーが秒単位または日単位で指定されるかどうかを決定します。値は、秒の場合は1、または日(デフォルト)の場合は0となります。

RETENTION TIME

RETENTION TIMEの値は、そのデータがパージされるまで、完了したADOタスクが保持される時間の長さを指定します。デフォルトは30日です。

TBS PERCENT USED

TBS_PERCENT_USEDパラメータの値は、表領域が一杯と見なされる場合の表領域割当て率を指定します。デフォルトは85パーセントです。

TBS PERCENT FREE

TBS_PERCENT_FREEパラメータの値は、表領域のターゲット空き領域比率を示します。デフォルトは25パーセントです。

TBS_PERCENT*パラメータの値のために、ADOは最善を尽くしますが、保障はされません。表領域割当て率がTBS_PERCENT_USEDの値に到達すると、表領域割当ての空き領域比率がTBS_PERCENT_FREEの値に近づくように、ADOはデータの移動を開始します。例として、TBS_PERCENT_USEDが85およびTBS_PERCENT_FREE25に設定されると、表領域が90パーセント・フルになると想定します。すると、ADOは表領域割当ての少なくとも25パーセントが空き領域になるように(75パーセント未満が表領域割当てに使用されるようにとも言えます)、データを移動する操作を開始します。

DBA_ILMPARAMETERSビューではパラメータを表示できます。たとえば、次の問合せでは、ADO関連パラメータの値を表示します。

SQL> SELECT NAME, VALUE FROM DBA_ILMPARAMETERS;

---------------------------------------------------------------- ----------
ENABLED                                                                   1
RETENTION TIME                                                           30
JOB LIMIT                                                                 2
EXECUTION MODE                                                            2
EXECUTION INTERVAL                                                       15
TBS PERCENT USED                                                         85
TBS PERCENT FREE                                                         25
POLICY TIME                                                               0
ABSOLUTE JOB LIMIT                                                       10
DEGREE OF PARALLELISM                                                     4
...

関連項目:

5.2.2.8 ポリシー管理のPL/SQL関数の使用

より複雑なADOシナリオを実装してポリシーがデータをアクティブに移動および圧縮する時間を制御する高度なポリシー管理およびカスタマイズには、PL/SQL DBMS_ILMおよびDBMS_ILM_ADMINパッケージを使用できます。

PL/SQL DBMS_ILMおよびDBMS_ILM_ADMINパッケージを使用すると、重要な本番ワークロードに悪影響を与えないように、ADOのILMアクティビティを管理できます。これらのパッケージを使用するには、データベース互換性を最低でも12.0に設定する必要があります。

DBMS_ILMパッケージのEXECUTE_ILMプロシージャは、ジョブを作成およびスケジュールして、ADOのポリシーを施行します。以前にスケジュールされたILMジョブに関係なく、EXECUTE_ILM()プロシージャはこの機能を提供します。すべてのジョブはすぐに実行するように作成およびスケジュールされますが、すぐに実行されるかどうかはスケジューラでキューに入れられているジョブの数に依存します。

ILMジョブの実行時間をさらに制御し、次のメンテナンス・ウィンドウまで待てない場合、EXECUTE_ILMプロシージャを使用できます。

DBMS_ILMパッケージのSTOP_ILMプロシージャは、すべてのジョブ、すべての実行中ジョブ、タスクIDに基づくジョブ、または特定のジョブを停止します。

例5-9で示すように、DBMS_ILM_ADMIN PL/SQLパッケージのCUSTOMIZE_ILMプロシージャを使用して、ADOの設定をカスタマイズできます。

たとえば、TBS_PERCENT_USEDおよびTBS_PERCENT_FREE ILMパラメータの値を設定するか、ABS_JOBLIMIT ILMパラメータを設定することができます。TBS_PERCENT_USEDおよびTBS_PERCENT_FREEは、表領域の割当てに基づいてデータを移動する時期を決定し、ABS_JOBLIMITは、同時に存在するADOジョブの絶対数を設定します。

DBMS_METADATA PL/SQLパッケージを使用して、ポリシーでオブジェクトを再作成することもできます。

関連項目:

例5-9 CUSTOMIZE_ILMを使用したADO設定のカスタマイズ

SQL> BEGIN
  2  DBMS_ILM_ADMIN.CUSTOMIZE_ILM(DBMS_ILM_ADMIN.TBS_PERCENT_USED, 85);
  3  DBMS_ILM_ADMIN.CUSTOMIZE_ILM(DBMS_ILM_ADMIN.TBS_PERCENT_FREE, 25);
  4  END;
  5  /

SQL> BEGIN
  2  DBMS_ILM_ADMIN.CUSTOMIZE_ILM(DBMS_ILM_ADMIN.ABS_JOBLIMIT, 10);
  3  END;
  4  /

5.2.2.9 ビューを使用したADOのポリシーの監視

DBA_ILM*およびUSER_ILM*ビューを使用してデータベース・オブジェクトに関連付けられているADOのポリシーを表示および監視し、必要に応じてポリシーを容易に変更できます。

  • DBA/USER_ILMDATAMOVEMENTPOLICIESビューは、ADOのILMポリシーのデータ移動の関連属性に固有の情報を表示します。

  • DBA/USER_ILMTASKSビューは、プロシージャEXECUTE_ILMのタスクIDを表示します。ユーザーがプロシージャEXECUTE_ILMを呼び出すたびに、この特定の呼出しを追跡するためにタスクIDが戻されます。データベースによる期間の内部ILMタスクを追跡するため、タスクIDも生成されます。このビューは、ADOのすべてのILMタスクの情報を含みます。

  • DBA/USER_ILMEVALUATIONDETAILSビューは、特定のタスクに考慮されるポリシーの詳細を表示します。ポリシーが評価用に選択された場合、ポリシーを実行するジョブの名前も表示されます。ポリシーが実行されなかった場合、このビューは理由も提供します。

  • DBA/USER_ILMOBJECTSビューは、データベースのADOのすべてのオブジェクトおよびポリシーを表示します。特定の表領域で作成されたため、多くのオブジェクトは親オブジェクトを介してポリシーを継承します。このビューは、ポリシーとオブジェクト間のマッピングを提供します。継承されたポリシーの場合、このビューはポリシーが継承されるレベルも示します。

  • DBA/USER_ILMPOLICIESビューは、データベースのADOのすべてのポリシーの詳細を表示します。

  • DBA/USER_ILMRESULTSビューは、データベースのADOのデータ移動関連ILMジョブの情報を表示します。

  • DBA_ILMPARAMETERSビューは、ADO関連パラメータの情報を表示します。

関連項目:

ILMビューの詳細は、『Oracle Databaseリファレンス』を参照してください

5.2.3 ADOおよびヒート・マップの制限事項

このトピックでは、ADOおよびヒート・マップに関連する制限事項について説明します。

ADOおよびヒート・マップに関連付けられている制限事項を次に示します。

  • パーティション・レベルのADOおよび圧縮は、有効期間が経過した行を圧縮する行レベルADOポリシーを除き、時間的な有効性に対してサポートされます(アクセスまたは変更)。

  • パーティション・レベルのADOおよび圧縮は、ORA_ARCHIVE_STATE列でパーティション化される場合に、インデータベース・アーカイブに対してサポートされます。

  • ADOのカスタム・ポリシー(ユーザー定義関数)は、ポリシーが表領域レベルでデフォルトの場合にサポートされません。

  • ストレージ層を使用する場合、ADOはターゲット表領域の記憶領域のチェックを実行しません。

  • ADOは、オブジェクト型を使用した表またはマテリアライズド・ビューでサポートされません。

  • ADOは、索引構成表またはクラスタではサポートされません。

  • ADO同時実行性(ADOの同時ポリシー・ジョブの数)は、Oracleスケジューラの同時実行性に依存します。ADOのポリシー・ジョブが2回以上失敗した場合、ジョブが無効とマークされ、後でジョブを手動で有効にする必要があります。

  • ADOには、表および表パーティションの移動に関連する制限事項があります。

    関連項目: