ヘッダーをスキップ
Oracle® Fusion Middleware Oracle Data Integrator接続およびナレッジ・モジュール・ガイド
11gリリース1(11.1.1)
B62261-01
  ドキュメント・ライブラリへ
ライブラリ
製品リストへ
製品
目次へ
目次

戻る
戻る
 
次へ
次へ
 

A Oracle Data Integrator Driver for LDAPの参照情報

この付録では、Oracle Data Integrator Driver for LDAPの使用方法を説明します。

この付録の内容は次のとおりです。

A.1 Oracle Data Integrator Driver for LDAPの概要

Oracle Data Integrator Driver for LDAP(LDAPドライバ)とともにOracle Data Integrator使用すると、複雑なLDAPツリーを標準のSQL問合せで操作できます。

LDAPドライバでは次がサポートされます。

A.2 LDAPの処理の概要

LDAPドライバは次のように機能します。

  1. ドライバは、LDAPからリレーショナルへのマッピングを使用して、(接続時に)LDAP構造およびデータをリレーショナル・スキーマにロードします。

  2. ユーザーは、通常のSQL文を介してデータを操作して、リレーショナル・スキーマを使用します。リレーショナル・スキーマ・データで実行されたすべての変更(挿入/更新)は、ドライバによって、ただちにLDAPデータに反映されます。

A.2.1 LDAPからリレーショナルへのマッピング

LDAPからリレーショナルへのマッピングは、複雑ですが自動化されたプロセスで、リレーショナル構造の生成に使用されます。LDAPサーバーでは標準の方法でメタデータ情報が提供されないため、LDAPツリーからデータのイントロスペクションを使用して、このマッピングが実行されます。したがって、自動マッピングは、このプロセスのソースとして使用されるLDAPツリーのコンテンツで実行されます。

この項の内容は次のとおりです。

A.2.1.1 一般原理

LDAPドライバでは、次の方法で、LDAP要素がリレーショナル・スキーマにマップされます。

  • 各LDAPクラスまたはクラスの組合せは、1つの表にマップされます。LDAPツリーの各エントリは、表内の1つのレコードにマップされます。

  • クラス・インスタンスの各属性は、1つの列にマップされます。

  • エントリ間の階層関係は、外部キーを使用してマップされます。階層レベルを表す表は、<tablename>PKと呼ばれる主キーを使用して作成されます。レコードは、<parent_level_tablename>FK columnを介してその親表を参照します。LDAPツリー構造のルートは、一意のレコードのROOTPK列を含む、ROOTと呼ばれる表にマップされます。

  • 1つのエントリに対して複数の値が設定されている属性(たとえば、複数のemail属性が設定されているPersonエントリ)は、<parent_tablename><attribute_name>と呼ばれるサブ表としてマップされます。各サブ表には、親表とリンクするための<parent_tablename>FK columnが含まれます。

図A-1は、PersonインスタンスとリンクされているOrganizationalUnitエントリを含むLDAPツリーを示しています。ここでは、特定のPersonエントリに複数の電子メール・アドレスが設定されています。

図A-1 LDAPツリーの例

図A-1の説明が続きます
「図A-1 LDAPツリーの例」の説明

このLDAPツリーは、次のリレーショナル構造にマップされます。

  • ROOT表は階層のルートを表し、1つのROOTPK列が含まれます。

  • ORGANIZATIONALUNIT表は、そのツリーの様々なorganizationalUnitインスタンスを表します。この表には、ORGANIZATIONALUNITPK主キー列、およびorganizationalUnitインスタンスの属性(cntelephoneNumberなど)が含まれます。ROOTFK外部キー列によってROOT表にリンクされます。

  • PERSON表は、personクラスのインスタンスを表します。この表には、PERSONPK主キー列、ORGANIZATIONALUNIT表にリンクするためのORGANIZATIONALUNITFK、およびPERSONインスタンスの属性(telephoneNumberdescriptioncn)が含まれます。

  • email属性はPERSON_EMAIL表として表示され、EMAIL列、およびemail属性のリストをPERSONレコードにリンクするPERSONFKが含まれます。

図A-2は、生成されるリレーショナル構造を示しています。

図A-2 図A-1のLDAPツリーの例からマップされたリレーショナル構造

図A-2の説明が続きます
「図A-2 図A-1のLDAPツリーの例からマップされたリレーショナル構造」の説明

A.2.1.2 グループ化係数

LDAPディレクトリでは、複数のクラス定義から属性を継承することでクラス・エントリが指定されることがよくあります。リレーショナル・マッピングの手順では、この状態を変換するために、LDAPドライバによってLDAPエントリ内のクラスの組合せがそれぞれ結合され、新しい表が生成されます。

たとえば、Personクラスの一部のエントリは、ManagerまたはBoardMemberクラスのどちらか(もしくは両方)のインスタンスでもある可能性があります。この場合、マッピング手順でPERSON表(Personのインスタンス用)が作成されますが、さらに、LDAPツリーに存在するクラスの組合せに応じてMANAGER_PERSONBOARDMEMBER_PERSONBOARDMEMBER_MANAGER_PERSONなどの表が生成されます。

生成される表を不必要に増加させないために、この動作をパラメータ化できます。これを行うには、グループ化係数パラメータを使用して、同じ表にインスタンスがグループ化された状態で残る分岐クラスの数を定義します。生成される表には、IS_<classname>という名前のフラグ列が含まれ、この列の値によって、インスタンスの所属先となるクラスのサブセットが決まります。たとえば、IS_<classname>1に設定された場合、レコードが表すインスタンスは<classname>に属します。

クラスの組合せごとに1つの表が作成される動作は、グループ化係数が0の場合に相当します。グループ化係数が1の場合、分岐クラスが1つのみのインスタンスが同じ表に残ります。

この例では、グループ化係数が2以上の場合、社内のすべてのPersonインスタンス(PersonManagerおよびBoardMemberクラス・インスタンスを含む)がPERSON表にグループ化されます。IS_MANAGERおよびIS_BOARDMEMBER列によって、ManagerクラスまたはBoardMemberクラス(もしくは両方)にも含まれるPERSONレコードが決定します。

