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のポリシーを指定すると、データベース内の異なる層のストレージ間のデータの移動を自動化できます。これらのポリシーにより、各層に異なる圧縮レベルを指定し、データの移動が発生する時間を制御することもできます。
SQL CREATE
およびALTER
TABLE
文のILM句により、ADOのポリシーを作成、削除、有効化または無効化できます。ILMポリシー句は、圧縮およびストレージ層ポリシーを決定します。また、ポリシー・アクションを起こす条件を指定するAFTER
句やON
句など、その他の句を含みます。表を作成する場合、ADOの新しいポリシーを追加できます。表を変更してポリシーを追加したり、既存のポリシーを有効化、無効化または削除できます。ポリシーは、表全体または表のパーティションに追加できます。ADOポリシーを表、または表のパーティションに追加する場合、AFTER
句には1つの条件タイプのみを指定できます。ILM ADOポリシーには、P1
、P2
およびP
n
などのシステム生成名が付けられます。
セグメント・レベルのポリシーは1回のみ実行されます。ポリシーが正常に実行されると、そのポリシーは無効になり、再度評価されることはありません。ただし、ポリシーを明示的に再び有効化することはできます。行レベルのポリシーは継続的に実行され、正常な実行後も無効になることはありません。
ADOポリシーの有効範囲は、キーワードGROUP
、ROW
またはSEGMENT
を使用して、関連オブジェクトのグループに対して、またはセグメントや行のレベルで指定できます。
ポリシーのグループ化に適用できる圧縮のデフォルト・マッピングは次のとおりです。
-
ヒープ表の
COMPRESS
ADVANCED
は、索引に対して標準の圧縮およびLOBセグメントに対してLOW
にマップされます。 -
ヒープ表の
COMPRESS
FOR
QUERY
LOW
/QUERY
HIGH
は、索引に対して標準の圧縮およびLOBセグメントに対してMEDIUM
にマップされます。 -
ヒープ表の
COMPRESS
FOR
ARCHIVE
LOW
/ARCHIVE
HIGH
は、索引に対して標準の圧縮およびLOBセグメントに対してHIGH
にマップされます。
圧縮マッピングは変更できません。GROUP
は、セグメント・レベルのポリシーにのみ適用できます。ストレージ層ポリシーはセグメント・レベルでのみ適用可能で、行レベルで指定できません。
自動データ最適化(ADO)では、INMEMORY
、INMEMORY
MECOMPRESS
、NO
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ポリシーの情報が含まれています。V$IM_ADOTASKS
ビューおよびV$IM_ADOTASKDETAILS
ビューには、インメモリー列ストアの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_ADMIN
PL/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はターゲット表領域の記憶領域のチェックを実行しません。
-
ADOは、オブジェクト型を使用した表またはマテリアライズド・ビューでサポートされません。
-
ADOは、索引構成表またはクラスタではサポートされません。
-
ADO同時実行性(ADOの同時ポリシー・ジョブの数)は、Oracleスケジューラの同時実行性に依存します。ADOのポリシー・ジョブが2回以上失敗した場合、ジョブが無効とマークされ、後でジョブを手動で有効にする必要があります。
-
ADOには、表および表パーティションの移動に関連する制限事項があります。
関連項目:
-
表の移動の制限事項の詳細は、『Oracle Database SQL言語リファレンス』を参照してください
-
表パーティションの移動の制限事項の詳細は、Oracle Database SQL言語リファレンス』を参照してください
-