6 Oracle Data Minerリポジトリの管理

この章では、スクリプトを使用したOracle Data Minerリポジトリの管理方法について説明します。

6.1 Oracle Data Miner管理スクリプトについて

Oracle Data Minerには、リポジトリのインストールと管理に使用する一連のStructured Query Language (SQL)スクリプトが用意されています。

SQLスクリプトは、SQL Developerとともに次のディレクトリにインストールされます。

SQL_Developer_Home\sqldeveloper\dataminer\scripts

SQLスクリプトは、SQL*PlusまたはSQL Developer Worksheetで実行できます。Oracle Data Minerのスクリプトはすべて、DBA権限で実行する必要があります。

ノート:

Oracle Data Minerスクリプトの多くはSQL Developerと統合されているため、データ・グラフィカル・ユーザー・インタフェースを介していくつかの管理機能を使用できます。

6.2 Oracle Data Minerスクリプトのパスの設定

SQL*PlusまたはSQL Developer Webシートを使用して、Oracle Data Minerスクリプトのパスを設定できます。

スクリプトのデフォルトの検索パスを設定するには:

  • SQL*Plus: scriptsディレクトリからSQL*Plusを起動します。

    SQL_Developer_Home\sqldeveloper\dataminer\scripts

  • SQL Developer Worksheet: Worksheetのプロパティで、デフォルトの検索パスをscriptsディレクトリに設定します。

    SQL Developer Worksheetのプロパティについては、スクリプトで出力する最大行数を500000に変更することも必要です。

6.3 リポジトリのステータスとバージョンの判定

リポジトリのバージョンは、Oracle Data Minerクライアントのバージョンと互換である必要があります。クライアントとサーバーのバージョンに互換性がない場合、クライアントはサーバーに接続できません。

次の問合せは、リポジトリのバージョンとステータスを返します。

set echo on;
-- value of VERSION and REPOSITORY_STATUS
SELECT property_name, property_str_value 
   FROM ODMRSYS.ODMR$REPOSITORY_PROPERTIES
   WHERE property_name IN ('VERSION','REPOSITORY_STATUS', 'WF_VERSION');
PROPERTY_NAME             PROPERTY_STR_VALUE
------------------------------ ------------------------------
REPOSITORY_STATUS         LOADED
VERSION                   12.1.0.2.3
WF_VERSION                12.1.0.2.3 

Oracle Data Minerリポジトリには、ステータスを示す値としてNOT_LOADEDLOADEDの2つがあります。ステータスNOT_LOADEDは通常、SQL Developerの新しいバージョンまたは新しいパッチ・リリースをサポートするためにリポジトリをアップグレード中であることを示します。アップグレードが完了すると、ステータスがLOADEDになります。

6.4 リポジトリのバックアップとリストア

Oracle Data Minerリポジトリをアップグレードするか、データベース・アップグレードを実行する前に、ODMRSYSとOracle Data Minerユーザー・スキーマを含む、Oracle Data Minerのフル・バックアップを実行する必要があります。

Oracle Data Minerには、ユーザー・スキーマを含まずにODMRSYS内のワークフロー・メタデータをバックアップするためのスクリプトも用意されています。

6.4.1 全体バックアップとリストア

Oracle Database 11.2.0.4以降では、フル・データベース・バックアップと独立に、Oracle Data Minerリポジトリとユーザー・スキーマの、フル・バックアップおよびリストアを実行することができます。

6.4.1.1 Database 11.2.0.4以降のフル・バックアップおよびリストア

Oracle Database 11.2.0.4以降では、Oracle Data MinerリポジトリのXML記憶域はバイナリです。これらのデータベースでは、Oracle Data Pumpを使用して、データベースのフル・バックアップおよびリストアと独立に、ODMRSYSとユーザー・スキーマをバックアップおよびリストアできます。

Oracle Data Pumpを使用して、個々のスキーマをバックアップおよびリストアできます。別の方法としては、Oracle RMANでOracle Data Minerをバックアップおよびリストアできます。

6.4.2 ワークフローのみのバックアップ

Oracle Data Minerには、ワークフローによって生成されるユーザーのスキーマ内のオブジェクトを含まず、リポジトリ内のワークフロー・メタデータをバックアップするスクリプトが用意されています。