A.2.1.3 マッピング例外

この項では、マッピング処理の特定の状況について説明します。

  • 表名の長さ制限および競合: 状況によっては、名前の長さ制限によってオブジェクト名の競合が発生する可能性があります。このような状況を回避するために、LDAPドライバでは、オブジェクト名の3桁の接尾辞が自動生成されます。

  • キー列:: 現在のレコード(元のLDAPクラス・インスタンス)の識別子として使用できる相対識別名(RDN)を含む追加のSNPSLDAPKEY列を、ドライバで自動的に作成できます。これを行うには、key_column URLプロパティをtrueに設定します。LDAPツリーのコンテンツを更新するDMLコマンドを実行する場合は、このSNPSLDAPKEY列をロードする必要があります。この列は、LDAPインスタンスに基づく表のみに作成されます。複数値のインスタンス属性に対応する表には、これらの列は作成されません

  • 大/小文字の区別: これは、RDBMSおよびLDAPサーバーに対して大/小文字の区別を強制するcase_sens URLプロパティで設定します。

  • 特殊文字: LDAPでは、属性またはクラス名に英数字以外の文字が含まれる可能性があります。これらの文字は、マップ時にアンダースコア(_)に変換されます。例外: 最初の文字が英数字以外の場合、その文字はxに変換されます。

  • 予約済SQLキーワード: リレーショナル構造で、表名または列名とSQLキーワードとの間の名前の競合を回避するために、SQLキーワードと名前が一致する生成済の表および列の名前が自動的に変更されます(名前の後にアンダースコアが追加されます)。たとえば、SELECTという名前のクラスはSELECT_という名前の表にマップされます。

A.2.1.4 参照LDAPツリー

LDAPサーバーでは標準の方法でメタデータ情報が提供されないため、LDAPツリーからデータのイントロスペクションを使用して、LDAPからリレーショナルへのマッピング・プロセスがデフォルトで実行されます。

LDAPドライバでは、LDAPからリレーショナルへのマッピング・プロセスに対して、実際のデータを含むLDAPツリーのかわりに参照LDAPツリーを使用することもできます。

この参照LDAPツリーは、ドライバURLのlm_propsプロパティを使用して構成します。このプロパティにより、運用LDAPツリーの階層構造を厳密に反映しながらも付随するデータ量は伴わないLDAPツリーへの接続情報を含む、.propertiesファイルが指定されます。

この手法には次の利点があります。

  • ディレクトリ管理者は、参照LDAPツリーを運用LDAPツリーの不変の定義として使用できます。

  • 参照LDAPツリーに含まれるのは、実際のLDAPツリーのスケルトンを構成する少数のインスタンスのみです。そのため、この小規模の参照ツリーでは、LDAPからリレーショナルへのマッピング・プロセスがより高速で実行されます。これは、運用LDAPディレクトリが大規模な場合は特に重要で、結果的に、手順を実行するための処理時間およびリソースが削減されます。

一方、参照LDAPツリーの正確な構造を設計する上で、この手法の使用には次の制約があります。

  • オプションのLDAPインスタンス属性を、参照エントリ内ですべてインスタンス化する必要があります。これらの属性が運用LDAPディレクトリ・エントリにない場合でも、後で使用するためには、参照LDAPツリー内で宣言する必要があります。

  • 運用LDAPディレクトリに存在するすべての複数値属性は、参照LDAPツリーでも同様にインスタンス化する必要があります。たとえば、運用LDAPディレクトリのいずれかのPersonインスタンスに2つのtelephoneNumber属性がある場合は、参照LDAPツリーでも、この汎用Personクラスで少なくとも2つのtelephoneNumber属性をインスタンス化する必要があります


注意:

複数の属性フィールドをマップするための追加の表および列が強制的に作成されるため、生成されるリレーショナル構造は、これらの問題による直接的な影響を受けます。そのため、参照LDAPツリーの設計時には、これらの問題を考慮する必要があります。

A.2.2 リレーショナル・スキーマの管理

この項の内容は次のとおりです。

A.2.2.1 リレーショナル・スキーマの格納

LDAPからリレーショナルへのマッピングによって生成されたリレーショナル構造は、仮想マッピングで管理されるか、外部データベースに格納されます。

仮想マッピングでは、ランタイム・エージェントのメモリーにリレーショナル構造が格納されるため、その他のコンポーネントは不要です。リレーショナル構造は、ドライバによってLDAPツリー構造に透過的にマップされます。LDAPドライバに使用できるSQLコマンドおよびファンクションのリストは、「SQL構文」を参照してください。


注意:

大規模なLDAPツリー構造に対する仮想マッピングでは、大量のメモリーが必要になります。

外部データベースには、任意のリレーショナル・データベース管理システムを使用できます。ドライバは、JDBCを介してこのエンジンに接続し、リレーショナル・スキーマの格納に使用します。この方法には次の利点があります。

  • 選択した外部データベース・エンジンの処理および格納能力の利用。

  • 外部データベース・エンジンの特定のSQL文、プロシージャおよびファンクションへのアクセス。

  • リレーショナル構造の柔軟な持続性。このスキーマ・コンテンツは、LDAPドライバへの接続のクローズ後も持続可能です。

A.2.2.2 リレーショナル構造内のデータへのアクセス

リレーショナル内の表でのDML操作は、標準のSQL文で実行されます。

リレーショナル・データへの変更は、選択した記憶域に応じて、次のようにディレクトリに伝播されます。

  • 仮想マッピングを使用する場合は、挿入、更新および削除のすべての要求が自動的に元のLDAPサーバーに自動コミット・モードで伝播されます。明示的なCOMMITまたはROLLBACK文は、Oracle Data Integrator driver for LDAPにはまったく影響しません。

  • 外部データベースを使用してリレーショナル構造を格納する場合は、あらゆるタイプのDML文をドライバで使用できます。ただし、変更は元のLDAPサーバーに伝播されないため、注意が必要です。

