| Oracle Fusion Middleware Repository Creation Utilityユーザーズ・ガイド 11gリリース1(11.1.1) B55904-01 | 
 | 
|  戻る |  次へ | 
コンポーネント所有者がスキーマの作成スクリプトおよび削除スクリプトをRCUにプラグインできるよう、RCUにはXMLベースのフレームワークが用意されています。この章では、コンポーネントをRCUに統合するときに使用する構成XMLファイルおよびスクリプトの作成ガイドラインについて詳しく説明します。
この章は、次の項で構成されています。
RCUには、コンポーネント・スクリプトを統合するための次のオプションが用意されています。
コンポーネント・スクリプトの統合に推奨されるオプションは、RCU JDBCエンジン準拠のSQL*Plusスクリプトです。SQL*Plusおよび外部プロセスは、Oracle Portal 10gやIdentity Managementなど、レガシー・コンポーネントおよびクラシック・コンポーネントの統合のみを目的とします。SQL*Plusスクリプトに依存するコンポーネントは、インストール先のOracleホームから実行している場合、RCUでロードできません。CDからRCUを実行している場合のみ使用できます。
RCU JDBCエンジンは、JDBC経由で一連のSQL*Plus機能をエミュレートします。この機能セットは広範にわたり、スキーマ作成の要件を十分に満たしています。コンポーネント・チームは、わずかな変更のみで既存のSQL*Plusスクリプトを統合できます。
RCU JDBCエンジンはSQL*Plusスクリプトを解析して個々の文を取得し、各文をJDBCで実行します。スクリプトへのコマンドライン引数およびDEFINE変数を用いた置換がサポートされています。スクリプトはネストできます(たとえば、1つのスクリプトから他のスクリプトをコールできます)。コンポーネント・チームが、構成ファイルを介して、RCUに対して予想されるエラーおよび致命的エラーのリストを指定すると、RCUはスクリプトの実行時にこれらを解析します。
これらのスクリプトは、開発環境においてSQL*Plusで実行できるため、簡単に管理および使用できます。ただし、RCUに統合されている場合は、これらのスクリプトが正しく実行されるよう、開発環境でRCU JDBCエンジン・ツールも使用することをお薦めします。
このオプションは、Oracle以外のデータベースに対して推奨されます(Oracleデータベースの場合は、RCU JDBCエンジン準拠のSQL*Plusスクリプトを使用する必要があります)。スクリプト・ファイルの内容は、Connection.prepareCall()またはConnection.createStatement()を使用してコールできる有効なPL/SQLブロックでなければなりません。標準のJDBCバインド変数と'?'の表記規則がサポートされます。
このオプションには次のような弱点があります。
スクリプトはネストされません。そのため、スクリプトが大量になる可能性があります。
この形式のスクリプトを再作成する場合、コンポーネント・チームによるやりなおしの作業が膨大になる可能性があります。
DDL文ごとにEXECUTE IMMEDIATEでラップする必要があるため、管理が困難です。
開発環境でSQL*Plusを使用して実行できません。
なんらかのエラーが発生するとブロック全体が失敗するため、エラー・サポートがあまり役立ちません。
次に例を示します。
<Action TYPE="JDBC" PERCENT_PROGRESS="20"> <ValidIf DBTYPE="ORACLE" /> <Command TYPE="INLINE">DROP USER %SCHEMA_USER% CASCADE</Command> </Action>
2番目の例を示します。
<Action TYPE="Java" PERCENT_PROGRESS="100">
   <Command TYPE="METHOD">
      oracle.ias.version.SchemaVersionUtil:utilSetComponentValid
   </Command>
   <Parameters>
      <Parameter TYPE="String">MDS</Parameter>
    </Parameters>
</Action>
このオプションは主に、RCUからロードする必要があるレガシー・コンポーネントを使用するためのものです。このオプションは、CDまたはスタンドアロンshiphomeからRCUを実行する場合のみ使用できます。RCUは、CDまたはデータベース・サーバー上のOracleクライアントを使用します。OracleホームからRCUを起動することによってロードされることが予期される11gコンポーネントでは、このオプションを使用しないでください。
例:
<Action TYPE="SQLPlus" PERCENT_PROGRESS="100">
   <Command TYPE="SCRIPT">%SCRIPT_HOME%/oid/scripts/seedldap.sql</Command>
   <IgnorableErrors>
      <Error Type="ORA-01918">user name does not exist</Error>
   </IgnorableErrors>
</Action>
2番目の例を示します。
<Action TYPE="JDBCSqlScript" PERCENT_PROGRESS="20">
   <ValidIf DBTYPE="ORACLE" />
   <Command TYPE="SCRIPT">%SCRIPT_HOME%/mds/sql/mds_user.sql</Command>
   <Parameters>
      <Parameter TYPE="CmdLine">%SCHEMA_USER%</Parameter>
      <Parameter TYPE="CmdLine">%SCHEMA_PASSWORD%</Parameter>
      <Parameter TYPE="CmdLine">%DEFAULT_TABLESPACE%</Parameter>
      <Parameter TYPE="CmdLine">%TEMPORARY_TABLESPACE%</Parameter>
   </Parameters>
</Action>
このオプションは、OPCA(Oracle Portal 10g)のように、スキーマを作成するための独自の構成ツールを持つコンポーネント用のみに提供されています。このオプションはRCUエラー処理フレームワークを利用できないため、新しいコンポーネントでの使用はお薦めできません。
例:
<Action TYPE="HostCmd"> <Command TYPE="SCRIPT">%RCU_HOME%/rcu/integration/cdb/config/bin/configure</Command> <Parameters> <Parameter TYPE="ProcessInput">%JDBC_CONNECT_STRING%</Parameter> <Parameter TYPE="ProcessInput">%DBADMIN_USER%</Parameter> <Parameter TYPE="ProcessInput">%DBADMIN_PASSWORD%</Parameter> <Parameter TYPE="ProcessInput">%PREFIX_NAME%</Parameter> <Parameter TYPE="ProcessInput">%SCHEMA_USER%</Parameter> <Parameter TYPE="ProcessInput">%SCHEMA_PASSWORD%</Parameter> <Parameter TYPE="ProcessInput">%DEFAULT_TABLESPACE%</Parameter> <Parameter TYPE="ProcessInput">%TEMPORARY_TABLESPACE%</Parameter> </Parameters> </Action>
このオプションは、JDBC接続を受け入れてSQL文を実行できる、Javaコードを持つコンポーネントに対して提供されています。これは、通常、大量のデータを生成する必要がある場合、または、LOBを作成する必要がある場合に使用します。
例:
<Action TYPE="Java">
   <Command TYPE="METHOD">
      oracle.ias.version.SchemaVersionUtil:utilCreateRegistryEntry
   </Command>
   <Parameters>
      <Parameter TYPE="Connection"></Parameter>
      <Parameter TYPE="String">%SCHEMA_USER%</Parameter>
   </Parameters>