この簡略化されたバックアップ戦略はワークフロー仕様を保護し、ワークフローをうっかり削除してもリストアできるようにします。ワークフローがリストアされたら、それを再実行して、すべてのサポート・オブジェクトがユーザーのスキーマに存在することを確認する必要があります。creatxmlworkflowsbackup2スクリプトは、ODMRSYS内のすべてのワークフローを、別個のバックアップ・アカウントのODMR$WORKFLOWS_BACKUPと呼ばれる表にバックアップします。スクリプトを実行する前に、バックアップ・スキーマが存在し、利用できることを確認します。

構文:

createxmlworkflowsbackup2.sql backup_account

パラメータ:

backup_accountは、バックアップ表ODMR$WORKFLOWS_BACKUPのスキーマの名前です。

この例は、BACKUPACCTと呼ばれるバックアップ・アカウントのワークフローをバックアップします:

set serveroutput on
@createxmlworkflowsbackup2l BACKUPACCT

ノート:

dropRepositoryAndUserObjectsスクリプトは、リポジトリを削除するときに、すべてのバックアップ表を削除します。dropRepositoryAndUserObjectsスクリプトを実行してリポジトリを削除すると、すべてのワークフロー・バックアップが失われます。

createxmlworkflowsbackup2を実行するたびに、ワークフローの完全なセットがバックアップ表に追加されます。バックアップ・スクリプトには、バックアップ表内に30個までのバックアップが保持されます。古いバックアップは自動的に削除されます。たとえば、毎日バックアップを実行する場合、最大30日間、各ワークフローのリストアを要求できます。

バックアップ・スクリプトでは、DEFINE_MAX_VERSIONSが、バックアップ表に維持されるバックアップの数を指定します。30以上のバックアップを維持する場合、バックアップ・スクリプトcreatexmlworkflowsbackup2で、DEFINE_MAX_VERSIONSの値を希望する数に変更します。

6.4.3 ワークフローのみのリストア

createxmlworkflowsbackup2で作成されたバックアップ表からワークフローをリストアできます。

createxmlworkflowsbackup2で作成されたバックアップ表からワークフローをリストアするには、restorexmlworkflowfrombackup2スクリプトを実行します。

restorexmlworkflowfrombackup2.sqlは、バックアップ表からOracle Data Minerリポジトリにワークフローをリストアします。使用方法は次のとおりです。

構文:

restorexmlworkflowfrombackup2.sql [option] [backup_account] [workflow_definition]

パラメータ:

option は、次の値を1つ取るオプションのパラメータです。

  • ADD_ONLY — リポジトリにすでに存在していないワークフローをリストアし、存在しないプロジェクトを必要に応じて作成します。(デフォルト)

  • DROP_AND_ADD — リポジトリにある既存のワークフローとプロジェクトを削除したうえで、すべてのワークフローをバックアップからリストアし、存在しないプロジェクトは必要に応じて作成します。

  • OVERRIDE_ONLY — リポジトリにすでに存在するワークフローのみをリストアします。

  • OVERRIDE_AND_ADDOVERRIDE_ONLYADD_ONLYの両方のオプションを適用します。

backup_accountは、workflow_definitionが指定されない限りオプションで、指定された場合には必須です。バックアップ・アカウントを指定しない場合、ワークフローはリポジトリにあるバックアップ表からリストアされます。バックアップ表が存在しない場合、例外が発生します。

workflow_definitionは、どのワークフローをバックアップからリストアするかを指定する表またはビューを特定する、オプションのパラメータです。表またはビューには、USER_NAMEPROJECT_NAMEWORKFLOW_NAMEVERSIONの4つの列が必要です。表の各行が、リストアするワークフローを特定します。VERSIONの値がnullの場合は、最新バージョンの値がリストアに使用されます。ワークフロー定義を何も指定しない場合は、最新のバックアップ・バージョンがデフォルトになります

例:

この例は、リポジトリ内のすべてのワークフローを削除して、BACKUPACCT内のバックアップ表からワークフローをリストアします。

set serverput on
@restorexmlworkflowfrombackup2 DROP_AND_ADD BACKUPACCT