A.3 インストールおよび構成

Oracle Data Integrator driver for LDAPは、Oracle Data Integratorのインストール時に自動的にインストールされます。次の各項では、拡張構成の説明および参照情報を示します。

この項の内容は次のとおりです。


注意:

JNDIを使用して、LDAPディレクトリへの接続に必要なライブラリおよびドライバをOracle Data Integratorのクラスパスに追加する必要があります。


注意:

外部データベース・エンジンを使用する場合は、さらに、外部データベースへの接続に使用するJDBCドライバおよび.propertiesファイルをクラスパスに含めておく必要があります。

A.3.1 ドライバの構成

この項ではドライバの構成について説明します。

  • ドライバ名: com.sunopsis.ldap.jdbc.driver.SnpsLdapDriver

  • ドライバでサポートされる2つのURL書式:

    • jdbc:snps:ldap?<property=value>[&...]

    • jdbc:snps:ldap2?<property=value>[&...]

    最初のURLでは、LDAPディレクトリのパスワードをエンコードする必要があります。2番目のURLでは、LDAPディレクトリのパスワードをエンコードせずに指定できます。


    注意:

    最初のURLを使用して、LDAPディレクトリのパスワードを保護することをお薦めします。

URLのプロパティの詳細を表A-1に示します。

表A-1 ドライバのプロパティ

プロパティ 必須 種類 デフォルト 説明

db_propsまたはdp

いいえ

文字列(ファイルの場所)

空の文字列

外部データベースの接続構成を含む.propertiesファイルの名前。このファイルの内容の詳細は、A.3.2.2項「外部データベースの接続構成」を参照してください。

注意: このプロパティには、.propertiesファイルの名前をファイル拡張子なしで含める必要があります。

注意: この.propertiesファイルをランタイム・エージェントのクラスパスに含める必要があります。

注意: この表にリストされているすべてのdb_プロパティを使用して、外部データベースの接続構成を指定できます。

ldap_propsまたはlp

いいえ

文字列(ファイルの場所)

N/A

ディレクトリの接続構成を含む.propertiesファイルの名前。このファイルの内容の詳細は、A.3.2.1項「LDAPディレクトリの接続構成」を参照してください。

注意: このプロパティには、.propertiesファイルの名前をファイル拡張子なしで含める必要があります。

注意: この.propertiesファイルをランタイム・エージェントのクラスパスに含める必要があります。

注意: この表にリストされているすべてのldap_プロパティを使用して、LDAPディレクトリの接続構成を指定できます。

lm_propsまたはlm

いいえ

文字列(ファイルの場所)

N/A

参照LDAPツリーのディレクトリ接続構成を含む.propertiesファイルの名前。このファイルの内容の詳細は、A.3.2.1項「LDAPディレクトリの接続構成」を参照してください。参照ツリーの説明は、A.2.1.4項「参照LDAPツリー」を参照してください。

注意: このプロパティには、.propertiesファイルの名前をファイル拡張子なしで含める必要があります。

注意: この.propertiesファイルをランタイム・エージェントのクラスパスに含める必要があります。

注意: この表に後出するすべてのlm_プロパティを使用して、参照LDAPディレクトリの接続構成を指定できます。

case_sensまたはcs

いいえ

ブール値(true | false)

false

LDAPおよびRDBMSの両方の管理オブジェクトについて、大/小文字を区別するモードを有効または無効にします。

alias_bundleまたはab

いいえ

文字列(ファイルの場所)

空の文字列

LDAPからリレーショナルへのマッピング用の別名のリストを含む.propertiesファイルの名前。詳細は、A.3.3項「表の別名の構成」を参照してください。

注意: このプロパティには、.propertiesファイルの名前をファイル拡張子なしで含める必要があります。

注意: この.propertiesファイルをランタイム・エージェントのクラスパスに含める必要があります。

alias_bundle_encodingまたはabe

いいえ

文字列(エンコーディング・コード)

デフォルトのエンコーディング

別名バンドル・ファイル・エンコーディング。このエンコーディングは、alias_bundleファイルの読取りおよび上書き時に使用されます。定義されていない場合は、デフォルトのエンコーディングが使用されます。

サポートされているエンコーディングのリストは、次のURLにあります。http://java.sun.com/j2se/1.4.2/docs/guide/intl/encoding.doc.html

grouping_factorまたはgf

いいえ

英数字

2

単一のリレーショナル表マッピングを設定するためにグループ化されるオブジェクト・クラスの数を決定します。詳細は、A.2.1.2項「グループ化係数」を参照してください。

key_columnまたはkc

いいえ

ブール値(true | false)

false

trueに設定すると、SNPSLDAPKEYという名前の技術的な列が作成され、各LDAPエントリの相対識別名(RDN)が格納されます。詳細は、A.2.1.3項「マッピング例外」を参照してください。

numeric_idsまたはni

いいえ

ブール値(true | false)

false

trueに設定すると、すべての内部の主キーおよび外部キーがNUMERIC型になります。それ以外の場合はVARCHAR型になります。

id_lengthまたはil

いいえ

英数字

10 / 30

内部の主キーおよび外部キーの列の長さ。デフォルトは、列型がNUMERICの場合は10、VARCHARの場合は30です。

table_prefixまたはtp

いいえ

文字列

N/A

現在の接続のリレーショナル表に追加される接頭辞。

log_fileまたはlf

いいえ

文字列(ファイルの場所)

N/A

トレース・ログ・ファイルの名前。このログ・ファイル名が設定されていない場合、トレース・データは標準の出力に表示されます。

このプロパティがあることで、特定のリレーショナル・スキーマのトレース・ロギングがトリガーされます。

log_levelまたはll

いいえ

英数字

1

ログ・レベル。log_fileが指定されていない場合、このプロパティは無視されます。ログ・レベルは、16進値または10進値で指定できるビット・マスクです。