</Action>
2番目の例:
<Action TYPE="Java">
   <Command TYPE="METHOD">oracle.webdb.config.PortalConfigAssistant:main</Command>
   <Parameters>
      <Parameter TYPE="StringArray">-mode PORTAL -s %SCHEMA_USER% -p %DBADMIN_PASSWORD% -c %DB_HOSTNAME%:%DB_PORTNUMBER%:%DB_SERVICE% -silent -verbose -owa -u %DEFAULT_TABLESPACE% -t %TEMPORARY_TABLESPACE% -d %SCHEMA_USER%_DOC -l %SCHEMA_USER%_LOG -in %SCHEMA_USER%_IDX -demo -report -voh %RCU_HOME% -log %RCU_LOG_LOCATION% -oh %SQLPLUS_HOME% -mrc %PREFIX_NAME% -rcu </Parameter>
   </Parameters>
</Action>
RCUには、コンポーネントを統合するための次の構成ファイル・タイプが用意されています。
ここでは、RCUで定義されるXML DTDについて説明します。
各コンポーネント所有者は、前提条件とアクションを一覧表示した、次のDTDを遵守した構成ファイルを提供します。
コンポーネント記述子構成ファイルはComponentInfo.dtdと呼ばれ、RCU_HOME/rcu/configディレクトリ(UNIX)またはRCU_HOME\rcu\configディレクトリ(Windows)にあります。
<?xml version="1.0" encoding="UTF-8" ?>
<!ENTITY % commonDTD SYSTEM "RCUCommon.dtd">
%commonDTD;
<!ELEMENT ComponentInfo (Display, PrefixSettings, Component*, PrerequisiteDescriptor*, ExecutionDescriptor?, FatalErrors?, IgnorableErrors?)>
<!ATTLIST ComponentInfo
        VERSION CDATA #REQUIRED
        TYPE CDATA #REQUIRED
        RESOURCE_BUNDLE_PACKAGE CDATA #IMPLIED>
<!ELEMENT PrefixSettings (DetectQuery*)>
<!ATTLIST PrefixSettings
          USE_SCHEMA_PREFIX (TRUE|FALSE) "TRUE"
          USE_TABLESPACE_PREFIX (TRUE|FALSE) "TRUE">
<!ELEMENT Component (ValidIfSet?, ValidIf?, Display, RepositoryConfigFile?, DetectQuery*, SchemaVersion?, SchemaUser?, AdditionalSchemaUser*, Dependents?, DatabaseName?, Tablespaces?)>
<!ATTLIST Component
        ID CDATA #REQUIRED
        PROGRESS_UNITS CDATA #IMPLIED
        IS_GROUPING_COMPONENT  (TRUE|FALSE) "FALSE"
        DEFAULT_SELECTED (TRUE|FALSE) "FALSE"
        CHILD_OF CDATA #IMPLIED >
