8.3 マイニング・モデルのエクスポートおよびインポート

データ・マイニング・モデルをフラット・ファイルにエクスポートして作業途中の操作をバックアップしたり、Oracle Database Enterprise Editionの別のインスタンスに(たとえば、開発データベースからテスト・データベースに)モデルを移動したりできます。

モデルをエクスポートおよびインポートする方法は、いずれもOracle Data Pumpのテクノロジに基づいています。

DBMS_DATA_MININGパッケージには、個々のマイニング・モデルのエクスポートとインポートを行うためのEXPORT_MODELプロシージャとIMPORT_MODELプロシージャが含まれています。EXPORT_MODELIMPORT_MODELでは、Oracle Data Pumpのエクスポート機能とインポート機能を使用します。

関連トピック

8.3.1 Oracle Data Pumpについて

Oracle Data Pumpは、2つのコマンドライン・クライアントと2つのPL/SQLパッケージで構成されています。コマンドライン・クライアント(expdpおよびimpdp)により、データ・ポンプ・エクスポートおよびインポート・ユーティリティに対する使いやすいインタフェースが提供されます。expdpimpdpを使用して、スキーマ全体またはデータベース全体のエクスポートとインポートを行うことができます。

データ・ポンプ・エクスポート・ユーティリティは、マイニング・モデルを構成する表およびメタデータを含むスキーマ・オブジェクトを、ダンプ・ファイル・セットに書き出します。データ・ポンプ・インポート・ユーティリティは、ダンプ・ファイル・セットからモデル表およびメタデータを含むスキーマ・オブジェクトを取得し、それらをターゲット・データベースにリストアします。

expdpおよびimpdpは、個々のマイニング・モデルのエクスポートおよびインポートには使用できません。

関連項目:

Oracle Data Pumpと、expdpおよびimpdpユーティリティの詳細は、『Oracle Databaseユーティリティ』を参照してください

8.3.2 マイニング・モデルのエクスポートおよびインポート用オプション

マイニング・モデルのエクスポートおよびインポート用のオプションをリストします。

マイニング・モデルのエクスポートおよびインポート用オプションについて、次の表で説明します。

表8-1 Oracle Data Miningのエクスポートおよびインポート・オプション

タスク 説明

データベース全体のエクスポートまたはインポート

(DBAのみ)データベース全体のエクスポートにはexpdpを、データベース全体のインポートにはimpdpを使用します。データベース内のすべてのマイニング・モデルが含まれます。

スキーマのエクスポートまたはインポート

スキーマのエクスポートにはexpdpを、スキーマのインポートにはimpdpを使用します。スキーマ内のすべてのマイニング・モデルが含まれます。

データベース内の個々のモデルのエクスポートまたはインポート

個々のモデルのエクスポートにはDBMS_DATA_MINING.EXPORT_MODELを、個々のモデルのインポートにはDBMS_DATA_MINING.IMPORT_MODELを使用します。これらのプロシージャは、単一のマイニング・モデル、すべてのマイニング・モデルまたは特定の基準に一致するマイニング・モデルのエクスポートとインポートを行うことができます。

デフォルトでは、IMPORT_MODELは、モデルのエクスポート元のスキーマにモデルをインポートします。モデルを別のスキーマにインポートする場合は、schema_remapパラメータを指定できます。モデルを別の表領域を使用するスキーマにインポートする場合は、schema_remapと共にtablespace_remapを指定できます。

モデルを別のスキーマにインポートするために、データベース内の特別な権限が必要になる場合があります。これらの権限は、EXP_FULL_DATABASEロールおよびIMP_FULL_DATABASEロールによって付与され、特権ユーザー(SYSユーザー、またはDBAロールを持つユーザーなど)のみが使用できます。独自のスキーマ内でモデルのエクスポートとインポートを行う場合は、これらのロールは必要ありません。

モデルをインポートするには、ダンプ・ファイル・セットを作成したユーザーと同じデータベース権限を付与されている必要があります。そうでない場合は、完全なシステム権限を持つDBAがモデルのインポートを行います。

リモート・データベースに対する個々のモデルのエクスポートまたはインポート