ログ・レベルの値:

  • 0x1(1): 一般情報(重要)

  • 0x2(2): 一般情報(詳細)

  • 0x4(4): SQL文

  • 0x8(8): LDAPリレーショナル・マッピング情報

  • 0x10(16): LDAPリレーショナル・マッピング検証および名前変更情報(表および列の名前変更など)

  • 0x20(32): 解析されたLDAPモデルおよび対応するリレーショナル・モデル

  • 0x40(64): 表作成文

  • 0x80(128): データ挿入文

  • 0x100(256): グループ化情報(重要)

  • 0x200(512): グループ化情報(詳細)

  • 0x400(1024): リレーショナル・モデル作成の詳細

  • 0x800(2048): LDAPツリーから読み取られた要素

  • 0x1000(4096): LDAPツリーへの変更の原因となるSQL文

例:

  • 重要および詳細な一般情報: log_level=3(1+2)

  • ネイティブSQLコマンドおよび重要な内部イベントのトレース: log_level=5(1+4)

  • リレーショナル・マッピングの計算および検証のトレース: log_level=24(16+8)

  • すべてのイベントのトレース: log_level=8191(1+2+ ... + 2048 + 4096)

ldap_auth

いいえ

文字列

simple

LDAPディレクトリの認証方式。A.3.2.1項「LDAPディレクトリの接続構成」authプロパティを参照してください。

ldap_url

はい

文字列

N/A

LDAPディレクトリのURL。A.3.2.1項「LDAPディレクトリの接続構成」urlプロパティを参照してください。

ldap_user

いいえ

文字列

空の文字列

LDAPディレクトリのユーザー名。A.3.2.1項「LDAPディレクトリの接続構成」userプロパティを参照してください。

ldap_password

いいえ

文字列

空の文字列

LDAPディレクトリ・ユーザーのパスワード。A.3.2.1項「LDAPディレクトリの接続構成」passwordプロパティを参照してください。

lldap_basedn

いいえ

文字列

N/A

LDAPディレクトリのベースDN。A.3.2.1項「LDAPディレクトリの接続構成」basednプロパティを参照してください。

lm_auth

いいえ

文字列

simple

参照LDAPの認証方式。A.3.2.1項「LDAPディレクトリの接続構成」authプロパティを参照してください。

lm_url

はい

文字列

N/A

参照LDAP URL。A.3.2.1項「LDAPディレクトリの接続構成」urlプロパティを参照してください。

lm_user

いいえ

文字列

空の文字列

参照LDAPディレクトリのユーザー名。A.3.2.1項「LDAPディレクトリの接続構成」userプロパティを参照してください。

lm_password

いいえ

文字列

空の文字列

参照LDAPディレクトリ・ユーザーのパスワード。A.3.2.1項「LDAPディレクトリの接続構成」passwordプロパティを参照してください。

lm_basedn

いいえ

文字列

N/A

参照LDAPディレクトリのベースDN。A.3.2.1項「LDAPディレクトリの接続構成」basednプロパティを参照してください。

db_driver

はい

文字列

N/A

外部データベースのJDBCドライバ。A.3.2.2項「外部データベースの接続構成」driverプロパティを参照してください。

db_url

はい

文字列

N/A

外部データベースのJDBC URL。A.3.2.2項「外部データベースの接続構成」urlプロパティを参照してください。

db_user

いいえ

文字列

空の文字列

外部データベース・ユーザー。A.3.2.2項「外部データベースの接続構成」userプロパティを参照してください。

db_password

いいえ

文字列

空の文字列

外部データベースのパスワード。A.3.2.2項「外部データベースの接続構成」passwordプロパティを参照してください。

db_schema

いいえ

文字列

空の文字列

外部データベースのスキーマ。A.3.2.2項「外部データベースの接続構成」schemaプロパティを参照してください。

db_catalog

いいえ

文字列

空の文字列

外部データベース・カタログ。A.3.2.2項「外部データベースの接続構成」catalogプロパティを参照してください。

db_drop_on_disconnectまたはdb_dod

いいえ

ブール値(Y | N)

true

切断時に外部データベースから表をドロップします。A.3.2.2項「外部データベースの接続構成」drop_on_disconnectプロパティを参照してください。

db_load_modeまたはdb_lm

いいえ

文字列

ci

外部データベースのロード方法。A.3.2.2項「外部データベースの接続構成」load_modeプロパティを参照してください。


URLの例

ここにURLの例をリストします。

  • jdbc:snps:ldap?lp=ldap_mir&ldap_basedn=o=tests&gf=10&lf=

    ldap_mir .propertiesファイルで指定されているLDAPディレクトリに接続し、ldapバンドルのbasednプロパティを上書きしてグループ化係数10を使用します。一般情報(重要)が標準の出力に送信されます。

  • jdbc:snps:ldap?lp=ldap_ours&lm=generic&ab=c:/tmp/aliases.txt&gf=10&kc=true

    ldap_ours .propertiesファイルを使用してLDAPディレクトリに接続します。リレーショナル・モデルの作成には、lmプロパティで指定されている汎用ディレクトリ・ツリーを使用します。リレーショナル構造の作成には別名バンドル・ファイルを使用します。最大グループ化係数10を使用します。SNPSLDAPKEYフィールドに対するキー列の作成を有効にして、リレーショナル・モデルでの更新要求を可能にします。

  • jdbc:snps:ldap?lp=ldap_mir&dp=mysql_mir_ldap&ldap_basedn=dc=tests&lm=ldap_mir&lm_basedn=dc=model&ab=d:/temp/mapldap.txt&

    ldap_mir .propertiesファイルを使用してLDAPディレクトリに接続します。ldap basednプロパティを上書きします。同じディレクトリのdc=modelサブツリーを使用してマッピングを実行します。別名バンドルを使用します。lmデータベース・プロパティ(ロード・モード)を上書きします。グループ化係数0を指定して、グループ化しない(グループ化を無効にする)ことを示します。完全なトレース・ロギングをアクティブにします。

  • hydraroidマシンのLDAPディレクトリに接続します。LDAPサーバーの接続情報(URL、ベースDN、ユーザーおよびパスワード)は、URL内でldap_xxxという書式で指定されています。

    jdbc:snps:ldap?ldap_url=ldap://hydraroid:389/dc=localhost,dc=localdomain&ldap_password=KPLEKFMJKCLFJMDFDDGPGPDB&ldap_user=cn=orcladmin&ldap_basedn=ou=applications
    

