5.2 ヒート・マップおよびADOを使用したILM戦略の実装
データベースでのデータ移動のために情報ライフサイクル管理(ILM)計画を実装するには、ヒート・マップおよび自動データ最適化(ADO)の機能を使用します。
ノート:
ヒート・マップおよびADOは、Oracle Database 12cリリース2のマルチテナント環境でサポートされています。
この項では、次の項目について説明します。
関連項目:
-
ヒート・マップおよびADOを使用するOracle Enterprise Manager Cloud Controlの使用の詳細は、「Oracle Enterprise ManagerでのILMヒート・マップおよびADOの管理」を参照してください
-
Database Vaultで保護されたオブジェクト上でのILM操作をADO管理ユーザーが実行できるようにする認可の付与など、Oracle Database Vaultレルムおよびコマンド・ルールによる情報ライフサイクル管理(ILM)の使用の詳細は、Oracle Database Vault管理者ガイドを参照してください。
5.2.1 ヒート・マップの使用
ILM戦略を実装するために、Oracle Databaseのヒート・マップを使用すればデータのアクセスと変更を追跡できます。
ヒート・マップは、セグメント・レベルのデータ・アクセス・トラッキングおよびセグメントおよび行レベルのデータ変更トラッキングを提供します。HEAT_MAP初期化パラメータを使用して、この機能を有効にできます。
ヒート・マップ・データは、ADOポリシーを使用してインメモリー列ストア(IM列ストア)のコンテンツを管理するための、自動データ最適化(ADO)を支援します。列統計およびその他の関連統計が含まれるヒート・マップ・データを使用すると、IM列ストアがいつ満杯(メモリー不足)になるかを判断できます。ほぼ満杯と判断されたときに、アクセス頻度が高くIM列ストアに移入することで利点が得られるセグメントが存在する場合は、非アクティブなセグメントが削除されます。
この項では、次の項目について説明します。
関連項目:
-
インメモリー列ストアの有効化およびサイズ設定の詳細は、『Oracle Database In-Memoryガイド』を参照してください
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の場合、システム・レベルでヒート・マップを有効にする必要があります。
関連項目:
-
ADOの詳細は、「自動データ最適化の使用」を参照してください
-
HEAT_MAP初期化パラメータの詳細は、『Oracle Databaseリファレンス』を参照してください
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ポリシーには、P1、P2およびPnなどのシステム生成名が付けられます。
セグメント・レベルのポリシーは1回のみ実行されます。ポリシーが正常に実行されると、そのポリシーは無効になり、再度評価されることはありません。ただし、ポリシーを明示的に再び有効化することはできます。行レベルのポリシーは継続的に実行され、正常な実行後も無効になることはありません。
ADOポリシーの有効範囲は、キーワードGROUP、ROWまたはSEGMENTを使用して、関連オブジェクトのグループに対して、またはセグメントや行のレベルで指定できます。
ポリシーのグループ化に適用できる圧縮のデフォルト・マッピングは次のとおりです。
-
ヒープ表の
COMPRESSADVANCEDは、索引に対して標準の圧縮およびLOBセグメントに対してLOWにマップされます。 -
ヒープ表の
COMPRESSFORQUERYLOW/QUERYHIGHは、索引に対して標準の圧縮およびLOBセグメントに対してMEDIUMにマップされます。 -
ヒープ表の
COMPRESSFORARCHIVELOW/ARCHIVEHIGHは、索引に対して標準の圧縮およびLOBセグメントに対してHIGHにマップされます。
圧縮マッピングは変更できません。GROUPは、セグメント・レベルのポリシーにのみ適用できます。ストレージ層ポリシーはセグメント・レベルでのみ適用可能で、行レベルで指定できません。
インメモリー列ストアのADOポリシー
自動データ最適化(ADO)では、INMEMORY、INMEMORY MECOMPRESS、NO INMEMORYポリシー・タイプを使用してインメモリー列ストア(IM列ストア)がサポートされています。
-
オブジェクトをインメモリー列ストアに移入できるようにするには、
ADDPOLICY句にINMEMORYを含めます。 -
IM列ストア内のオブジェクトに対する圧縮レベルを上げるには、
ADDPOLICY句にINMEMORYMEMCOMPRESSを含めます。 -
利点が最も少ないオブジェクトをIM列ストアから明示的に削除するには、
ADDPOLICY句にNOINMEMORYを含めます。たとえば:
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;関連項目:
-
インメモリー列ストアおよびADOのサポートの詳細は、『Oracle Database In-Memoryガイド』を参照してください
-
SQL文のILM句の構文の詳細は、『Oracle Database SQL言語リファレンス』を参照してください
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表の圧縮およびストレージ層ポリシーを施行する方法を示し、次のビジネス要件を反映します。
-
バルク・ロード・データ
-
OLTPワークロードの実行
-
更新が6か月間なければ、ARCHIVE HIGHで圧縮
-
低コスト・ストレージへの移動
例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パラメータ
| 名前 | 説明 |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
TBS_PERCENT*パラメータの値のために、ADOは最善を尽くしますが、保障はされません。表領域割当て率がTBS_PERCENT_USEDの値に到達すると、表領域割当ての空き領域比率がTBS_PERCENT_FREEの値に近づくように、ADOはデータの移動を開始します。例として、TBS_PERCENT_USEDが85およびTBS_PERCENT_FREEが25に設定されると、表領域が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 ...
関連項目:
-
DBMS_ILM_ADMINPL/SQLパッケージのCUSTOMIZE_ILMプロシージャでILM ADOパラメータを設定する方法を示す例は、例5-9を参照してください -
Oracle Enterprise Manager Cloud ControlによるILM ADOパラメータの設定の詳細は、「Oracle Enterprise ManagerでのILMヒート・マップおよびADOの管理」を参照してください
-
ILM ADOパラメータの完全なリストは、『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』を参照してください
-
DBMS_ILM_ADMINパッケージの詳細は、『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』を参照してください
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パッケージを使用して、ポリシーでオブジェクトを再作成することもできます。
関連項目:
-
ILM ADOパラメータの詳細は、「ILM ADOパラメータの管理」を参照してください
-
DBMS_ILM、DBMS_ILM_ADMINおよびDBMS_METADATAパッケージの詳細は、『Oracle Database 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行レベルのポリシーでは、
OF NO MODIFICATION条件タイプのみがサポートされています。 -
ストレージ層を使用する場合、ADOはターゲット表領域の記憶領域のチェックを実行しません。
-
ADOは、オブジェクト型を使用した表またはマテリアライズド・ビューでサポートされません。
-
ADOは、索引構成表またはクラスタではサポートされません。
-
ADO同時実行性(ADOの同時ポリシー・ジョブの数)は、Oracleスケジューラの同時実行性に依存します。ADOのポリシー・ジョブが2回以上失敗した場合、ジョブが無効とマークされ、後でジョブを手動で有効にする必要があります。
-
ADOには、表および表パーティションの移動に関連する制限事項があります。
関連項目:
-
表の移動の制限事項の詳細は、『Oracle Database SQL言語リファレンス』を参照してください
-
表パーティションの移動の制限事項の詳細は、『Oracle Database SQL言語リファレンス』を参照してください
-