リモート・データベースへの個々のモデルのエクスポートまたはリモート・データベースからの個々のモデルのインポートを行うには、データベース・リンクを使用します。データベース・リンクとは、別のデータベースのオブジェクトへのアクセスを可能にする、あるデータベースのスキーマ・オブジェクトです。このリンクは、EXPORT_MODELまたはIMPORT_MODELを実行する前に作成する必要があります。

プライベート・データベース・リンクを作成する場合、CREATE DATABASE LINKシステム権限が必要です。パブリック・データベース・リンクを作成する場合、CREATE PUBLIC DATABASE LINKシステム権限が必要です。また、リモートのOracle Databaseに対するCREATE SESSION権限が必要です。なお、ローカルとリモートの両方のOracle Databaseに、Oracle Netをインストールしておく必要があります。

8.3.3 EXPORT_MODELおよびIMPORT_MODELのディレクトリ・オブジェクト

ディレクトリ・オブジェクトを使用して、ダンプ・ファイル・セットの場所を識別する方法について説明します。

EXPORT_MODELおよびIMPORT_MODELは、ディレクトリ・オブジェクトを使用してダンプ・ファイル・セットの場所を特定します。ディレクトリ・オブジェクトとは、ホスト・コンピュータ上の物理ディレクトリのデータベース内での論理名です。

データ・マイニング・モデルをエクスポートするには、ディレクトリ・オブジェクトおよびそれが表すファイル・システム・ディレクトリに対する書込みアクセス権を持っている必要があります。データ・マイニング・モデルをインポートするには、ディレクトリ・オブジェクトおよびファイル・システム・ディレクトリに対する読取りアクセス権を持っている必要があります。また、データベース自体にはファイル・システムのディレクトリに対するアクセス権が必要です。ディレクトリ・オブジェクトを作成するにはCREATE ANY DIRECTORY権限が必要です。

次のSQLコマンドを実行すると、dmuser_dirという名前のディレクトリ・オブジェクトが作成されます。このディレクトリ・オブジェクトが表すファイル・システム・ディレクトリは、すでに存在している必要があり、さらにオペレーティング・システムによって付与される共有の読取りおよび書込みアクセス権を所有している必要があります。

CREATE OR REPLACE DIRECTORY dmuser_dir AS '/dm_path/dm_mining';

次のSQLコマンドを実行すると、dmuser_dirへの読取りおよび書込みアクセス権の両方がユーザーdmuserに付与されます。

GRANT READ,WRITE ON DIRECTORY dmuser_dir TO dmuser;

8.3.4 EXPORT_MODELおよびIMPORT_MODELの使用

この例は、EXPORT_MODELIMPORT_MODELを使用した様々なエクスポートおよびインポート・シナリオを示しています。

各例では、例8-1に示すディレクトリ・オブジェクトdmdirと、2つのスキーマdm1およびdm2を使用します。どちらのスキーマもデータ・マイニング権限を持っています。dm1には2つのモデルがあります。dm2には1つのモデルがあります。

SELECT owner, model_name, mining_function, algorithm FROM all_mining_models;
 
OWNER      MODEL_NAME           MINING_FUNCTION      ALGORITHM
---------- -------------------- -------------------- --------------------------
DM1        EM_SH_CLUS_SAMPLE    CLUSTERING           EXPECTATION_MAXIMIZATION
DM1        DT_SH_CLAS_SAMPLE    CLASSIFICATION       DECISION_TREE
DM2        SVD_SH_SAMPLE        FEATURE_EXTRACTION   SINGULAR_VALUE_DECOMP

例8-1 ディレクトリ・オブジェクトの作成

-- connect as system user
CREATE OR REPLACE DIRECTORY dmdir AS '/scratch/dmuser/expimp';
GRANT READ,WRITE ON DIRECTORY dmdir TO dm1;
GRANT READ,WRITE ON DIRECTORY dmdir TO dm2;
SELECT * FROM all_directories WHERE directory_name IN 'DMDIR';

OWNER      DIRECTORY_NAME             DIRECTORY_PATH
---------- -------------------------- ----------------------------------------
SYS        DMDIR                      /scratch/dmuser/expimp

例8-2 DM1からのすべてのモデルのエクスポート

-- connect as dm1
BEGIN
  dbms_data_mining.export_model (
                   filename =>   'all_dm1',
                   directory =>  'dmdir');