A.3.2 プロパティ・バンドルの使用

表A-1に示したように、LDAPドライバのURLでは、次の情報を含むプロパティ・バンドル(.propertiesファイル)を参照できます。

  • ディレクトリのLDAP接続情報

  • 参照ディレクトリのLDAP接続情報

  • 外部データベースの接続情報

バンドル・ファイル(.propertiesファイル)に格納される次の値もURLで渡すことができます。

  • LDAPディレクトリ接続: プロパティの先頭にldap_を付けます。例: ldap_basedn

  • LDAP参照ディレクトリ接続: プロパティの先頭にlm_を付けます。例: lm_basedn

  • 外部データベース接続: プロパティの先頭にdb_を付けます。例: db_url

プロパティ・バンドル・ファイルを使用する場合は、Oracle Data Integratorのクラスパスにそのプロパティ・バンドルが存在することを確認する必要があります。通常は、このバンドルをdriversディレクトリにインストールする必要があります。

また、URLが参照するプロパティ・バンドルには、ファイル拡張子が指定されていないことを確認してください。たとえば、クラスパスにprod_directory.propertiesファイルがある場合は、このファイルをlp=prod_directoryのように参照する必要があります。


注意:

LDAPドライバによって外部プロパティ・バンドル・ファイルがロードされるのは、ランタイム起動時の1回のみです。これらのファイルでエラーが発生した場合は、Oracle Data Integratorを終了して再ロードしてから、再テストすることをお薦めします。

A.3.2.1 LDAPディレクトリの接続構成

Oracle Data Integrator driver for LDAPは、次のプロパティを使用して、LDAPデータまたは参照LDAPツリーを含むディレクトリ・サーバーに接続します。これらのプロパティは、プロパティ・バンドル・ファイルまたはドライバURLで指定できます。

ディレクトリ接続を構成するためのプロパティの詳細を、表A-2に示します。

表A-2 LDAPディレクトリ接続のプロパティ

プロパティ 必須 種類 デフォルト 説明

auth

いいえ

文字列

simple

認証方式。

url

はい

文字列

N/A

ディレクトリに接続するためのURL。これはLDAP URLです。

注意: このドライバでは、LDAPS(LDAP over SSL)プロトコルがサポートされます。LDAPS URLは、ldaps://で始める必要があります。LDAPSを使用してサーバーに接続するには、javaマシンに証明書を手動でインストールする必要があります。詳細は、JVMで提供されるkeytoolプログラムを参照してください。

user

いいえ

文字列

空の文字列

LDAPサーバーのユーザー・ログイン名。authが設定されている場合のみ必須です。

注意: JDBC Driver for LDAPとの接続を作成するためにuserおよびpasswordプロパティを指定した場合は、LDAPディレクトリの接続にこれらのプロパティが使用されます。

password

いいえ

文字列

空の文字列

LDAPサーバーのユーザー・ログイン・パスワード。authが設定されている場合のみ必須です。

注意: URL構文のjdbc:snps:ldap2以外では、パスワードを暗号化する必要があります。

注意: パスワードを暗号化するには、encode.batコマンドを使用します。詳細は、『Oracle Fusion Middleware Oracle Data Integratorインストレーション・ガイド』を参照してください。

basedn

いいえ

文字列

N/A

LDAPツリーへの接続に使用するベースDN。ベースDNは、LDAPディレクトリ・ツリーの最上位レベルです。指定されていない場合は、LDAP URLで指定されたベースDNが使用されます。


LDAPプロパティ・ファイルの内容の例を次に示します。

url=ldap://ours:389
user=cn=Directory Manager
password=ENCODED_PASSWORD
basedn=dc=oracle,dc=com

A.3.2.2 外部データベースの接続構成

Oracle Data Integrator driver for LDAPでは、外部データベース・エンジンにLDAPツリーのリレーショナル構造マッピングを格納できます。


注意:

外部記憶域がサポートされるテクノロジのリストには、次のOracle Technical Network(OTN)からアクセスできます。

http://www.oracle.com/technology/products/oracle-data-integrator/index.html


外部データベース接続を構成するためのプロパティの詳細を、表A-3に示します。

表A-3 外部データベース接続のプロパティ

プロパティ 必須 種類 デフォルト 説明

driver

はい

文字列

N/A

JDBCドライバ名。

url

はい

文字列

N/A

JDBC URL

user

いいえ

文字列

空の文字列

データベースへの接続に使用するログイン。

password

いいえ

文字列

空の文字列

暗号化されたデータベース・ユーザー・パスワード。

注意: パスワードを暗号化するには、encode.batコマンドを使用します。詳細は、『Oracle Fusion Middleware Oracle Data Integratorインストレーション・ガイド』を参照してください。

schema

いいえ

文字列

空の文字列

LDAPツリーを格納するデータベース・スキーマ。このプロパティはMicrosoft SQLServeには使用しないでください。かわりにcatalogプロパティを使用してください。

catalog

いいえ

文字列

空の文字列

LDAPツリーを格納するデータベース・カタログ。Microsoft SQL Server専用です。このプロパティをschemaプロパティと同時に使用しないでください。

drop_on_disconnectまたはdod

いいえ

ブール値(true | false)

true

trueの場合は、切断時に外部データベースから表がドロップされます。falseに設定すると、表がデータベース内に保持されます。

load_modeまたはlm

いいえ

文字列

ci