6.4.4 ワークフローのみのリストアの例

このトピックでは、選択的ワークフロー・リストアとフル・ワークフロー・リストアの例を示します。

例6-1 選択的ワークフロー・リストア

先週、ユーザーSCOTTが誤ってすべてのワークフローを削除してしまったと仮定しましょう。ADD_ONLYオプションを使用して、ワークフローをリストアできます。削除してしまったワークフローがどのバージョンのバックアップに含まれているかを確認するには、バックアップの問合せが必要です。バージョンが12の場合、次のスクリプト例はDBA権限で実行され、それらのワークフローのみをリロードします。

@restorexmlworkflowfrombackup2.sql ADD_ONLY BACKUPACCT BACKUPACCT.WORKFLOW_V

次に示すWORKFLOW_Vビューは、ユーザーSCOTTに存在するすべてのワークフローを、指定したバージョンのバックアップから選択します。

CREATE VIEW BACKUPACCT.WORKFLOW_V AS 
       SELECT user_name, project_name, workflow_name, version
       FROM backupacct.odmr$workflows_backup 
       WHERE user_name='SCOTT' AND version = 12;

例6-2 フル・ワークフロー・リストア

致命的なリポジトリ障害が発生し、最新のバックアップからすべてのワークフローを完全に再ロードすることが必要になった仮定します。DROP_AND_ADDオプションを使用すると、古いワークフローをすべて削除して、バックアップにあるすべてのワークフローを再ロードすることができます。この例では、ODMRSYSアカウントとは異なる別のアカウントにバックアップ表が存在します。リカバリには最新バージョンのバックアップが使用されるので、ワークフロー定義のパラメータは必要ありません。

@restorexmlworkflowfrombackup2.sql DROP_AND_ADD BACKUPACCT

6.5 リポジトリの移行

この項では、リポジトリの移行に関連するトピックについて説明します。

内容は次のとおりです。

6.5.1 ODMRSYSのアップグレード

migratebinaryodmrスクリプトは、バイナリXML記憶域を使用するODMRSYSスキーマ内のワークフロー・データをアップグレードします。ODMRSYS表領域は、Oracle Automatic Segment Space Management (ASSM)表領域です。

ODMRUSERロールを持つセッションが現在実行中の場合、セッション・オブジェクト・ロックによりアップグレードがブロックされます。session_disconnectパラメータを使用してアクティブなセッションをすべて切断し、それによりアップグレード・プロセスの進行を可能にすることができます。

構文:

@migratebinaryodmr.sql session_disconnect

パラメータ:

session_disconnectは、次の値の1つを持つことができます。

R — アクティブなセッションをレポートします。切断はしません。

D — アクティブなセッションを切断します。レポートはしません。

DRまたはRD — アクティブなセッションを切断し、レポートします。

例:

この例はODMRSYS内のバイナリXMLワークフロー・データをアップグレードして、アクティブなODMRUSERセッションをすべて切断し、レポートします。

@migratebinaryodmr DR

6.5.2 リポジトリを移行するスクリプト

SQL Developer 4.0からは、特定のアップグレード・パスにOracle Data Minerの移行スクリプトを使用できます。

表6-1 Oracle Data Minerのアップグレード・スクリプト

SQL Developerのバージョン データベースのバージョン スクリプト 説明
4.0以降 11.2.0.4以降 migratebinaryodmr.sql 今後のリリースで、オブジェクト記憶域からバイナリ記憶域へのXML変換が不要になったときに該当します。
4.0以降 当初は11.2.0.3以前。データベースを11.2.0.4以降にアップグレード upgradeRepoWithNewTableSpace.sqlまたはupgradeRepoFromORtoBinary.sql データベースは、Oracle Data Minerリポジトリとは別にアップグレードできるので、これを考慮する必要があります。スクリプトの選択は、ODMRSYS表領域がASSMかどうかによって異なります。
3.2.2以前 11.2.0.4以降(デフォルトのODMRSYS表領域がASSMベースではない) upgradeRepoWithNewTableSpace.sql 入力パラメータとしてASSM表領域が必要です。これは、ワークフロー・データをXMLオブジェクト記憶域からXMLバイナリ記憶域に移行するために使用されます。