END;
/
 

ログ・ファイルとダンプ・ファイルは、dmdirに関連付けられている物理ディレクトリ/scratch/dmuser/expimpで作成されます。ログ・ファイルの名前はdm1_exp_11.logです。ダンプ・ファイルの名前はall_dm101.dmpです。

例8-3 元のDM1へのモデルのインポート

例8-2でエクスポートされたモデルが、まだdm1に存在しています。インポートにより同じ名前のモデルが上書きされることはないため、モデルを同じスキーマに戻す前に、同じ名前のモデルを削除する必要があります。

BEGIN
  dbms_data_mining.drop_model('EM_SH_CLUS_SAMPLE');
  dbms_data_mining.drop_model('DT_SH_CLAS_SAMPLE');
  dbms_data_mining.import_model(
                   filename => 'all_dm101.dmp',
                   directory => 'DMDIR');
END;
/
SELECT model_name FROM user_mining_models;
 
MODEL_NAME
------------------------------
DT_SH_CLAS_SAMPLE
EM_SH_CLUS_SAMPLE

例8-4 別のスキーマへのモデルのインポート

この例では、例8-2dm1からエクスポートされたモデルが、dm2にインポートされます。dm1スキーマではexample表領域を使用し、dm2スキーマではsysaux表領域を使用します。

-- CONNECT as sysdba 
BEGIN
  dbms_data_mining.import_model (
                   filename => 'all_d101.dmp',
                   directory => 'DMDIR',
                   schema_remap => 'DM1:DM2',
                   tablespace_remap => 'EXAMPLE:SYSAUX');
END;
/
-- CONNECT as dm2
SELECT model_name from user_mining_models;
 
MODEL_NAME
--------------------------------------------------------------------------------
SVD_SH_SAMPLE
EM_SH_CLUS_SAMPLE
DT_SH_CLAS_SAMPLE

例8-5 特定のモデルのエクスポート

単一のモデル、モデルのリストまたは特定の特性を共有するモデルのグループをエクスポートできます。

-- Export the model named dt_sh_clas_sample
EXECUTE dbms_data_mining.export_model (
             filename => 'one_model', 
             directory =>'DMDIR',
             model_filter => 'name in (''DT_SH_CLAS_SAMPLE'')');
-- one_model01.dmp and dm1_exp_37.log are created in /scratch/dmuser/expimp

-- Export Decision Tree models
EXECUTE dbms_data_mining.export_model(
             filename => 'algo_models',
             directory => 'DMDIR',
             model_filter => 'ALGORITHM_NAME IN (''DECISION_TREE'')');
-- algo_model01.dmp and dm1_exp_410.log are created in /scratch/dmuser/expimp

-- Export clustering models 
EXECUTE dbms_data_mining.export_model(
             filename =>'func_models',
             directory => 'DMDIR',
             model_filter => 'FUNCTION_NAME = ''CLUSTERING''');
-- func_model01.dmp and dm1_exp_513.log are created in /scratch/dmuser/expimp

8.3.5 シリアライズされたモデルのEXPORTおよびIMPORT

Oracle Databaseリリース18c以降、EXPORT_SERMODELプロシージャとIMPORT_SERMODELプロシージャは、シリアライズされたモデルのエクスポートとインポートに使用できます。

シリアライズされた形式を使用すると、スコアリングのために別のプラットフォーム(データベースの外部)にモデルを移動できます。モデルはBFILEに保存可能なBLOBでエクスポートされます。インポート・ルーチンは、BLOBでシリアライズされたコンテンツと、そのコンテンツで作成するモデルの名前を受け取ります。

8.3.6 PMMLからのインポート

Predictive Model Markup Language (PMML)で表現された回帰モデルをインポートできます。

PMMLは、Data Mining Group(http://www.dmg.org)によって策定されたXMLベースの規格です。PMMLに準拠しているアプリケーションは、任意のベンダーによって作成されたPMML準拠のモデルを配置できます。Oracle Data Miningでは、回帰モデルに対応するPMML 3.1のコア機能をサポートしています。

PMMLで表現された回帰モデルをインポートできます。モデルのタイプは、RegressionModel (線形回帰またはバイナリ・ロジスティック回帰)である必要があります。