ロード方法。次の値を使用できます。

  • n(none): モデルおよび表のマッピングが、メモリー内のみに作成されます。

  • dci(drop_create_insert): 名前の競合を発生させる可能性がある表をすべてドロップした後、表を作成してリレーショナル・モデルにLDAPツリーをロードします。

  • ci(create_insert): リレーショナル表を作成し、既存の表に対して例外をスローした後、リレーショナル・モデルにLDAPツリーをロードします。


次に、外部のOracleデータベースに接続するための外部データベース.propertiesファイルの例を示します。

driver=oracle.jdbc.OracleDriver
url=jdbc:oracle:thin:@hydraro:1521:SNPTST1
user=LDAP_T_1
password=ENCODED_PASSWORD
schema=LDAP_T_1

A.3.3 表の別名の構成

LDAPドライバでは、表の別名を使用することで、Oracle Data Integratorでのモデル表名の定義をある程度柔軟に行えます。これは特に、LDAPツリーのナビゲートに使用されるアルゴリズムによって、LDAPオブジェクト・クラス階層に基づく長い複合名が生成される場合に役立ちます。RDBMS固有のオブジェクト名の長さの制約に関連する問題を回避するために、LDAPドライバでは別名を設定して使用できます。


注意:

「物理アーキテクチャ」アコーディオンにあるテクノロジ・エディタの「その他」タブで、「最大表名長」および「最大列名長」のデフォルト値を変更することもできます。

表の別名のファイルを作成するには、次のようにします。

  1. LDAPドライバ・データ・サーバーのURLにalias_bundle(ab)プロパティを含め、別名テキスト・ファイルの名前を指定するように設定します。次に例を示します。

    jdbc:snps:ldap?.....&ab=..../tmp/aliases.txt&....

    alias_bundleプロパティを指定すると、接続時にドライバによって別名ファイルが作成されます。このファイルには、リバース・エンジニアリング操作によって作成される、潜在的な表名のリストが含まれます。通常、ユーザーは最初に、このファイルを作成するLDAPドライバを介して接続します。

  2. LDAPデータ・サーバーへの接続をテストします。

  3. テキスト・ファイルが作成され、正しく構成されていることを検証します。リストは、<original table name > = <desired alias name>という値で構成されます。例A-1は、ユーザーが短縮名を指定した後に抽出される別名ファイルを示しています。詳細は、手順4を参照してください。

    例A-1 別名ファイル

    INETORGPERSON_ORGANIZATIONALPERSON_PERSON_BISOBJECT_MAIL = PERSONMAIL
    ORGANIZATIONALUNIT_RFC822MAILMEMBER = ORG_228MAIL
    INETORGPERSON_ORGANIZATIONALPERSON_PERSON = ORG_PERSON
    ORGANIZATIONALUNIT_MEMBER = ORG_UN_MEMBER
    ORGANIZATIONALUNIT = ORG_UNIT
    ROOT = ROOT
    ....
     
    
  4. 別名テキスト・ファイルで、最初に導出される複合名を置き換えるための別名(短いテキスト値)を追加して、ファイルを保存します。

  5. 同じLDAPデータ・サーバーに再接続します。リレーショナル・スキーマが作成され、今回は、別名を使用してリレーショナル表名が定義されます。

  6. ここで、24.5.2項「LDAPモデルのリバース・エンジニアリング」の説明に従って、LDAPディレクトリをリバース・エンジニアリングします。Oracle Data Integratorによってデータストアが作成され、別名ファイルでは表名が別名として定義されます。


注意:

LDAPディレクトリのオブジェクト・クラス構造または属性セットになんらかの変更が適用されている場合は、ドライバによってこのファイルが再書込みされ、表名リストには新規または変更されたエントリが含まれます。

A.4 SQL構文

A.4.1項「SQL文」に示すSQL文は、Oracle Data Integrator driver for LDAPを使用する場合に使用できます。これらの文を使用すると、標準のSQL文を介してリレーショナル・データ構造およびデータを管理できます。


注意:

  • 外部データベースを使用する場合は、後出のコマンドのかわりに専用の問合せエンジン構文を使用できます。

  • LDAPドライバは、自動コミット・モードで独自に動作します。COMMITまたはROLLBACKコマンドによる明示的なトランザクション管理は許可されません。

  • 外部データベースを使用してLDAPツリーのデータを格納する場合、DDL文は一時表のみで実行できます。


表A-4は、リストされているDML操作を特定のキー・フィールドで実行する場合に適用される推奨事項をまとめたものです。

表A-4 キー・フィールドでのDML操作

列のタイプ 挿入 更新 削除

外部キー

マスター表の参照制約および順序付きの表の移入操作に注意します。

不可

マスター表の参照制約および順序付きの削除要求に注意します。

主キー

スレーブ表の参照制約および順序付きの表の移入操作に注意します。

不可

スレーブ表の参照制約および順序付きの削除要求に注意します。

IS_xxx

元のオブジェクト・クラスに正しいフラグ値を関連付けるように注意します。

不可

OK

Key_Column

正しいLDAP構文でRDN値を設定するように注意します。

不可

OK


A.4.1 SQL文

任意の数のコマンドを組み合せることができます。セミコロン(;)を使用して各コマンドを区切ることができますが、使用しなくても構いません。

A.4.1.1 DISCONNECT

DISCONNECT

この接続を閉じます。

注意

  • JDBCインタフェースを使用している場合は、このコマンドをコールする必要はありません。接続が閉じる際に自動的にコールされます。

  • 切断後は、この接続で他の問合せを実行することはできません。

A.4.1.2 INSERT INTO

1つ以上の新しいデータ行を表に挿入します。

INSERT INTO <table_name> [ ( <column_name> [,...] ) ] 
      { VALUES (<expression> [,...]) | <SELECT Statement> }

A.4.1.3 SELECT

スキーマ内の1つ以上の表から情報を取得します。

SELECT [DISTINCT] { <select_expression> | <table_name>.* | * } [, ... ]
    [ INTO <new_table> ]
      FROM <table_list>
    [ WHERE <expression> ]
    [ GROUP BY <expression> [, ...] ]
    [ ORDER BY <order_expression> [, ...] ]
    [ { UNION [ALL] | {MINUS|EXCEPT} | INTERSECT } <select_statement>
 ]