<!ELEMENT Display (#PCDATA)>
<!ATTLIST Display
        NLS_ID CDATA #IMPLIED>
<!ELEMENT RepositoryConfigFile (#PCDATA)>
<!ELEMENT DetectQuery (#PCDATA)>
<!ATTLIST DetectQuery
        OPERATION (CREATE|DROP) 'CREATE'
        TYPE (ORACLE|SQLSERVER|IBMDB2) 'ORACLE'>
<!ELEMENT SchemaVersion (#PCDATA)>
<!ELEMENT SchemaUser (#PCDATA)>
<!ATTLIST SchemaUser
        USER_EDITABLE (TRUE|FALSE) "TRUE"
        PREFIXABLE (TRUE|FALSE) "TRUE"
        IS_CREATED  (TRUE|FALSE) "TRUE">
<!ELEMENT AdditionalSchemaUser (#PCDATA)>
<!ATTLIST AdditionalSchemaUser
        STARTS_WITH_SCHEMA_USER (TRUE|FALSE) "TRUE" >
<!ELEMENT Dependents (Dependent*)>
<!ELEMENT Dependent (#PCDATA)>
<!ATTLIST Dependent
        COMPONENT_ID CDATA #REQUIRED
        ALT_COMPONENT_ID CDATA #IMPLIED>
<!ELEMENT DatabaseName (#PCDATA)>
<!ELEMENT Tablespaces (Tablespace*)>
<!ATTLIST Tablespace TYPE (DEFAULT_TABLESPACE|TEMPORARY_TABLESPACE|ADDITIONAL_TABLESPACE1|ADDITIONAL_TABLESPACE2|ADDITIONAL_TABLESPACE3|ADDITIONAL_TABLESPACE4|ADDITIONAL_TABLESPACE5) "DEFAULT_TABLESPACE">
<!ELEMENT Tablespace (Prompt, TablespaceName)>
<!ELEMENT Prompt (#PCDATA)>
<!ATTLIST Prompt NLS_ID CDATA #IMPLIED>
<!ELEMENT TablespaceName (#PCDATA)>
リポジトリ構成ファイルはRepositoryConfig.dtdと呼ばれ、RCU_HOME/rcu/configディレクトリ(UNIX)またはRCU_HOME\rcu\configディレクトリ(Windows)にあります。
<?xml version="1.0" encoding="UTF-8" ?>
<!ENTITY % commonDTD SYSTEM "RCUCommon.dtd">
%commonDTD;
<!ELEMENT RepositoryConfig (PrerequisiteDescriptor*, ExecutionDescriptor, DeleteDescriptor?)>
<!ATTLIST RepositoryConfig
        COMP_ID CDATA #REQUIRED>
<!ELEMENT DeleteDescriptor (Action*)>
RCUは、サポートされるコンポーネントのマスター・リストを保持しています。これは、サポートされる各コンポーネントのエントリで構成されています。新しいコンポーネントが追加されるたびに、サポートされるコンポーネントのマスター・リストは、コンポーネント所有者によって提供されるXML統合ファイルを参照して更新されます。
この構成ファイルはRCUCommon.dtdと呼ばれ、RCU_HOME/rcu/config(UNIX)ディレクトリまたはRCU_HOME\rcu\config(Windows)ディレクトリにあります。
<?xml version="1.0" encoding="UTF-8" ?>
<!ELEMENT PrerequisiteDescriptor (DBPrerequisiteSet*, DBPrerequisite*)>
<!ATTLIST PrerequisiteDescriptor
        TYPE (CREATE|DROP|REGISTER|DEREGISTER) 'CREATE'>
<!ELEMENT DBPrerequisiteSet (ValidIfSet?, ValidIf?, PrereqSetErrorMsg?, DBPrerequisite*)>
<!ATTLIST DBPrerequisiteSet
          OPERATOR (OR|AND) "OR"
          SOFT (TRUE|FALSE) "FALSE">
<!ELEMENT DBPrerequisite (ValidIfSet?, ValidIf?, PrereqIdentifier, PrereqValue, PrereqErrorMsg?)>
<!ATTLIST DBPrerequisite
PREREQ_TYPE (InitParameter|DBOption|Java|DBComponent|DBVersion|DBObject|CustomSQL|TablespaceFreeMB) "CustomSQL"
        DATA_TYPE (STRING|NUMBER) "STRING"
        COMPARE_OPERATOR (EQ|GT|LT|NE|GE|LE|COMPARE_VERSION) "EQ"
        SOFT (TRUE|FALSE) "FALSE">
<!ELEMENT PrereqIdentifier (#PCDATA)>
<!ELEMENT PrereqValue (#PCDATA)>
<!ELEMENT PrereqSetErrorMsg (#PCDATA)>
<!ATTLIST PrereqSetErrorMsg
        NLS_ID CDATA #IMPLIED>
<!ELEMENT PrereqErrorMsg (#PCDATA)>
<!ATTLIST PrereqErrorMsg
        NLS_ID CDATA #IMPLIED>
<!ATTLIST PrereqValue
        UNIT (KB|MB|NoUnit) 'NoUnit'>
<!ELEMENT ExecutionDescriptor (Action*)>
<!ATTLIST ExecutionDescriptor
        TYPE (Load|PreLoad|PostLoad) "Load">
<!ELEMENT Action (ValidIfSet?, ValidIf?, Command, Parameters?, FatalErrors?, IgnorableErrors?)>
<!ATTLIST Action
        TYPE (JDBCSqlScript|JDBC|SQLPlus|HostCmd|Java) "JDBCSqlScript"
        DB_VERSION CDATA #IMPLIED
        PERCENT_PROGRESS CDATA #IMPLIED
        CONNECT_AS_OWNER (TRUE|FALSE) "FALSE"
        RESET_SESSION (TRUE|FALSE) "FALSE">
<!ELEMENT Command (#PCDATA)>
<!ATTLIST Command
        TYPE (SCRIPT|INLINE|METHOD) "SCRIPT">
<!ELEMENT Parameters (Parameter*)>
<!ELEMENT Parameter (#PCDATA)>
<!ATTLIST Parameter
        TYPE (BindVar|CmdLine|ProcessInput|EnvVar|Connection|int|String|StringArray|boolean) "CmdLine">
<!ELEMENT FatalErrors (Error*)>
<!ELEMENT IgnorableErrors (Error*)>
<!ELEMENT Error (#PCDATA)>
<!ATTLIST Error
        Type CDATA #REQUIRED>
<!ELEMENT ValidIfSet (ValidIf*)>
<!ATTLIST ValidIfSet
          DBTYPE CDATA #IMPLIED
          DBVERSION CDATA #IMPLIED
          OSNAME CDATA #IMPLIED
          OPERATOR (OR|AND) "OR">
<!ELEMENT ValidIf (CustomQueryFilter?)>
<!ATTLIST ValidIf
        DBTYPE CDATA #IMPLIED
        DBVERSION CDATA #IMPLIED
        OSNAME CDATA #IMPLIED >
<!ELEMENT CustomQueryFilter (#PCDATA)>
<!ATTLIST CustomQueryFilter
        DATA_TYPE (STRING|NUMBER) "STRING"
        COMPARE_OPERATOR (EQ|GT|LT|NE|GE|LE|COMPARE_VERSION) "EQ"
        VALUE CDATA #REQUIRED >
RCUは、作成される表領域とデータファイルおよびその属性のリストを保持しています。これにより、表領域属性およびデータファイル属性を外部で変更できます。
記憶域属性の構成ファイルはStorage.dtdと呼ばれ、RCU_HOME/rcu/config(UNIX)ディレクトリまたはRCU_HOME\rcu\config(Windows)ディレクトリにあります。
<?xml version="1.0" encoding="UTF-8" ?>
<!ELEMENT StorageAttributes (TablespaceAttributes*)>
<!ELEMENT TablespaceAttributes (Type?,DefaultTemp?, BlockSize?, Bigfile?, AutoSegmentSpaceManagement?, DatafilesList)>
<!ATTLIST TablespaceAttributes
        NAME CDATA #REQUIRED>
<!ELEMENT Type (#PCDATA)>
<!ELEMENT DefaultTemp (#PCDATA)>
<!ELEMENT BlockSize (#PCDATA)>
<!ELEMENT Bigfile (#PCDATA)>
<!ELEMENT AutoSegmentSpaceManagement (#PCDATA)>
<!ELEMENT DatafilesList (DatafileAttributes+)>
<!ELEMENT DatafileAttributes (Size, Reuse?, AutoExtend?, Increment?, Maxsize?)>
<!ATTLIST DatafileAttributes
 ID CDATA #REQUIRED>
<!ELEMENT Size (#PCDATA)>
<!ATTLIST Size
        UNIT (KB|MB|GB) 'MB'>
<!ELEMENT Reuse (#PCDATA)>
<!ELEMENT AutoExtend (#PCDATA)>
<!ELEMENT Increment (#PCDATA)>
<!ATTLIST Increment
        UNIT (KB|MB|GB) 'KB'>
<!ELEMENT Maxsize (#PCDATA)>
<!ATTLIST Maxsize
        UNIT (KB|MB|GB) 'MB'>
コンポーネント・リポジトリ構成ファイル(<component>.xml)には、前提条件と、スキーマのロードまたは削除の実行に必要なスクリプトまたはアクションのリストが含まれています。このファイルは、コンポーネント所有者が提供および管理します。この構成ファイルは、コンポーネント・リスト構成ファイル(ComponentInfo.xml)から参照されます。
各<component>.xmlファイルは、RCU_HOME/rcu/integrationcomponent/component.xmlファイル(UNIX)またはRCU_HOME\rcu\integrationcomponent\component.xmlファイル(Windows)にあります。
コンポーネント所有者は、事前定義されている一連のRCUパラメータを使用できます。これらのパラメータはユーザー入力に基づき、RCUにより実行時に置換されます。事前定義されているパラメータのリストを次に示します。
表3-1 事前定義されているRCUパラメータ
| RCUパラメータ | 説明 | 
|---|---|
| 
 | Oracleホーム・ディレクトリの場所。 | 
| 
 | スクリプトが配置される場所。 | 
| 
 | RCUでユーザーによって入力されるデータベース・スキーマ名(所有者)。 | 
| 
 | RCUでユーザーによって入力されるデータベース・スキーマ・パスワード。 | 
| 
 | 
 | 
| 
 | 追加のスキーマ・ユーザーのパスワード。 | 
| 
 | ユーザーによってコンポーネントに割り当てられるデフォルト表領域。 | 
| 
 | ユーザーによってコンポーネントに割り当てられる一時表領域。 | 
| 
 | ユーザーによってコンポーネントに割り当てられるその他の表領域。その他の表領域は最大で3つサポートされます。 | 
| 
 | 設定が行われなかった場合の、データベース内のデフォルトの永続表領域( | 
| 
 | 設定が行われなかった場合の、データベース内のデフォルトの一時表領域(たとえば、Oracle付属のデータベース内の | 
| 
 | 表領域やデータファイルが作成されるデフォルトの場所。 | 
| 
 | JDBC接続文字列。 | 
| 
 | スキーマおよび表領域の名前に使用されるユーザー指定の接頭辞。 | 
| 
 | JavaActionに渡される接続済の | 
| 
 | 「データベース接続の詳細」画面で提供されるデータベース管理ユーザー。 | 
| 
 | 「データベース接続の詳細」画面で提供されるデータベース管理ユーザーのパスワード。 | 
| 
 | 「データベース接続の詳細」画面で提供されるデータベース管理ユーザーのロール。 | 
| 
 | 「データベース接続の詳細」画面で提供されるデータベース・ホスト名。 | 
| 
 | データベース・サービス名。 | 
| 
 | 「データベース接続の詳細」画面で提供されるデータベース・ポート番号。 | 
| 
 | RCUのインストール先のディレクトリ。 | 
| 
 | SQL*Plusが配置される | 
| 
 | RCUログ・ファイルが作成されるディレクトリの場所。 | 
| 
 | データベース名(SQLServerデータベースの場合)。 | 
MDSのコンポーネント・レジストリ構成ファイルのサンプル(mds.xml)を次に示します。このファイルには、一連の前提条件およびアクションが一覧表示されています。
<?xml version="1.0" encoding="UTF-8" ?>
<!-- DOCTYPE RepositoryConfig SYSTEM "file:////home/mmehta/development/XML/latest/RepositoryConfig.dtd" -->
<!DOCTYPE RepositoryConfig SYSTEM "RepositoryConfig.dtd">
<RepositoryConfig COMP_ID="MDS">
   <PrerequisiteDescriptor>
         <DBPrerequisite PREREQ_TYPE="TablespaceFreeMB" DATA_TYPE="NUMBER" COMPARE_OPERATOR="GT">
            <ValidIf DBTYPE="ORACLE" />
            <PrereqIdentifier>%DEFAULT_TABLESPACE%</PrereqIdentifier>
            <PrereqValue>50</PrereqValue>
         </DBPrerequisite>
         <DBPrerequisite PREREQ_TYPE="TablespaceFreeMB" DATA_TYPE="NUMBER" COMPARE_OPERATOR="GT">
            <ValidIf DBTYPE="ORACLE" />
            <PrereqIdentifier>%TEMPORARY_TABLESPACE%</PrereqIdentifier>
            <PrereqValue>20</PrereqValue>
         </DBPrerequisite>
   </PrerequisiteDescriptor>
   <PrerequisiteDescriptor TYPE="DROP">
       <DBPrerequisite PREREQ_TYPE="CustomSQL" DATA_TYPE="NUMBER" COMPARE_OPERATOR="EQ">
           <ValidIf DBTYPE="ORACLE" />
               <PrereqIdentifier>select count(*) from v$session where
                  username='%SCHEMA_USER%'</PrereqIdentifier>
           <PrereqValue>0</PrereqValue>
           <PrereqErrorMsg>The schema owner '%SCHEMA_USER%' is connected to the
                database. Please disconnect and try again.</PrereqErrorMsg>
       </DBPrerequisite>
   </PrerequisiteDescriptor>
   <ExecutionDescriptor>
     <Action TYPE="Java">
         <Command TYPE="METHOD">oracle.ias.version.SchemaVersionUtil:utilCreateRegistryEntry</Command>
         <Parameters>
            <Parameter TYPE="Connection"></Parameter>
            <Parameter TYPE="String">MDS</Parameter>
            <Parameter TYPE="String">Metadata Services</Parameter>
            <Parameter TYPE="String">%PREFIX_NAME%</Parameter>
            <Parameter TYPE="String">MDS</Parameter>
            <Parameter TYPE="String">MDS</Parameter>
            <Parameter TYPE="String">%SCHEMA_USER%</Parameter>
            <Parameter TYPE="String">11.1.1.1.0</Parameter>
            <Parameter TYPE="String">LOADING</Parameter>
         </Parameters>
      </Action>
      <Action TYPE="JDBCSqlScript" PERCENT_PROGRESS="20">
         <ValidIf DBTYPE="ORACLE" />
         <Command TYPE="SCRIPT">%SCRIPT_HOME%/mds/sql/mds_user.sql</Command>
         <Parameters>
            <Parameter TYPE="CmdLine">%SCHEMA_USER%</Parameter>
            <Parameter TYPE="CmdLine">%SCHEMA_PASSWORD%</Parameter>
            <Parameter TYPE="CmdLine">%DEFAULT_TABLESPACE%</Parameter>
            <Parameter TYPE="CmdLine">%TEMPORARY_TABLESPACE%</Parameter>
         </Parameters>
      </Action>
      <Action TYPE="JDBCSqlScript" PERCENT_PROGRESS="20">
         <ValidIf DBTYPE="SQLSERVER" />
         <Command TYPE="SCRIPT">%SCRIPT_HOME%/mds/MSSQL/cremduser-rcu.sql</Command>
         <Parameters>
            <Parameter TYPE="CmdLine">%DATABASE_NAME%</Parameter>
            <Parameter TYPE="CmdLine">%SCHEMA_USER%</Parameter>
            <Parameter TYPE="CmdLine">%SCHEMA_PASSWORD%</Parameter>
         </Parameters>
      </Action>
      <Action TYPE="JDBCSqlScript" PERCENT_PROGRESS="20">
 <ValidIf DBTYPE="SQLSERVER" />
         <Command TYPE="SCRIPT">%SCRIPT_HOME%/mds/MSSQL/cremduser-rcu.sql</Command>
         <Parameters>
            <Parameter TYPE="CmdLine">%DATABASE_NAME%</Parameter>
            <Parameter TYPE="CmdLine">%SCHEMA_USER%</Parameter>
            <Parameter TYPE="CmdLine">%SCHEMA_PASSWORD%</Parameter>
         </Parameters>
      </Action>
      <Action TYPE="JDBCSqlScript" PERCENT_PROGRESS="20">
         <ValidIf DBTYPE="ORACLE" />
         <Command TYPE="SCRIPT">%SCRIPT_HOME%/mds/sql/cremds-rcu.sql</Command>
         <Parameters>
            <Parameter TYPE="CmdLine">%SCHEMA_USER%</Parameter>
         </Parameters>
      </Action>
      <Action TYPE="JDBCSqlScript" PERCENT_PROGRESS="20" CONNECT_AS_OWNER="TRUE">
         <ValidIf DBTYPE="SQLSERVER" />
         <Command TYPE="SCRIPT">%SCRIPT_HOME%/mds/MSSQL/cremds-rcu.sql</Command>
         <Parameters>
            <Parameter TYPE="CmdLine">%DATABASE_NAME%</Parameter>
            <Parameter TYPE="CmdLine">%MDS_VARCHAR%</Parameter>
         </Parameters>
      </Action>
      <Action TYPE="Java">
         <Command TYPE="METHOD">oracle.ias.version.SchemaVersionUtil:utilSetComponentValid</Command>
         <Parameters>
            <Parameter TYPE="String">MDS</Parameter>
         </Parameters>
      </Action>
   </ExecutionDescriptor>
   <DeleteDescriptor>
      <Action TYPE="JDBC" PERCENT_PROGRESS="20">
         <ValidIf DBTYPE="ORACLE" />
         <Command TYPE="INLINE">DROP USER %SCHEMA_USER% CASCADE</Command>
      </Action>
      <Action TYPE="JDBCSqlScript" PERCENT_PROGRESS="20">
         <ValidIf DBTYPE="SQLSERVER" />
         <Command TYPE="SCRIPT">%SCRIPT_HOME%/mds/MSSQL/dropmduser-rcu.sql</Command>
         <Parameters>
            <Parameter TYPE="CmdLine">%DATABASE_NAME%</Parameter>
            <Parameter TYPE="CmdLine">%SCHEMA_USER%</Parameter>
         </Parameters>
      </Action>
      <Action TYPE="Java">
         <Command TYPE="METHOD">oracle.ias.version.SchemaVersionUtil:utilDropRegistryEntry</Command>
         <Parameters>
            <Parameter TYPE="Connection"></Parameter>
            <Parameter TYPE="String">MDS</Parameter>
            <Parameter TYPE="String">%PREFIX_NAME%</Parameter>
            <Parameter TYPE="String">MDS</Parameter>
         </Parameters>
      </Action>
   </DeleteDescriptor>
</RepositoryConfig>
コンポーネント・リスト構成ファイル(ComponentInfo.xml)には、すべてのコンポーネント、対応する構成ファイルおよびデフォルトのユーザーと表領域のマッピングが一覧表示されています。このファイルには、すべてのコンポーネントに対してグローバルに実行される、高レベルな前提条件のチェックおよび高レベルなアクション(schema_version_registry表の作成など)も一覧表示されます。また、グローバルに無視できるエラーまたは致命的なエラーのリストも指定できます。
このファイルは、RCU_HOME/rcu/configディレクトリ(UNIX)またはRCU_HOME\rcu\configディレクトリ(Windows)にあります。
サンプルのComponentInfo.xmlファイルを次に示します。
<?xml version="1.0" encoding="UTF-8" ?>
<!-- DOCTYPE ComponentInfo SYSTEM "dtds/ComponentInfo.dtd" -->
<!DOCTYPE ComponentInfo SYSTEM "ComponentInfo.dtd" [
<!ENTITY portlet SYSTEM "../integration/portlet/portlet_ComponentInfo.xml">
<!ENTITY mds SYSTEM "../integration/mds/mds_ComponentInfo.xml">
<!ENTITY oid SYSTEM "../integration/oid/oid_ComponentInfo.xml">
<!ENTITY soainfra SYSTEM "../integration/soainfra/soainfra_ComponentInfo.xml">
<!ENTITY bam SYSTEM "../integration/bam/bam_ComponentInfo.xml">
<!ENTITY webcenter SYSTEM "../integration/webcenter/webcenter_ComponentInfo.xml">
<!ENTITY jive SYSTEM "../integration/jive/jive_ComponentInfo.xml">
<!ENTITY wiki SYSTEM "../integration/wiki/wiki_ComponentInfo.xml">
<!ENTITY iau SYSTEM "../integration/iau/iau_ComponentInfo.xml">
<!ENTITY discoverer SYSTEM "../integration/dc/discoverer_ComponentInfo.xml">
<!ENTITY sdpm SYSTEM "../integration/sdpm/sdpm_ComponentInfo.xml">
<!ENTITY portal SYSTEM "../integration/portal/portal_ComponentInfo.xml">
<!ENTITY contentserver SYSTEM "../integration/contentserver/contentserver_ComponentInfo.xml">
<!ENTITY oif SYSTEM "../integration/oif/oif_ComponentInfo.xml">
<!ENTITY ess SYSTEM "../integration/ess/ess_ComponentInfo.xml">
<!ENTITY commspresence SYSTEM "../integration/commspresence/commspresence_ComponentInfo.xml">
<!ENTITY commssds SYSTEM "../integration/commssds/commssds_ComponentInfo.xml">
<!ENTITY commsls SYSTEM "../integration/commsls/commsls_ComponentInfo.xml">
]>
<ComponentInfo VERSION="11.0.0.0" TYPE="AS_REPOSITORY" RESOURCE_BUNDLE_PACKAGE="oracle.sysman.rcu.as.ASBundle">
  <Display NLS_ID="ASREP_ID">Oracle AS Repository Components</Display>
  <PrefixSettings USE_SCHEMA_PREFIX="TRUE" USE_TABLESPACE_PREFIX="TRUE">
     <DetectQuery>
        Select distinct mrc_name from schema_version_registry
     </DetectQuery>
  </PrefixSettings>
  <!-- AS Common GROUP START -->
<Component ID="AS_COMMON" IS_GROUPING_COMPONENT="TRUE">
      <Display NLS_ID="AS_COMMON_ID">AS Common Schemas</Display>
    </Component>
&mds;
&iau;
&ess;
<!-- AS Common GROUP END -->
<!-- OID GROUP START -->
<Component ID="IDM" IS_GROUPING_COMPONENT="TRUE">
        <ValidIf DBTYPE="ORACLE" />
      <Display NLS_ID="IDM_ID">Identity Management</Display>
    </Component>
&oid;
&oif;
<!-- OID GROUP END -->
<!-- OWLCS START -->
   <Component ID="OWLCS" IS_GROUPING_COMPONENT="TRUE">
       <Display NLS_ID="OWLCS_ID">WebLogic Communication Services</Display>
   </Component>
&commspresence;
&commssds;
&commsls;
<!-- OWLCS END -->
<!-- SOA INFRA GROUP START -->
        <Component ID="SOA" IS_GROUPING_COMPONENT="TRUE">
      <Display NLS_ID="SOA_ID">SOA Infrastructure</Display>
    </Component>
&soainfra;
&bam;
&sdpm;
<!-- SOA INFRA GROUP END -->
<!-- WEBCENTER_SUITE START -->
        <Component ID="WEBCENTER_SUITE" IS_GROUPING_COMPONENT="TRUE">
      <Display NLS_ID="WEBCENTER_SUITE_ID">Webcenter Suite</Display>
    </Component>
&webcenter;
&portlet;
&contentserver;
&jive;
&wiki;
<!-- WEBCENTER_SUITE END -->
<!-- PORTAL_BI START -->
        <Component ID="PORTAL_BI" IS_GROUPING_COMPONENT="TRUE">
        <ValidIf DBTYPE="ORACLE" />
      <Display NLS_ID="PORTAL_BI_ID">Portal and BI</Display>
    </Component>
&portal;
&discoverer;
<!-- PORTAL_BI END -->
 <PrerequisiteDescriptor>
      <DBPrerequisiteSet OPERATOR="OR">
           <ValidIf DBTYPE="ORACLE" />
         <DBPrerequisite PREREQ_TYPE="InitParameter" DATA_TYPE="NUMBER" COMPARE_OPERATOR="GE">
            <PrereqIdentifier>SHARED_POOL_SIZE</PrereqIdentifier>
            <PrereqValue UNIT="KB">147456</PrereqValue>
         </DBPrerequisite>
         <DBPrerequisite PREREQ_TYPE="InitParameter" DATA_TYPE="NUMBER" COMPARE_OPERATOR="GE">
            <PrereqIdentifier>SGA_MAX_SIZE</PrereqIdentifier>
            <PrereqValue UNIT="KB">147456</PrereqValue>
        </DBPrerequisite>
      </DBPrerequisiteSet>
          <DBPrerequisite PREREQ_TYPE="CustomSQL" DATA_TYPE="STRING" COMPARE_OPERATOR="EQ" SOFT="TRUE">
                  <PrereqIdentifier>select value from nls_database_parameters where parameter = 'NLS_CHARACTERSET'</PrereqIdentifier>
                  <PrereqValue>AL32UTF8</PrereqValue>
                  <PrereqErrorMsg>
                                The database you are connecting is with non-AL32UTF8 character set. Oracle strongly recommends using AL32UTF8 as the database character set.
                  </PrereqErrorMsg>
                </DBPrerequisite>
     <DBPrerequisite PREREQ_TYPE="InitParameter" DATA_TYPE="NUMBER" COMPARE_OPERATOR="GE">
                  <ValidIf DBTYPE="ORACLE" />
            <PrereqIdentifier>DB_BLOCK_SIZE</PrereqIdentifier>
            <PrereqValue UNIT="KB">8</PrereqValue>
    </DBPrerequisite>
        <!--DBPrerequisite PREREQ_TYPE="CustomSQL" DATA_TYPE="STRING" COMPARE_OPERATOR="NE">
        <ValidIf  DBTYPE="ORACLE" >
        <CustomQueryFilter DATA_TYPE="NUMBER" COMPARE_OPERATOR="EQ" VALUE="0">
            select 1 from dual where exists (select column_name from dba_tab_columns where table_name(+) like 'V_$INSTANCE' and column_name(+) = 'EDITION') union select 0 from dual where not exists (select column_name from dba_tab_columns where table_name(+) like 'V_$INSTANCE' and column_name(+) = 'EDITION')
          </CustomQueryFilter>
        </ValidIf>
        <PrereqIdentifier>version</PrereqIdentifier>
        <PrereqValue>11.1.0.6.0</PrereqValue>
                <PrereqErrorMsg>
                                The database you are connecting is 11.1.0.6.0 version. 11.1.0.6.0 is not a supported version. The database version should be 11.1.0.7.0 or greater.
                  </PrereqErrorMsg>
        </DBPrerequisite-->
        <DBPrerequisite PREREQ_TYPE="DBVersion" DATA_TYPE="STRING" COMPARE_OPERATOR="GE">
        <ValidIf  DBTYPE="ORACLE" >
        <CustomQueryFilter DATA_TYPE="NUMBER" COMPARE_OPERATOR="EQ" VALUE="0">
            select 1 from dual where exists (select column_name from dba_tab_columns where table_name(+) like 'V_$INSTANCE' and column_name(+) = 'EDITION') union select 0 from dual where not exists (select column_name from dba_tab_columns where table_name(+) like 'V_$INSTANCE' and column_name(+) = 'EDITION')
          </CustomQueryFilter>
        </ValidIf>
        <PrereqIdentifier>version</PrereqIdentifier>
        <PrereqValue>10.2.0.4.0</PrereqValue>
                <PrereqErrorMsg>
                                The database you are connecting is not a supported version. The database version should be either 10.2.0.4.0 or 11.1.0.7.0 or greater.
                  </PrereqErrorMsg>
        </DBPrerequisite>
 <DBPrerequisite PREREQ_TYPE="CustomSQL" DATA_TYPE="STRING" COMPARE_OPERATOR="EQ">
                <ValidIf DBTYPE="ORACLE" />
                  <PrereqIdentifier>select GRANTED_ROLE from DBA_ROLE_PRIVS where((GRANTED_ROLE='DBA' and GRANTEE=(select user from dual) and lower(SYS_CONTEXT ('USERENV', 'SESSION_USER'))='sys') OR(GRANTED_ROLE='DBA' and GRANTEE=(select user from dual)))</PrereqIdentifier>
                  <PrereqValue>DBA</PrereqValue>
                  <PrereqErrorMsg>
                        User should have sysdba or dba privilages.
                  </PrereqErrorMsg>
                </DBPrerequisite>
   CU_HOME/rcu/config (on UNIX)
   <ExecutionDescriptor TYPE="PreLoad">
         <Action TYPE="Java" PERCENT_PROGRESS="60">
         <ValidIf DBTYPE="ORACLE">
             <CustomQueryFilter DATA_TYPE="NUMBER" COMPARE_OPERATOR="EQ" VALUE="1">
               select count(*) from  dba_views where VIEW_NAME = 'APP_REGISTRY' and not exists (select view_name from  dba_views where VIEW_NAME= 'SCHEMA_VERSION_REGISTRY')
             </CustomQueryFilter>
         </ValidIf>
         <Command TYPE="METHOD">oracle.ias.version.SchemaVersionUtil:utilCreateRegistryAndCopyData</Command>
         <Parameters>
            <Parameter TYPE="Connection"></Parameter>
         </Parameters>
     </Action>
         <Action TYPE="Java" PERCENT_PROGRESS="60">
         <ValidIf DBTYPE="ORACLE">
             <CustomQueryFilter DATA_TYPE="NUMBER" COMPARE_OPERATOR="EQ" VALUE="0">
             select count(*) from  dba_views where VIEW_NAME= 'SCHEMA_VERSION_REGISTRY'
             </CustomQueryFilter>
         </ValidIf>
         <Command TYPE="METHOD">oracle.ias.version.SchemaVersionUtil:utilCreateRegistryTable</Command>
         <Parameters>
            <Parameter TYPE="Connection"></Parameter>
         </Parameters>
     </Action>
         <Action TYPE="Java" PERCENT_PROGRESS="60">
        <ValidIf DBTYPE="SQLSERVER">
            <CustomQueryFilter DATA_TYPE="NUMBER" COMPARE_OPERATOR="EQ" VALUE="0">
            select count(*) from  INFORMATION_SCHEMA.TABLES where TABLE_NAME='SCHEMA_VERSION_REGISTRY'
            </CustomQueryFilter>
        </ValidIf>
        <Command TYPE="METHOD">oracle.ias.version.SchemaVersionUtil:utilCreateRegistryTable</Command>
        <Parameters>
           <Parameter TYPE="Connection"></Parameter>
        </Parameters>
    </Action>
   </ExecutionDescriptor>
 <FatalErrors>
     <Error Type="ORA-17439">Invalid SQL type</Error>
         <Error Type="ORA-01435">user does not exist</Error>
         <Error Type="ORA-01435">user does not exist</Error>
     <Error Type="ORA-00955">name is already used by an existing object</Error>
         <Error Type="ORA-01031">name is already used by an existing object</Error>
   </FatalErrors>
   <IgnorableErrors>
     <Error Type="ORA-02289">sequence does not exist</Error>
     <Error Type="ORA-00904">invalid identifier</Error>
     <Error Type="ORA-01920">user name conflicts with another user or role name</Error>
     <Error Type="ORA-01418">specified index does not exist</Error>
     <Error Type="ORA-00942">table or view does not exist</Error>
     <Error Type="ORA-06512">Not found</Error>
     <Error Type="ORA-01403">no data found</Error>
         <Error Type="ORA-04043">does not exist</Error>
         <Error Type="ORA-04080">Trigger does not exist</Error>
         <Error Type="ORA-00959">Tablespace  does not exist</Error>
         <Error Type="ORA-24035">AQ agent not subscriber</Error>
         <Error Type="ORA-24185">Transformation not found</Error>
         <Error Type="ORA-24042">Does not exist</Error>
         <Error Type="ORA-24088">Does not exist</Error>
   </IgnorableErrors>
</ComponentInfo>
ComponentInfo.xmlファイルで特定の<DBPrerequisiteSet>または<DBPrerequisite> は必須でない場合は、SOFT属性をTRUEに設定して、ソフト前提条件のオプションを使用できます。ソフト前提条件が満たされない場合、ポップアップ・ウィンドウが開き、エラー・メッセージまたは警告メッセージが表示されます。ここでユーザーはメッセージを無視するか、操作を中止するかを選択することができます。<DBPrerequisiteSet>レベル、<DBPrerequisite>レベルまたはその両方で、ソフト前提条件を定義できます。両方定義されている場合は、<DBPrerequisiteSet>が優先されます。
<DBPrerequisite>レベルでソフト前提条件を設定する例を次に示します。
<DBPrerequisiteSet>
...
   <DBPrerequisite PREREQ_TYPE="CustomSQL" DATA_TYPE="STRING" COMPARE_OPERATOR="EQ" SOFT="TRUE">
      <PrereqIdentifier>select value from nls_database_parameters where parameter = 'NLS_CHARACTERSET'</PrereqIdentifier>
      <PrereqValue>AL32UTF8</PrereqValue>
      <PrereqErrorMsg>
      The database you are connecting is with non-AL32UTF8 character set.
      Oracle strongly recommends using AL32UTF8 as the database character
      set.
      </PrereqErrorMsg>
   </DBPrerequisite>
...
<DBPrerequisiteSet>
デフォルト表領域構成ファイル(Storage.xml)には、デフォルトで表領域が作成されるコンポーネントが一覧表示されます。このファイルは、RCU_HOME/rcu/configディレクトリ(UNIX)またはRCU_HOME\rcu\configディレクトリ(Windows)にあります。
各コンポーネントの実際の表領域構成ファイルは、RCU_HOME/rcu/integrationcomponent/component_Storage.xmlファイル(UNIX)またはRCU_HOME\rcu\integrationcomponent\component_Storage.xmlファイル(Windows)にあります。各コンポーネントには、それぞれの表領域構成ファイルがあります。
サンプルのsoainfra_Storage.xmlファイルを次に示します。
<?xml version="1.0" encoding="UTF-8"?>
 <!-- SOAINFRA -->
<TablespaceAttributes NAME="SOAINFRA" >
   <DatafilesList>
      <DatafileAttributes ID="%DATAFILE_LOCATION%/soainfra.dbf">
         <Size UNIT="MB">200</Size>
         <Reuse>True</Reuse>
         <AutoExtend>True</AutoExtend>
         <Increment UNIT="MB">50</Increment>
         <Maxsize UNIT="GB">2</Maxsize>
      </DatafileAttributes>
   </DatafilesList>
</TablespaceAttributes>
<!-- End 0f SOAINFRA -->
RCUスクリプトを作成する際の一般的ないくつかのガイドラインを次に示します。
スキーマ・ユーザー名およびパスワードをハードコードしないでください。これらは置換可能な変数としてコード化する必要があります。
スキーマ・ユーザーを作成する必要がある場合は、RCUによって渡されたパラメータを使用して最初に作成します。
表領域および一時表領域の参照をハードコードしないでください。これらは変数としてコード化する必要があります。
CONNECTを使用しないでください。かわりに、スキーマ・ユーザーの作成後にALTER SESSION SET CURRENT_SCHEMA = <SCHEMA_OWNER>を使用します。
無視できるORAエラーおよび致命的なORAエラーのセット(ある場合)は、RCU XMLコンポーネント構成ファイルに一覧表示します。
データベース・インスタンスをバウンスする停止や起動は回避します。
スキーマのロードの前後にSCHEMA_VERSION_REGISTRYを更新してください。これは、第3.1.5項「JavaActionを使用するJavaコード」に示されているJavaActionを使用して、または、SCHEMA_VERSION PL/SQLパッケージを使用するコンポーネント・スクリプト内で実行できます。
行コメント(/* -- コメント */)を含むブロック・コメントはサポートされていません。
RCU JDBCエンジンに準拠したSQL*Plusスクリプトを作成する際のいくつかのガイドラインを次に示します。
すべての文は、適切な終了文字で終了する必要があります。CREATE PACKAGE、TYPEは、「;」と次の行の「/」で終了する必要があります。他のすべての文(Create TABLE、VIEWなど)は、「;」または「/」で終了する必要があります(いずれか1つのみで、両方は指定しません)。
EXECUTEコールは、BEGIN/ENDブロックに置き換える必要があります。
DEFINE文は1行で指定し、同じ行にコメントは指定しません。また、最後に「;」は付けません。
SET、SHOW、SPOOL、WHENEVER、BREAK、EXITの各文は無視されます。
HOSTコマンドはまだサポートされていません。
VARIABLEおよびCOL(UMN)はまだサポートされていません。
次の方法を使用して、PL/SQLブロック内で別のSQLスクリプトを動的にコールすることはサポートされていません。
VARIABLE initfile VARCHAR2(32)
COLUMN :initfile NEW_VALUE init_file NOPRINT;
BEGIN
  IF (some condition) THEN
     :initfile := 'initcdc.sql';
  ELSE
     :initfile := 'nothing.sql';
  END IF;
END;
/
SELECT :initfile FROM DUAL;
@@&init_file
これに対処するには、個別のアクションとValidIfタグで条件を指定します。
RCU用の純粋なJDBCスクリプトを作成する際のいくつかのガイドラインを次に示します。
SQL*Plusディレクティブ(SET、WHENEVERなど)を指定してはいけません。
すべてのDEFINESは、PL/SQL変数宣言に変更します。
すべてのSQL文はEXECUTE IMMEDIATEでラップします。
PL/SQLスタイルのコメントは使用できますが、SQL*Plusスタイル(REM)のコメントは使用できません。
CREATE文の前のDROP文は動作しません。DROPは、オブジェクトの有無を確認した後でのみ実行してください。すべてのDROP文を異なるPL/SQLスクリプトにまとめておいて、RCUがCREATEスクリプトをコールする前に、必要に応じてこのスクリプトをコールできるようにすることが理想です。
スクリプト・ファイルの内容は、Connection.prepareCall()内でコールできる有効なPL/SQLブロックである必要があります。
RCU用のSQL*Plusスクリプトを作成する際のいくつかのガイドラインを次に示します。
exit文またはWHENEVER ERROR EXITディレクティブを指定しないでください。これを指定すると、RCU SQL*Plusセッションが予期せず終了し、後で実行される他のコンポーネント・スクリプトが影響を受けることがあります。
スクリプトにはスプール・コマンドは指定しません。RCUは、コンポーネントごとにスプール・ログを生成します。
RCU用のSQL Serverベース・スクリプトを作成する際のいくつかのガイドラインを次に示します。
サポートの内容は、sqlcmdによって実行できるt-sqlスクリプトでサポートされているもののサブセットです。
データベース固有のすべてのアクションおよび前提条件に、ValidIfタグを追加します。次に例を示します。
<DBPrerequisite PREREQ_TYPE="TablespaceFreeMB" DATA_TYPE="NUMBER" COMPARE_OPERATOR="GT"> <ValidIf DBTYPE="ORACLE" /> <PrereqIdentifier>%DEFAULT_TABLESPACE%</PrereqIdentifier> <PrereqValue>50</PrereqValue> </DBPrerequisite>
RCUは、次のような再帰的な変数定義をサポートします。
setvar var1 value1 setvar var2 $(var1)
文のブロックを終了するには、go文が必要です。go文より前のすべての文は、単一の文としてJDBCで実行されます。
JDBC接続は、自動コミット・モードがオンのときに作成されます。
現時点では、BEGIN TRANSACTION文およびCOMMIT TRANSACTION文はサポートされていません。
XMLファイルを介してスクリプトに渡される変数は、次のように渡します。
Script.sql –v v1=value1 v2=value2
これはXMLファイルを使用してコールされるスクリプトに限定されます。スクリプトが別のスクリプトをコールする場合は、他の変数名を使用できます。