3.2.2以前

11.2.0.4以降(デフォルトのODMRSYS表領域がASSMベース)

upgradeRepoFromORtoBinary.sql ワークフロー・データが、XMLオブジェクト記憶域からXMLバイナリ記憶域に移行されます。

6.5.3 新しいODMRSYS表領域のオブジェクト・リレーショナルからバイナリへのアップグレード

upgradeRepoWithNewTableSpaceスクリプトは、指定された表領域を、オブジェクト・リレーショナルからバイナリのXML記憶域にアップグレードし、ODMRSYS内のワークフロー・データを新しい表領域に移行します。新しい表領域は、Oracle Automatic Segment Space Management (Oracle ASSM)表領域である必要があります。

ODMRUSERロールを持つセッションが現在実行中の場合、セッション・オブジェクト・ロックによりアップグレードがブロックされます。session_disconnectパラメータを使用してアクティブなセッションをすべて切断し、アップグレード・プロセスの進行を可能にできます。

構文:

upgradeRepoWithNewTableSpace.sql ASSMtablespace session_disconnect

パラメータ:

ASSMtablespaceは、ASSM表領域の名前です。

session_disconnectは、次の値の1つを持つことができます。

R — アクティブなセッションをレポートします。切断はしません。

D — アクティブなセッションを切断します。レポートはしません。

DRまたはRD — アクティブなセッションを切断し、レポートします。

:

この例は、ODMRSYS内のオブジェクト・リレーショナルXMLデータを、バイナリXML記憶域を使用する新しいASSM表領域、my_ASSM_spaceに移行します。いずれかのODMRUSERセッションがアクティブである場合、それは切断され、レポートされます。

@upgradeRepoWithNewTableSpace my_ASSM_space DR

6.5.4 ODMRSYSのオブジェクト・リレーショナルからバイナリへのアップグレード

upgradeRepoFromORtoBinaryスクリプトは、ODMRSYSワークフロー・データを、オブジェクト・リレーショナルのXML記憶域からバイナリXML記憶域に移行します。アップグレードされたODMRSYS表領域は、Oracle Automatic Segment Space Management (ASSM)表領域です。

ODMRUSERロールを持つセッションが現在実行中の場合、セッション・オブジェクト・ロックによりアップグレードがブロックされます。session_disconnectパラメータを使用してアクティブなセッションをすべて切断し、それによりアップグレード・プロセスの進行を可能にすることができます。

構文:

@upgradeRepoFromORtoBinary.sql session_disconnect

パラメータ:

session_disconnectは、次の値の1つを持つことができます。

R — アクティブなセッションをレポートします。切断はしません。

D — アクティブなセッションを切断します。レポートはしません。

DRまたはRD — アクティブなセッションを切断し、レポートします。

例:

この例は、ODMRSYSをオブジェクト・リレーショナルXML記憶域からバイナリXML記憶域にアップグレードします。アップグレードされた表領域は、ASSMベースです。いずれかのODMRUSERセッションがアクティブである場合、それは切断され、レポートされます。

@upgradeRepoFromORtoBinary DR

6.6 リポジトリの削除

dropRepositoryAndUserObjectsスクリプトは、Data Minerリポジトリと、ユーザーのスキーマにある関連オブジェクトを削除します。

ODMRUSERロールを持つセッションが現在実行中の場合、セッション・オブジェクト・ロックによりアップグレードがブロックされます。session_disconnectパラメータを使用してアクティブなセッションをすべて切断し、アップグレード・プロセスの進行を可能にできます。

構文:

dropRepositoryAndUserObjects.sql session_disconnect

パラメータ:

session_disconnectは、次の値の1つを持つことができます。

R — アクティブなセッションをレポートします。切断はしません。

D — アクティブなセッションを切断します。レポートはしません。

DRまたはRD — アクティブなセッションを切断し、レポートします。

例:

この例は、ODMRSYS、スキーマおよびOracle Data Minerユーザーのスキーマ内の関連オブジェクトを削除し、すべてのアクティブなODMRUSERセッションを切断およびレポートします。

@dropRepositoryAndUserObjects DR