7 Oracle Data Minerのシステム・リソースの管理
- Oracle Data Minerのリソース管理の概要
Oracle Databaseの機能とOracle Data Minerリポジトリに用意されているオプションを使用して、Oracle Data Minerのシステム・リソースを効果的に管理できます。 - Oracle Data Minerユーザー・セッションへのリソースの割当て
Database Resource Managerを使用して、セッションのグループに、セッション属性に基づいてシステム・リソースを割り当てるリソース・プランを作成できます。 - モデル構築の管理
マイニング・モデルを構築するプロセスは、大量のシステム・リソースを消費することがあります。MAX_NUM_THREADS
リポジトリ・プロパティの値を増減して、システム・リソース全体へのモデル構築の影響を制御できます。 - ワークフロー実行の管理
Oracle Data Minerは、ワークフローを、Schedulerジョブとして実行するために、Oracle Database Schedulerに送信します。Oracle Schedulerは、システム・リソースの割り当て方法を制御する様々な機能をサポートしています。Oracle Schedulerを構成すると、実行リクエストの大きなプールを効果的に管理できます。 - パラレル処理の管理
Oracle Data Minerのワークフローとビュー、および大部分のOracle Machine Learningアルゴリズムは、データベースでパラレル処理が有効である場合、その利点を活用できます。INIT.ORA
のパラメータは、パラレル処理の動作を制御します。デフォルトでは、パラレル実行は無効になっています(PARALLEL_DEGREE_POLICY=MANUAL)
。 - システム管理用のOracle Data Minerリポジトリ・プロパティのサマリー
Oracle Data Minerリポジトリでシステム管理プロパティのサマリーを利用できます。
7.1 Oracle Data Minerのリソース管理の概要
Oracle Databaseの機能とOracle Data Minerリポジトリに用意されているオプションを使用して、Oracle Data Minerのシステム・リソースを効果的に管理できます。
次の方法で、Oracle Data Minerのシステム・リソースを効果的に管理できます。
-
Oracle Data Minerセッションを管理するには、Oracle Database Resource Managerを使用して適切なリソース・プランを開発します。
-
ワークフロー実行を管理するには、Oracle Schedulerで使用されるOracle Data Minerのデフォルトのジョブ・クラスを、適切なリソース・プランを持つジョブ・クラスに変更します。
-
モデル構築プロセスを管理するには、Oracle Data Minerのデフォルトの最大同時モデル構築数を変更します。
-
パラレル問合せ処理を管理するには、Oracle Data Minerのデフォルトのパラレル問合せ設定を変更して、ユーザーが個々のノードとワークフローのパラレル処理を指定しないようにします。
7.2 Oracle Data Minerユーザー・セッションへのリソースの割当て
Database Resource Managerを使用して、セッションのグループに、セッション属性に基づいてシステム・リソースを割り当てるリソース・プランを作成できます。
Database Resource Managerは、CPU時間を割り当て、パラレル問合せ処理を構成し、セッション数を制限し、通常はオペレーティング・システムによって制御されるシステム動作の様々な面を制御します。複数のアプリケーションが同時実行されてシステム・リソースを奪い合うデータベースでは、Oracle Database Resource Managerを使用してワークロードを分散し、全体的なパフォーマンスを最適化することができます。たとえば、データベースで同時に実行されている、ETL、OLAP、機械学習およびレポーティングといった各ワークロードの要求のバランスを調整できます。
Oracle Data Minerワークフローは、特に変換や大きなデータ・セットが関与する場合に、システム・リソースに対して大量の要求をする可能性があります。複数のアプリケーションの要求に対処する必要があるデータベースでは、他のアプリケーションでのOracle Data Minerセッションの影響を限定するリソース・プランを作成して、他のアプリケーションによりOracle Data Minerのパフォーマンスが損なわれるのを防止できます。
例7-1は、Oracle Data Minerの単純なリソース・プランの作成例です。SIMPLE_RESOURCE_PLAN
と呼ばれるリソース・プランは、DATA_MINER_GROUP
およびOTHER_GROUPS
という、2つのコンシューマ・グループを作成します。このプランは、CPUリソースの50%をOTHER_GROUPS
に、残りをDATA_MINER_GROUP
に割り当てます。DATA_MINER_GROUP
はDMUSER
アカウントにマップされ、他のユーザーはOTHER_GROUPS
グループにマップされます。
例7-1 Oracle Data Minerセッションの単純なリソース・プラン
CONNECT sys as sysdba;
Enter password: password
-- creating a pending area is the first step in defining
-- consumer groups and resource plans
EXEC dbms_resource_manager.create_pending_area();
-- delete old plan (optional)
EXEC dbms_resource_manager.delete_plan_cascade(
plan => 'SIMPLE_RESOURCE_PLAN');
-- create a custom consumer group for data miner workload
EXEC dbms_resource_manager.create_consumer_group(
consumer_group => 'DATA_MINER_GROUP',
comment => 'Sessions for data miner operations');
-- map DMUSER account to the consumer group
EXEC dbms_resource_manager.set_consumer_group_mapping(
attribute => dbms_resource_manager.oracle_user,
value => 'DMUSER',
consumer_group => 'DATA_MINER_GROUP');
-- create a custom resource plan
EXEC dbms_resource_manager.create_plan(
plan => 'SIMPLE_RESOURCE_PLAN',
comment => 'Resource plan for database operations');
-- specifies how much CPU and parallelism
-- should be allocated to the consumer group
EXEC dbms_resource_manager.create_plan_directive(
plan => 'SIMPLE_RESOURCE_PLAN',
group_or_subplan => 'DATA_MINER_GROUP',
comment => 'Percentage of CPU for DATA_MINER_GROUP',
mgmt_p1 => 50,
utilization_limit => 55,
parallel_degree_limit_p1 => 8,
parallel_server_limit => 4);
-- specifies how much CPU should be allocated to the required OTHER_GROUPS
EXEC dbms_resource_manager.create_plan_directive(
plan => 'SIMPLE_RESOURCE_PLAN',
group_or_subplan => 'OTHER_GROUPS',
comment => 'Percentage of CPU for OTHER_GROUPS',
mgmt_p1 => 50);
-- persist plan to the database
EXEC dbms_resource_manager.submit_pending_area();
-- Now that the resource plan is defined, enable it by setting
-- the resource_manager_plan parameter with the resource plan name
ALTER SYSTEM SET resource_manager_plan = 'SIMPLE_RESOURCE_PLAN';
-- DBA can also enable a resource plan for the period of time corresponding
-- to a job scheduler Window (via the dbms_scheduler.create_window procedure)
7.3 モデル構築の管理
マイニング・モデルを構築するプロセスは、大量のシステム・リソースを消費することがあります。MAX_NUM_THREADS
リポジトリ・プロパティの値を増減して、システム・リソース全体へのモデル構築の影響を制御できます。
MAX_NUM_THREADS
は、Oracle Data Minerセッションのすべてのワークフロー全体で同時実行できるマイニング・モデル構築の最大数を指定します。MAX_NUM_THREADS
は、個別に起動された、ワークフローに属していないモデル構築には影響を及ぼしません。
たとえば、あるワークフローが25のモデルを構築しようとしていて、別のワークフローが15のモデルを構築しようとしており、MAX_NUM_THREADS
が10である場合、10のモデル構築操作が同時に発生し、残り30のモデル構築はキューに入れられます。遅延された構築プロセスは、完了時に、遅延の理由を説明する警告メッセージを表示します。2つの追加のプロパティ、THREAD_WAIT_TIME
およびMAX_THREAD_WAIT
は、モデル構築のキューイングを制御します。詳細は、表7-1を参照。
例7-2に、最大同時モデル構築数を10(デフォルト)から15に増やす方法を示します。
このスクリプトにより、次のログが作成されます。
-- value of MAX_NUM_THREADS before update
SELECT property_name, property_num_value
FROM ODMRSYS.ODMR$REPOSITORY_PROPERTIES
WHERE property_name = 'MAX_NUM_THREADS';
PROPERTY_NAME PROPERTY_NUM_VALUE
------------------------------ ----------------------
MAX_NUM_THREADS 10
-- update MAX_NUM_THREADS
UPDATE ODMRSYS.ODMR$REPOSITORY_PROPERTIES
SET property_num_value = 15
WHERE property_name = 'MAX_NUM_THREADS';
1 rows updated
-- commit change
commit
committed
-- value of MAX_NUM_THREADS after update
SELECT property_name, property_num_value
FROM ODMRSYS.ODMR$REPOSITORY_PROPERTIES
WHERE property_name = 'MAX_NUM_THREADS';
PROPERTY_NAME PROPERTY_NUM_VALUE
------------------------------ ----------------------
MAX_NUM_THREADS 15
例7-2 最大同時モデル構築数の変更
set echo on;
-- value of MAX_NUM_THREADS before update
SELECT property_name, property_num_value
FROM ODMRSYS.ODMR$REPOSITORY_PROPERTIES
WHERE property_name = 'MAX_NUM_THREADS';
-- update MAX_NUM_THREADS
UPDATE ODMRSYS.ODMR$REPOSITORY_PROPERTIES
SET property_num_value = 15
WHERE property_name = 'MAX_NUM_THREADS';
-- commit change
COMMIT;
-- value of MAX_NUM_THREADS after update
SELECT property_name, property_num_value
FROM ODMRSYS.ODMR$REPOSITORY_PROPERTIES
WHERE property_name = 'MAX_NUM_THREADS';
7.4 ワークフロー実行の管理
Oracle Data Minerは、ワークフローを、Schedulerジョブとして実行するために、Oracle Database Schedulerに送信します。Oracle Schedulerは、システム・リソースの割り当て方法を制御する様々な機能をサポートしています。Oracle Schedulerを構成すると、実行リクエストの大きなプールを効果的に管理できます。
Oracle Data Minerは、デフォルトのSchedulerジョブ・クラス、DEFAULT_JOB_CLASS
を、自身のデフォルトとして使用します。リソース・プランでは、DEFAULT_JOB_CLASS
として実行されるジョブはいかなるコンシューマ・グループにも割り当てられず、デフォルト・クラスを持つジョブの場合、システム・リソースへのアクセスは制限されません。ジョブ・クラスをコンシューマ・グループに基づくクラスに変更するには、Oracle Data Minerリポジトリ・プロパティWORKFLOW_JOB_CLASS
を設定します。
例7-3は、負荷の高いワークロード・ジョブにCPUを多く割り当てるために以前に作成されたコンシューマ・グループHEAVY_LOAD_RESOURCE_GROUP
に基づいてMINING_CLASS
ジョブ・クラスを作成できることを示しています。WORKFLOW_JOB_CLASS
を更新する場合、ワークフローは、このコンシューマ・グループに制限されたシステム・リソースへのアクセスを伴って実行されます。ワークフローの実行時に、割り当てられたHEAVY_LOAD_RESOURCE_GROUP
グループのリソース・プランがアクティブである必要があります。Schedulerのウィンドウを設定して、特定の期間に特定のリソース・プランをアクティブにできます。
例7-3 Oracle Data MinerワークフローのSchedulerジョブ・クラスの変更
connect sys as sysdba;
Enter password: password
EXEC DBMS_SCHEDULER.CREATE_JOB_CLASS(
job_class_name => 'MINING_CLASS',
resource_consumer_group => 'HEAVY_LOAD_RESOURCE_GROUP');
GRANT EXECUTE ON MINING_CLASS to DMUSER;
-- update WORKFLOW_JOB_CLASS
UPDATE ODMRSYS.ODMR$REPOSITORY_PROPERTIES
SET property_str_value = 'MINING_CLASS'
WHERE property_name = 'WORKFLOW_JOB_CLASS';
-- commit change
commit;
-- verify value of WORKFLOW_JOB_CLASS after update
SELECT property_name, property_str_value
FROM ODMRSYS.ODMR$REPOSITORY_PROPERTIES
WHERE property_name = 'WORKFLOW_JOB_CLASS';
7.5 パラレル処理の管理
Oracle Data Minerのワークフローとビュー、および大部分のOracle Machine Learningアルゴリズムは、データベースでパラレル処理が有効である場合、その利点を活用できます。INIT.ORA
のパラメータは、パラレル処理の動作を制御します。デフォルトでは、パラレル実行は無効になっています(PARALLEL_DEGREE_POLICY=MANUAL)
。
問合せのパラレル処理は、システムによって決定することも、並列度に設定することもできます。パラレル処理がシステムで決定される場合、データベースが、すべてのSQL文の並列度の値を動的に決定します。
より多くのリソースを使用すれば操作がより早く完了するとの想定で、Oracle Databaseのパラレル機能は最大リソースを使用するように設計されています。マルチユーザー環境では、並列度の使用を増やすとシステム・リソースが速く枯渇し、同時にパラレル文を実行する他のユーザーのリソースを低下させます。
Oracle Data Minerワークフローはパラレル問合せ機能をサポートしているため、ユーザーは特定のノードまたはワークフロー全体のパラレル処理を手動で有効化できます。この機能を無効にするには、Oracle Data Minerリポジトリ・プロパティPARALLEL_QUERY_ON_ALLOWED
をFALSE
に設定します。デフォルトでは、このプロパティはTRUE
に設定されます。例7-4に、Oracle Data Minerのパラレル問合せ処理機能を無効にする方法を示します。
Oracle Data Minerのモデル構築プロセスにより、データベース構成で許可されている場合、多数のパラレル・セッションが生成されることがあります。システム全体への影響を限定するためには、適切なリソース・プランを実装し、必要に応じて、ユーザーがData Minerセッション内でパラレル問合せを設定しないようにします。
例7-4 Oracle Data Minerのワークフローおよびノードのパラレル問合せ機能の無効化
connect sys as sysdba;
Enter password: password
-- value of PARALLEL_QUERY_ON_ALLOWED before update
SELECT property_name, property_str_value
FROM ODMRSYS.ODMR$REPOSITORY_PROPERTIES
WHERE property_name = 'PARALLEL_QUERY_ON_ALLOWED';
-- update PARALLEL_QUERY_ON_ALLOWED
UPDATE ODMRSYS.ODMR$REPOSITORY_PROPERTIES
SET property_str_value = 'FALSE'
WHERE property_name = 'PARALLEL_QUERY_ON_ALLOWED';
-- commit change
COMMIT;
-- verify value of PARALLEL_QUERY_ON_ALLOWED after update
SELECT property_name, property_str_value
FROM ODMRSYS.ODMR$REPOSITORY_PROPERTIES
WHERE property_name = 'PARALLEL_QUERY_ON_ALLOWED';
connect sys as sysdba;
Enter password: password
-- value of PARALLEL_QUERY_ON_ALLOWED before update
SELECT property_name, property_str_value
FROM ODMRSYS.ODMR$REPOSITORY_PROPERTIES
WHERE property_name = 'PARALLEL_QUERY_ON_ALLOWED';
-- update PARALLEL_QUERY_ON_ALLOWED
UPDATE ODMRSYS.ODMR$REPOSITORY_PROPERTIES
SET property_str_value = 'FALSE'
WHERE property_name = 'PARALLEL_QUERY_ON_ALLOWED';
-- commit change
COMMIT;
-- verify value of PARALLEL_QUERY_ON_ALLOWED after update
SELECT property_name, property_str_value
FROM ODMRSYS.ODMR$REPOSITORY_PROPERTIES
WHERE property_name = 'PARALLEL_QUERY_ON_ALLOWED';
7.6 システム管理用のOracle Data Minerリポジトリ・プロパティのサマリー
Oracle Data Minerリポジトリでシステム管理プロパティのサマリーを利用できます。
表7-1に、Oracle Data Minerリポジトリで利用できるシステム管理プロパティのサマリーを示します。
表7-1 システム管理用のOracle Data Minerリポジトリ・プロパティ
プロパティ | 型 | 説明 |
---|---|---|
|
ブール値 |
ユーザーがノードまたはワークフローに対するパラレル問合せを指定できるかどうかを示します。値は |
|
整数 |
最大同時モデル構築数。デフォルト値は10です。 |
|
整数 |
|
|
整数 |
キューに入っているモデル構築プロセスのタイムアウト間隔(単位は秒)。タイムアウトが発生すると、構築プロセスは、プロセス・ロック待機タイムアウト間隔を超えたことを示すエラー・メッセージとともに終了します。値が |
MAX_STRING_SIZE |
VARCHAR2、NVARCHAR2 | Oracle Data Minerによって生成された表内のデータ型VARCHAR2およびNVARCHAR2の最大サイズを制御します。このプロパティは、MAX_STRING_SIZE データベース・プロパティの値から初期化されます。
ノート: MAX_STRING_SIZE データベース・プロパティを変更した場合は、値が一致するようにODMR$REPOSITORY_PROPERTIESのMAX_STRING_SIZE プロパティを更新する必要があります。値が同期していない場合、ODMrランタイム・エラーが発生することがあります。
|
|
Varchar |
ワークフロー用のOracle Schedulerジョブ・クラス。デフォルトは、 |
POLLING_IDLE_RATE |
NUMBER | 明らかに実行中 と検出されるワークフローがない場合に、Oracle Data Minerクライアントがデータベースをポーリングするレートです。デフォルトは30000ミリ秒 (内部デフォルト)です。リポジトリ・プロパティ表の実際の値は0 です。管理者が値をゼロ以外の値に変更した場合、それがアクティブな設定になります。
|
POLLING_ACTIVE_RATE |
NUMBER |
実行中 と検出されるワークフローがある場合に、Oracle Data Minerクライアントがデータベースをポーリングするレートです。デフォルトは1500ミリ秒 (内部デフォルト)です。リポジトリ・プロパティ設定での実際のデフォルトは0 です。ゼロ以外の値に変更すると、それがアクティブな設定になります。
|
POLLING_COMPLETED_WINDOW |
NUMBER | 完了したワークフローをポーリング問合せ結果に含めるための時間です。リポジトリのデフォルトは0 です。クライアント・レベルのデフォルトは24 です。この設定は、ゼロ以外の値に変更された場合、ユーザーが利用できるクライアント・レベル・プリファレンス設定より優先されます。
|
PURGE_WORKFLOW_SCHEDULER_OBJS |
VARCHAR2 | 実行中のワークフローによって生成された古いOracle Schedulerオブジェクトをパージします。
|
PURGE_WORKFLOW_EVENT_LOG |
NUMBER | イベント・ログに保持される各ワークフローのワークフロー実行数を制御します。この制限内に収まるように、古いワークフローのイベントはパージされます。デフォルトは2 です。
ノート: 値0 を指定した場合、Oracle Data Minerはワークフロー・イベントをパージしません。イベント・ログのサイズが上昇し、問合せのパフォーマンスに影響を与えるため、これはお薦めしません。
|