<table_list> ::=
<table_name> [ { INNER | LEFT [OUTER] } JOIN <table_name> ON <expression> ] 
   [, ...]
<select_expression> ::=
{ <expression> | COUNT(*) | {COUNT | MIN | MAX | SUM | AVG} 
  (<expression>) <column_alias>}
<order_expression> ::=
{ <column_number> | <column_alias> | <select_expression> } [ ASC | DESC ]

A.4.1.4 UPDATE

データベース内の表のデータを変更します。

UPDATE table SET column = <expression> [, ...] [WHERE <expression>]

A.4.1.5 式、条件および値

<expression> ::=
[NOT] <condition> [ { OR | AND } <condition> 
]
<condition> ::=
{ <value> [ || <value> ]
| <value> { = | < | <= | > | >= | <> | != | IS [NOT] } <value>
| EXISTS(<select_statement>)
| <value> BETWEEN <value> AND <value>
| <value> [NOT] IN ( {<value> [, ...] | selectStatement } )
| <value> [NOT] LIKE <value> [ESCAPE] value }
<value> ::=
[ + | - ] { term [ { + | - | * | / } term ]
| ( condition )
| function ( [parameter] [,...] )
| selectStatement giving one value
<term> ::=
{ 'string' | number | floatingpoint | [table.]column | TRUE | FALSE | NULL }
<string> ::=
  • 開始および終了には、単一の「'」を使用します。「'」で開始した文字列内に「'」を作成するには、「''」を使用します。

  • LIKEでは、任意の数(0を含む)の文字と一致させる場合は%を使用し、1つの文字と完全に一致させる場合は_を使用します。%自体の検索には\%、_自体の検索には\_を使用するか、ESCAPE句を使用してその他の任意のエスケープ文字を設定できます。

<name> ::=
  • 名前の先頭は文字で、後に任意の数の文字または数字が続きます。文字列および引用符で囲まれた識別子以外の小文字は、大文字に変換されます。名前では大/小文字は区別されません。

  • 識別子(表または列など)を引用符で囲んで、名前として使用できます。引用符で囲まれた識別子は、「"」で始まり「"」で終わります。引用符で囲まれた識別子の中に「"」を作成するには、「""」を使用します。引用符で囲まれた識別子を使用することで、大/小文字が混在する表および表名を作成できます。例: CREATE TABLE "Address" ("Nr" INTEGER,"Name" VARCHAR); SELECT * FROM "Address"。引用符で囲まれた識別子は文字列ではありません。

<values> ::=
  • 日付値は「'」で始まり「'」で終わります。書式はyyyy-mm-ddです(java.sql.Dateを参照)。

  • 時間値は「'」で始まり「'」で終わります。書式はhh:mm:ssです(java.sql.Timeを参照)。

  • バイナリ・データは「'」で始まり「'」で終わります。書式は16進値です。たとえば'0004ff'は、最初が0、2番目が4、最後が255(0xff)の3バイトです。

A.4.2 SQLファンクション

表A-5に数値ファンクションを示します。

表A-5 数値ファンクション

ファンクション 説明

ABS(d)

double値の絶対値を戻します。

ACOS(d)

角度のアーク・コサインを戻します。

ASIN(d)

角度のアーク・サインを戻します。

ATAN(d)

角度のアーク・タンジェントを戻します。

ATAN2(a,b)

a/bのタンジェントを戻します。

BITAND(a,b)

a & bを戻します。

BITOR(a,b)

a | bを戻します。

CEILING(d)

d以上の最小整数を戻します。

COS(d)

角度のコサインを戻します。

COT(d)

角度のコタンジェントを戻します。

DEGREES(d)

ラジアンを角度に変換します。

EXP(d)

e(2.718...)のd乗を戻します。

FLOOR(d)

d以下の最大整数を戻します。

LOG(d)

eを底とする自然対数を戻します。

LOG10(d)

10を底とする対数を戻します。

MOD(a,b)

aをbで割った剰余を戻します。

PI()

円周率(3.1415...)を戻します。

POWER(a,b)

aのb乗を戻します。

RADIANS(d)

角度をラジアンに変換します。

RAND()

0.0以上1.0未満の乱数xを戻します。

ROUND(a,b)

aを小数点以下b桁に丸めます。

SIGN(d)

dが0未満の場合は-1、dが0の場合は0、dが0より大きい場合は1を戻します。

SIN(d)

角度のサインを戻します。

SQRT(d)

平方根を戻します。

TAN(d)

角度の三角関数タンジェントを戻します。

TRUNCATE(a,b)

aを小数点以下b桁に切り捨てます。


表A-6に文字列ファンクションを示します。

表A-6 文字列ファンクション

ファンクション 説明

ASCII(s)

sの左端の文字のASCIIコードを戻します。

BIT_LENGTH(s)

文字列の長さをビット数で戻します。

CHAR(c)

ASCIIコードがcの文字を戻します。

CHAR_LENGTH(s)

文字列の長さを文字数で戻します。

CONCAT(str1,str2)

str1とstr2を連結して戻します。

DIFFERENCE(s1,s2)

s1とs2の発音の差を戻します。

HEXTORAW(s1)

16進数からRAWに変換された文字列を戻します。

INSERT(s,start,len,s2)

startからlen文字分をs2に置き換えて、文字列を戻します。

LCASE(s)

sを小文字に変換します。

LEFT(s,count)

sの左端からcount文字分を戻します。

LENGTH(s)

sの文字数を戻します。

LOCATE(search,s,[start])

startから開始して、s内でsearchが検出された最初の索引(1=左、0=見つからない)を戻します。

LTRIM(s)

sの先頭の空白をすべて削除します。

OCTET_LENGTH(s)

文字列の長さをバイト数で戻します。

RAWTOHEX(s)

変換された文字列を戻します。

REPEAT(s,count)

sをcount回分繰り返して戻します。

REPLACE(s,replace,s2)

sに出現するすべてのreplaceをs2に置き換えます。

RIGHT(s,count)

sの右端からcount文字分を戻します。

RTRIM(s)

末尾の空白をすべて削除します。

SOUNDEX(s)

sの発音を表す4文字のコードを戻します。

SPACE(count)

count個分のスペースで構成される文字列を戻します。

SUBSTR(s,start[,len])

(SUBSTRINGの別名)

SUBSTRING(s,start[,len])

start(1=左)からlen文字分のサブストリングを戻します。

SUBSTRING(s FROM start [FOR len])という構文もあります。

TRIM

TRIM([{LEADING | TRAILING | BOTH}] FROM s): 先頭または末尾(もしくは両方)のスペースをsから削除します。

UCASE(s)

sを大文字に変換します。

LOWER(s)

sを小文字に変換します。

UPPER(s)

sを大文字に変換します。


表A-7に、日時ファンクションを示します。

表A-7 日時ファンクション

ファンクション 説明

CURDATE()

現在の日付を戻します。

CURTIME()

現在の時間を戻します。

CURRENT_DATE

現在の日付を戻します。

CURRENT_TIME

現在の時間を戻します。

CURRENT_TIMESTAMP

現在のタイムスタンプを戻します。

DATEDIFF(s, d1,d2)

日時d1から日時d2までの経過時間を、sで指定された単位で戻します。sには次の値を使用できます。'ms'='ミリ秒'、'ss'='秒','mi'='分','hh'='時間'、'dd'='日'、'mm'='月'、'yy' = '年'。

DAYNAME(date)

曜日の名前を戻します。

DAYOFMONTH(date)

月の日付(1〜31)を戻します。

DAYOFWEEK(date)

週の曜日(1は日曜日)を戻します。

DAYOFYEAR(date)

その年の何日目か(1〜366)を戻します。

EXTRACT

EXTRACT ({YEAR | MONTH | DAY | HOUR | MINUTE | SECOND} FROM <datetime>): <datetime>値から適切な部分を抽出します。

HOUR(time)

時間(0〜23)を戻します。

MINUTE(time)

分(0〜59)を戻します。

MONTH(date)

月(1〜12)を戻します。

MONTHNAME(date)

月の名前を戻します。

NOW()

現在の日時をタイムスタンプとして戻します。

QUARTER(date)

四半期(1〜4)を戻します。

SECOND(time)

秒(0〜59)を戻します。

WEEK(date)

その年の何週目か(1〜53)を戻します。

YEAR(date)

年を戻します。


日付値は「'」で始まり「'」で終わります。書式はyyyy-mm-ddです(java.sql.Dateを参照)。時間値は「'」で始まり「'」で終わります。書式はhh:mm:ssです(java.sql.Timeを参照)。

表A-8にシステム・ファンクションを示します。

表A-8 システム・ファンクション

ファンクション 説明

IFNULL(exp,value)

expがNULLの場合はvalueを戻し、NULLでない場合はexpを戻します。

CASEWHEN(exp,v2,v2)

expがtrueの場合はv1を戻し、trueでない場合はv2を戻します。

CONVERT(term,type)

expを別のデータ型に変換します。

COALESCENCE(e1,e2,e3,...)

e1がNULLでない場合はe1を戻し、NULLの場合はe2を評価します。e2がNULLの場合はe2を戻し、e2がNULLでない場合はe3を評価します。以下同様です。

NULLIF(v1,v2)

v1がv2と等しくない場合はv1を戻し、等しい場合はNULLを戻します。

CASE WHEN

CASE WHEN文には次の2つの構文があります。

CASE v1 WHEN v2 THEN v3 [ELSE v4] END: v1がv2と等しい場合はv3を戻し、等しくない場合はv4またはNULL(ELSEが指定されていない場合)を戻します。

CASE WHEN e1 THEN v1[WHEN e2 THEN v2] [ELSE v4] END: e1がtrueの場合はv1を戻します。それ以外にも条件と値が設定されている場合は、これを繰り返します。いずれの条件とも一致しない場合は、v4またはNULL(ELSEが指定されていない場合)を戻します。

CAST(term AS type)

expを別のデータ型に変換します。


表A-9に、システムおよび接続ファンクションを示します。

表A-9 システムおよび接続ファンクション

ファンクション 説明

DATABASE()

この接続のデータベース名を戻します。

USER()

この接続のユーザー名を戻します。

IDENTITY()

この接続によって挿入された最後のID値を戻します。


A.5 実装されるJDBC API機能

表A-10に、Oracle Data Integrator driver for LDAPのJDBC API機能をリストします。

表A-10 JDBC APIの機能

機能グループ JDBCのバージョン サポート

バッチ更新

2.0 Core

はい

Blob/Clob

2.0 Core

いいえ

JNDIデータソース

2.0 Optional

いいえ

フェイルオーバー・サポート

-

いいえ

トランザクション・セーブポイント

3.0

いいえ

Unicodeサポート

-

いいえ

分散トランザクション

2.0 Optional

いいえ

接続プーリング

2.0 Optional

いいえ

クラスタ・サポート

-

いいえ


次の表に、Oracle Data Integrator driver for LDAPでサポートされているJDBCクラスを示します。

表A-11 JDBCクラス

JDBCクラス JDBCのバージョン サポート

Array

2.0 Core

いいえ

Blob

2.0 Core

いいえ

Clob

2.0 Core

いいえ

CallableStatement

1.0

はい

Connection

1.0

はい

ConnectionPoolDataSource

2.0 Optional

いいえ

DatabaseMetaData

1.0

はい

DataSource

2.0 Optional

いいえ

Driver

1.0

はい

PreparedStatement

1.0

はい

Ref

2.0 Core

いいえ

RowSet

2.0 Optional

いいえ

ResultSet

1.0

はい

ResultSetMetaData

1.0

はい

Statement

1.0

はい

Struct

2.0 Core

いいえ

XAConnection

2.0 Optional

いいえ

XADataSource

2.0 Optional

いいえ