Oracle® Fusion Middleware Oracle Directory Integration Platform管理者ガイド 11g リリース1(11.1.1) B65032-03 |
|
前 |
次 |
Oracle Enterprise Managerユーザー・インタフェースまたはWLSTコマンドライン・ユーティリティを使用して、Oracle Databaseインポートおよびエクスポート・プロファイルを構成できます。
ユーザー・インタフェースを使用したプロファイルの作成および管理の詳細は、第7.1項「Fusion Middleware Controlを使用した同期プロファイルの管理」を参照してください。
WLST manageSyncProfiles
コマンド・ユーティリティを使用したプロファイルの作成および管理は、第7.2項「manageSyncProfilesを使用した同期プロファイルの管理」を参照してください。
この章では、Oracle Database表に格納されているデータをOracleバックエンド・ディレクトリと同期するためにコマンドラインから変更できる、DBReader構成ファイルについて説明します。同期は、増分(たとえば、データベース表の行単位)またはすべてのデータベース表を一括で実行できます。
この章では、Oracleバックエンド・ディレクトリをOracle Databaseと同期するエクスポート・プロファイルを作成する場合に、コマンドラインから変更できるdbexport構成ファイルについても説明します。
注意: データベースからOracleバックエンド・ディレクトリへの複数値属性の同期はサポートされません。 Oracle Directory Integration Platformアプリケーションでは、データベースの削除操作はサポートされていません。ただし、行がデータベースで削除されたときに必ずOracleバックエンド・ディレクトリのエントリを直接削除する外部トリガーを作成できます。そのようなトリガーの作成方法についての情報は、このドキュメントには含まれていません。 |
この章は、次の項目を含みます。
注意: この章を読む前に、Oracle Directory Integration Platformの概要についての次の章をよく理解しておく必要があります。 |
Oracle DatabaseのデータをOracleバックエンド・ディレクトリと同期するインポート・プロファイルを作成するには、$ORACLE_HOME/ldap/odi/conf
ディレクトリにあるサンプル・ファイルDBReader.cfg.master
を開き、仕様に合せて編集します。
Oracleバックエンド・ディレクトリのデータをOracle Databaseと同期するエクスポート・プロファイルを作成するには、$ORACLE_HOME/ldap/odi/conf
ディレクトリにあるサンプル・ファイルdbexport.cfg.master
を開き、仕様に合せて編集します。
追加構成情報ファイルの形式について
このファイルの構成では、正しい形式に従うことが非常に重要です。TAG名を使用して、各種セクションに分割します。各TAGセクションには、パラメータのリストとそれぞれの値を示します。通常のレイアウトは次のとおりです。
[TAG] PARAMETER1: value PARAMETER2: value [TAG] PARAMETER1: value PARAMETER2: value\ VALUE continuation\ value continuation\ end of value continuation [TAG] PARAMETER1: value PARAMETER2: value\ end of value continuation
DBReader.cfg.master構成ファイルについて
Oracle DatabaseからOracleバックエンド・ディレクトリへの同期の間、データベースからのデータの取得はDBReader.cfg.master
ファイルによって管理されます。Oracle Directory Integration Platformに次の情報が提供されます。
実行するSELECT
文
増分同期に使用される属性またはデータベース列のいずれか。通常、タイムスタンプを含む属性、または次のSQL文で増分データの取得に使用する必要がある変更順序番号のいずれかです。
DBReader.cfg.master
ファイルは次のようになります。
[DBQUERY] SELECT: SELECT\
EMPNO EmpNum,\ ENAME,\ REPLACE(EMAIL),'@ACME.COM','') UID,\ EMAIL,\ TELEPHONE,\ TO_CHAR(LAST_UPDATE_DATE,'YYYYMMDDHH24MISS') Modified_Date\
FROM\
EMPLOYEE\
WHERE\
LAST_UPDATE_DATE>TO_DATE (:Modified_Date,'YYYYMMDDHH24MISS')\
ORDER BY\ LAST_UPDATE_DATE [SYNC-PARAMS] CHANGEKEYATTRS: Modified_Date
SELECT
文全体がSELECT
パラメータの値として、タグDBQUERY
で表されているセクションに入力されています。値が冗長なため、SELECT
文の終わりまですべての行で値継続文字が最後の文字として入力されています。
SELECT
文に存在するWHERE
条件にも注意してください。WHERE条件はModified_Date
に基づいて変更を取得します。変更されたユーザー・レコードをOracleバックエンド・ディレクトリにコピーするには、WHERE句を更新してレコードを取得します。この例では、Modified_Date
が増分同期のキーです。これは日付であるため、文字列書式で指定する必要があります。
CHANGEKEYATTRS
パラメータ値は、増分同期の実行中に使用される列の名前です。これらの列の値は、常にプロファイルのorclodipcondirlastappliedchgnum
属性に格納されます。SELECT
文が実行されるたびに、それに応じてこの属性の現在の値がSQL文に入力されます。これによって、データは常に増分取得されます。
CHANGEKEYATTRS
に複数の列名(たとえばcolumn1:column2
)がある場合、プロファイルのorclodipcondirlastappliedchgnum
属性の値はvalue1~value2
(value1
はcolumn1
、value2
はcolumn2
に対応)などとして格納されます。
列名は、属性値ペアとしてOracle Directory Integration Platformに取得された後、設定されたマッピング・ルールに従ってLDAP属性値にマッピングされます。このため、SELECT
文で取得されたすべての列名は、式ではなく単純名である必要があります。たとえば、式REPLACE(EMAIL),'@ACME.COM','')
を使用することはできますが、この式の値は、UID
として取得されます。
プロファイルを作成する場合は、orclodipcondirlastappliedchgnum
属性に値を設定する必要があります。この日付より後のすべての変更(この値より大きいLAST_UPDATE_DATE
を持つ表内の行)が取得されます。たとえば、orclodipcondirlastappliedchgnum
属性を20000101000000
に設定すると、2000年1月1日以降のすべての従業員の変更が取得されます。
ORDER BY
句があるため、戻されるすべてのデータベース行はLAST_UPDATE_DATE
の順になります(つまり、取得され、ディレクトリに適用される変更は時間順になります)。最後の変更が取得され、適用されると、次の処理が行われます。
orclodipcondirlastappliedchgnum
属性値が、取得された最後の行からModified_Date
に設定されます。
プロファイルが更新されます。
Oracle Directory Integration Platformは、プロファイルを再実行する場合、常に、すでに格納された値を使用します。
dbexport.cfg.master構成ファイルについて
dbexport.cfg.master
ファイルでは、Oracle Databaseの構造が記述されます。Oracle Directory Integration Platformに次の情報が提供されます。
プライマリ表。プロファイル内のその他すべての表が接続されるデータベース表。各dbexport.cfg.master
ファイルに1つのプライマリ表が必要です。
主キー。同期する表の主キーを指定します。この構成に含まれるすべての表名に対して、主キーを定義する必要があります。
主キーが複数の列で構成されている場合は、各列の名前をカンマで区切って入力します。たとえば、id,name,dob
とします。
表リレーション。接続属性を指定して、プライマリ表とプロファイルに含まれるその他すべての表の間の関係を定義します。サンプル・ファイルでは、id
が接続属性となります。
必要に応じて、カンマ区切りリストを使用して複数の属性を指定します(たとえば、id,name
)。
dbexport.cfg.master
ファイルは次のようになります。
[INTERFACEDETAILS] Writer: oracle.ldap.odip.gsi.DatabaseWriter CheckAllEntries: null SkipErrorToSyncNextChange: false UpdateSearchCount: 100 SearchDeltaSize: 500 [SYNC-PARAMS] PRIMARY_TABLE: table1 [PRIMARY-KEYS] table1:id table2:id [TABLE-RELATIONS] table1^table2:id
注意:
|
DBReader.map.master構成ファイル
マッピング・ルールの構成の詳細は、「マッピング・ルールとその形式」の手順に従ってください。
dbexport.map.master構成ファイル
「マッピング・ルールとその形式」の説明を確認してください。次に、$ORACLE_HOME/ldap/odi/conf
ディレクトリにあるサンプル・ファイルdbexport.map.master
を開き、仕様に合わせて編集します。
dbexport.map.master
構成ファイルのマッピング・ルールの形式では、宛先オブジェクト・クラスおよび宛先属性のかわりに、宛先表の名前および宛先列の名前を指定します。
たとえば、サンプル・マップ・ルールは次のようになります。
uid:1::inetorgperson:id::table2:
この例では、uid
がソース属性、inetorgperson
がソース・オブジェクト・クラスです。次に、id
が宛先列、table2
が宛先表の名前です。マップ・ファイルには、主キーとして指定されているすべての列を含める必要があり、それが必須の属性であることを指定する必要もあります。このマッピング・ルールの例では、uid
ソース属性の後にある:1
によって、uid
が必須の属性であることが示されています。
ディレクトリ統合プロファイルは、Oracle Enterprise Manager Fusion Middleware Controlユーザー・インタフェースを使用して作成できます。手順は、第7.1項「Fusion Middleware Controlを使用した同期プロファイルの管理」を参照してください。
Oracle Enterprise Manager Fusion Middleware Controlを使用する際には、manageSyncProfiles
コマンドのupdate
操作を使用して、追加構成情報ファイルとマッピング・ファイルをアップロードする必要があります。manageSyncProfiles
コマンドの使用の詳細は、第7.2項「manageSyncProfilesを使用した同期プロファイルの管理」を参照してください。
ディレクトリ統合プロファイルを構成するには、「Oracle Directory Integration Platformでのコネクタの登録」の指示に従います。ただし、次の注意事項があります。
「エージェントの実行コマンド」(orclodipAgentExeCommand
)属性に値を設定しないでください。
「インタフェース・タイプ」(orclodipDataInterfaceType
)属性をDB
に設定します。
この項では、リレーショナル・データベース表とOracleバックエンド・ディレクトリを同期化する方法について説明します。
注意: Directory Integration Platformデータベース・プロファイルでは、削除操作はサポートされていません。ただし、行がデータベースで削除されたときに必ずOracleバックエンド・ディレクトリのエントリを直接削除する独立したトリガーを、DIPの外部に作成できます。そのようなトリガーの作成方法についての情報は、このドキュメントには含まれていません。 |
この項の内容は次のとおりです。
この例では、従業員データを含む次のリレーショナル・データベース表がOracleバックエンド・ディレクトリと同期化されます。
EMPNO | ENAME | LAST_UPDATE_DATE | TELEPHONE | |
---|---|---|---|---|
98357 |
JOHN DOE |
2-JAN-2000 |
JOHN.DOE@ACME.COM |
435-324-3455 |
98360 |
ROGER BECK |
3-JUL-2001 |
ROGER.BECK@ACME.COM |
435-324-3600 |
98365 |
JIMMY WONG |
4-MAR-2001 |
JIMMY.WONG@ACME.COM |
435-324-2390 |
98370 |
GEORGE TWINSLEY |
6-FEB-2002 |
GEORGE.TWINSLEY@ACME.COM |
435-324-9232 |
この例のサンプル・プロファイル(DBReader.properties
)は、サンプルの構成ファイル、マッピング・ファイルとともに、$ORACLE_HOME/ldap/odi/conf
ディレクトリにあります。
この例では、次のように仮定します。
表の名前は、Employee
です。
プロファイル名は、TESTDBIMPORT
です。
データベース・レコードをディレクトリ・エントリと結合するには、従業員番号(EMPNO
)が使用されます。この番号は、『Oracle Identity Managementユーザー・リファレンス』の属性リファレンスに関する章に説明されている「OID一致フィルタ」(orclOdipOIDMatchingFilter
)属性に指定されています。
この表は、データベース内のtestsync
/testsyncpwd
スキーマにあります。データベースはホストmachine.acme.com
に存在し、データベース・リスナー・ポートは1526
、SIDはiasdb
です。データベースURLは、machine.acme.com:1526:iasdb
です。
適切な読取り/書込み権限がこのプロファイル、つまりorclodipagentname=testdbimport,
に明示的に付与されています。
cn=subscriber profile,
cn=changelog subscriber,
cn=oracle internet directory
プロファイルは、構成設定1内に作成されます。
この例では、「追加構成情報ファイルの準備」で説明した追加構成情報ファイルと同じファイルを使用します。
この例のマッピング・ファイルの内容は次のとおりです。
DomainRules NONLDAP:dc=testdbsync,dc=com:uid=%,dc=testdbsync,dc=com AttributeRules ename: : : :cn: :person ename : : : :sn: :person uid : : : :uid: :inetOrgperson: EMail: : : :mail: :inetOrgperson Telephone: : : :telephonenumber: :inetOrgperson empnum: : : :employeenumber: :inetOrgperson
このマッピング・ファイルは次のことを指定しています。
ディレクトリ・エントリはuid=%,dc=testdbsync,dc=com
として作成されます。パーセント記号(%
)は、uid
の実際の値のプレースホルダです。uid
をマッピング・ルールに含め、マッピング後に値を持つようにする必要があります。存在しない場合、識別名の構成は失敗します。
cn
とsn
の両方の属性は、ename
と同じ値である必要があります。
uid
要素の値は、EMail
接頭辞の値(電子メール・アドレス内のアット・マーク(@)文字より前の部分)になります。
empnum
属性は、ディレクトリ・エントリ内のemployeenumber
になります。
telephone
属性は、ディレクトリ・エントリ内のtelephone number
になります。
この例のディレクトリ統合プロファイルには、表9-1に示す属性値が含まれます。これらの値が入ったサンプル統合プロファイルとそれに対応するマッピング・ファイルおよび構成ファイルが$ORACLE_HOME/ldap/odi/confディレクトリにあります。Oracle Enterprise Manager Fusion Middleware Controlを使用するか、「同期プロファイルの作成」の指示に従ってプロファイルを作成できます。
表9-1 TESTDBIMPORT用のディレクトリ統合プロファイル
属性 | 値 |
---|---|
プロファイル名( |
|
同期モード( |
|
プロファイルのステータス( |
|
エージェントの実行コマンド( |
NULL |
拡張構成情報( |
LDAP属性で個々に保持されない構成の詳細を保持します。 |
接続されたディレクトリ・アカウント( |
|
接続されたディレクトリ・アカウントのパスワード( |
|
接続されたディレクトリURL( |
|
インタフェース・タイプ( |
|
マッピング・ファイル( |
マッピング・ルールの格納用属性。 |
OID一致フィルタ( |
これは、一致を検索中、ディレクトリの検索に データベース行が取得されると、Oracle Directory Integration Platformでは、ドメイン・ルールに従って、 |
前回適用された変更番号( |
これは、プロファイルの最初の実行時に、4つすべての行を取得し同期することを意味します。その後は、表内の |
manageSyncProfiles
コマンドのupdate
操作を使用して、追加構成情報ファイルとマッピング・ファイルを次のように更新します。
manageSyncProfiles update -h HOST -p PORT -D WLS_USER -pf PROFILE_NAME -file FILE_NAME
この例では、同期プロセスの手順は、次のとおりです。
「スケジューリングの間隔」(odip.profile.schedinterval
)属性に指定された値が期限切れになるたびに、Oracle Directory Integration Platformは、TESTDBIMPORTプロファイル用に新しいプロファイル・スレッドを起動します。
プロファイル・スレッドは、追加構成情報を読み取ってSQLを準備し、実行します。
データベースから取得された行ごとに、マッピング・ルールがレコードに適用され、LDAP属性が作成されます。
「OID一致フィルタ」(odip.profile.oidfilter
)属性によって、Oracleバックエンド・ディレクトリ内に一致するエントリがあるかどうかをOracle Directory Integration Platformが判断します。一致するエントリがある場合は更新されます。ない場合は新しいエントリが作成されます。ディレクトリ操作の後、「前回適用された変更番号」(odip.profile.lastchgnum
)属性が更新されます。
注意: 「OID一致フィルタ」( |
行は、次の形式でデータベースから取得されます。
EmpNum: 98357 EName: JOHN DOE UID: JOHN.DOE EMAIL: JOHN.DOE@ACME.COM TELEPHONE: 435-324-3455 Modified_Date: 20000102000000
このレコード上でマッピングが行われると、次の形式で出力されます。
dn: uid=john.doe,dc=testdbsync,dc=com uid: JOHN.DOE cn: JOHN DOE sn: JOHN DOE mail: JOHN.DOE@ACME.COM employeenumber: 98357 telephonenumber: 435-324-3455 objectclass: person objectclass: inetorgperson
dc=testdbsync,dc=com
ドメイン下のemployeenumber=98357
フィルタを使用して、ディレクトリ内でサブツリー検索が行われます。検索結果が既存のエントリの場合は、そのエントリが更新されます。それ以外の場合は、新しいエントリが作成されます。「OID一致フィルタ」(odip.profile.oidfilter
)属性がemployeenumber
に設定されているため、取得されるすべてのデータベース・レコードにはその列があります。この場合は、employeenumber
にマップされるEmpNum
です。
マッピング・ファイル内のその他の属性で、SQLによって取得されるデータに含まれないもの(birthday
属性など)は無視されます。
プロファイル・スレッドは、SQLからのすべての変更レコードを処理した後、次の属性の正しい値でディレクトリを更新します。
前回適用された変更番号(odip.profile.lastchgnum
)
最終実行時間(orclOdipLastExecutionTime
)
最終正常実行時間(orclOdipLastSuccessfulExecutionTime
)