ヘッダーをスキップ
Oracle Warehouse Builderユーザーズ・ガイド
11gリリース1(11.1)
E05734-03
  目次
目次
索引
索引

戻る
戻る
 
次へ
次へ
 

9 ソースとしてのMicrosoft製品の使用

Warehouse Builderでは、Microsoft製品を使用して格納されたデータを取得できます。この章では、Microsoft ExcelおよびMicrosoft SQL Serverをソースとして利用する方法について説明します。

ソースとしてのExcelスプレッドシートの使用

シナリオ

ある会社は、employees.xlsというExcelファイルに従業員データを格納しています。このファイルには、employee_detailsjob_historyという2つのワークシートが含まれています。employee_detailsワークシートから、Warehouse Builder内のターゲット表にデータをロードする必要があります。

解決策

Excelファイルに格納されたデータをターゲット表にロードするには、最初にソースとしてExcelファイルを使用する必要があります。Warehouse Builderにより、Oracle Databaseの異機種間サービス・コンポーネントを使用して、Microsoft ExcelのようなOracle以外のソースに格納されたデータを取得できます。

図9-1では、Oracle Databaseにより、異機種間サービスを使用してリモートのOracle以外のソースにアクセスする方法を示します。

図9-1 異機種間サービスのアーキテクチャ

図9-1の説明が続きます
「図9-1 異機種間サービスのアーキテクチャ」の説明

データベース内の異機種間サービス・コンポーネントは異機種間サービス・エージェント・プロセスと通信します。次に、エージェント・プロセスはリモート・データベースと通信します。

エージェント・プロセスはエージェント汎用コードおよびシステム固有のドライバで構成されます。すべてのエージェントには同じエージェント汎用コードが含まれます。ただし、各エージェントでは、取得されるデータのタイプによって異なるドライバを所有します。

事例

この事例では、Warehouse Builder内でソースとしてemployees.xlsというExcelファイルを使用する方法を示します。

手順1: Excel用ODBCドライバのインストール

Microsoft Excelからデータを読み込むには、Excel用ODBCドライバを事前にインストールする必要があります。

手順2: Excelファイル内のデータの区切り

Excelファイルからデータを取得するには、取得するデータの範囲の名前を定義します。

  1. employee_detailsワークシートで、Oracleから問い合せる範囲をハイライト表示します。

    範囲には列名およびデータが含まれている必要があります。列名がOracle Database内の列のネーミングのルールに従っていることを確認します。

  2. 「挿入」メニューから、「名前」「定義」の順に選択します。「名前の定義」ダイアログ・ボックスが表示されます。範囲の名前を指定します。

手順3: システムDSNの作成

Microsoft ODBC Administratorを使用して、システム・データ・ソース名(DSN)を設定します。

  1. 「スタート」「設定」「コントロール パネル」、「管理ツール」、「データ ソース (ODBC)」を選択します。

    これにより、「ODBC データ ソース アドミニストレータ」ダイアログ・ボックスが開きます。

  2. 「システム DSN」タブにナビゲートし、「追加」をクリックして「データ ソースの新規作成」ダイアログ・ボックスを開きます。

  3. データ・ソースを設定するドライバとして「Microsoft Excel Driver」を選択します。

    「完了」をクリックすると、図9-2に示すように、「ODBC Microsoft Excel セットアップ」ダイアログ・ボックスが開きます。

    図9-2 「ODBC Microsoft Excel セットアップ」ダイアログ・ボックス

    図9-2の説明が続きます
    「図9-2 ODBC Microsoft Excel セットアップ」の説明

  4. データ・ソースの名前を指定します。たとえば、odbc_excelと指定します。

  5. 「ブックの選択」をクリックしてデータのインポート元のExcelファイルを選択します。

  6. 「バージョン」フィールドにソースのExcelファイルのバージョンが正確にリストされていることを確認します。

手順4: 異機種間サービス初期化ファイルの作成

エージェントを構成するには、異機種間サービス初期化ファイル内の初期化パラメータを設定する必要があります。各エージェントには、独自の異機種間サービス初期化ファイルがあります。異機種間サービス初期化ファイルの名前は、initSID.oraで、この場合、SIDがエージェントに使用されるOracleシステム識別子です。このファイルのロケーションは、ORACLE_HOME/hs/adminディレクトリです。

次のように、ORACLE_HOME/hs/adminディレクトリにinitexcel.oraファイルを作成します。

HS_FDS_CONNECT_INFO = odbc_excel
HS_AUTOREGISTER = TRUEHS_DB_NAME = hsodbc

ここでは、odbc_excelは、手順3で作成したシステムDSNの名前です。excelは、エージェントに使用されるOracleシステム識別子の名前です。

手順5: listener.oraファイルの変更

エージェントのリスナーを設定して、Oracle Databaseからの受信要求をリスニングします。要求を受信すると、エージェントは異機種間サービス・エージェントを起動します。リスナーを設定するには、DATABASE_ORACLE_HOME/network/adminディレクトリ内にあるlistener.oraファイル内のエントリを次のように変更します。

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = excel)
      (ORACLE_HOME = C:\oracle11g\product\11.1.0\db_1)
      (PROGRAM = hsodbc)
    )
    (SID_DESC =
      (SID_NAME = PLSExtProc)
      (ORACLE_HOME = C:\oracle11g\product\11.1.0\db_1)
      (PROGRAM = extproc)
      )
  )
  1. SID_NAMEパラメータでは、異機種間サービス用の初期化パラメータ・ファイルの作成時に指定したSIDを使用します。この場合は、excelsidです。

  2. ORACLE_HOMEパラメータ値が、Oracle Databaseホーム・ディレクトリへのパスであることを確認します。

  3. PROGRAMキーワードに関連付けられた値は、実行可能なエージェントの名前です。

これらの変更を行った後、リスナーを必ず再開します。


注意:

初期化パラメータGLOBAL_NAMESが、データベースの初期化パラメータ・ファイル内でFALSEに設定されていることを確認します。FALSEはこのパラメータのデフォルト設定です。

手順6: ODBCソース・モジュールの作成

次の手順に従い、ODBCソース・モジュールを作成します。

  1. プロジェクト・エクスプローラからODBCソース・モジュールを作成します。

    ナビゲーション・ツリーには、「データベース」ノードの下の「Oracle以外」ノード内にODBCがリストされます。

  2. モジュールの作成時、またはこのモジュールへのデータのインポート時のいずれかに、ソース・ロケーションの接続情報を指定できます。

  3. モジュールの作成中に接続情報を指定するには、接続情報ページで、「編集」をクリックして次の詳細を提供します。

    指定したサービス名が、listener.oraファイル内で指定したSID_NAMEと同一であることを確認します。

    「ホスト名」フィールドおよび「ポート番号」フィールドを別々に使用してホスト名およびポート番号を指定します。

    Oracle databaseに接続中ではないため、ユーザー名およびパスワードに対して仮の値を指定できます。フィールドを空にできません。

    スキーマからはデータをインポートしていないため、「スキーマ」フィールドは空のまま残すことができます。

手順7: メタデータのインポート・ウィザードを使用したExcelからのメタデータのインポート

メタデータのインポート・ウィザードを使用してExcelファイルからWarehouse Builderへメタデータをインポートします。「フィルタ条件」として「表」を使用します。このウィザードにより、使用可能なオブジェクトのリストにある「表」ノードの下のソースのExcelファイル内のすべてのワークシートが表示されます。

  1. 「employee_details」を選択し、右矢印を使用して選択済オブジェクトのリストにこれを移動します。

  2. 「終了」をクリックしてデータをインポートします。

    employee_detailsワークシートからのデータは、ODBCソース・モジュール内のemployee_detailsという表に格納されます。

手順8: ターゲット表にデータをロードするためのマッピングの作成

Warehouse Builderコンソールで、ターゲット表を含むモジュールを開きます。ソースとしてODBCソース・モジュール内のemployee_detailsという表を使用し、ターゲット表にデータをロードします。図9-3は、ターゲット表へのデータのロードに使用されるマッピングを示しています。

図9-3 ターゲット表にデータをロードするためのマッピング

図9-3の説明が続きます
「図9-3 ターゲット表にデータをロードするためのマッピング」の説明

手順9: マッピングの配布

コントロール・センター・マネージャまたはデザイン・センターを使用して、手順8で作成したマッピングを配布します。マッピングを配布する前に、ソース・モジュールを最初に配布することを確認します。

トラブルシューティング

この項では、接続情報の指定中に発生するいくつかのエラーをリストします。

エラー

ORA-28546: connection initialization failed, porbable Net8 admin error
ORA-28511: lost RPC connection to heterogeneous remote agent using
SID=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(Host=localhost)(PORT=1521)))(CONNECT_DATA=(SID=oracledb)))

ORA-02063: preceeding 2 lines from OWB###

原因

データベースのSID名と同じSID名の指定。

アクション

データベースのSID名と異なるSID名を指定します。

エラー

ORA-28500: connection from ORACLE to a non-Oracle system returned this message: 
[Generic Connectivity Using ODBC][H006] The init parameter <HS_FDS_CONNECT_INFO> 
is not set. Please set it in init<orasid>.ora file.

原因

listener.oraファイルで指定されたSID名とORACLE_HOME/hs/admin内のinitSID.oraファイルの名前の不一致。

アクション

initSID.oraファイルの名前と、listener.oraファイル内のSID_NAMEパラメータに指定された値が同じであることを確認します。


ヒント:

listener.oraファイルに変更があった場合は必ずリスナー・サービスを再開してください。

ソースとしてのSQL Serverの使用

シナリオ

会社にSQL Serverに格納されたデータがあり、Warehouse Builder内にこのデータをインポートする必要があるとします。データをインポートした後、データ・プロファイリングを実行して異常を修正でき、またマッピングを使用し、条件に応じてデータを変換できます。

解決策

Warehouse Builderでは、Oracle以外のデータ・ソースに接続できます。接続後、Oracleのデータ・ソースからのインポートと同様にメタデータをインポートできます。

事例

SQL Serverへ接続してメタデータをインポートするには、次の各項を参照してください。

  1. ODBCデータ・ソースの作成

  2. Oracleデータベース・サーバーの構成

  3. Warehouse BuilderのソースとしてのSQL Serverの追加

  4. 必要なその他の手順

この解決策を実行して問題が発生した場合は、トラブルシューティングを参照してください。

ODBCデータ・ソースの作成

SQL Serverに接続するためにODBCデータ・ソースを作成する必要があります。これを実行するには、システムのデータ・ソース名(DSN)を設定する必要があります。

  1. 「スタート」「コントロール パネル」、「管理ツール」、「データ ソース (ODBC)」の順に選択します。

    これにより、「ODBC データ ソース アドミニストレータ」ダイアログ・ボックスが開きます。

  2. 「システム DSN」タブにナビゲートし、「追加」をクリックして「データ ソースの新規作成」ダイアログ・ボックスを開きます。

  3. データ・ソースを設定するドライバとして「SQL Server」を選択します。

  4. 「完了」をクリックして「SQL Server に接続するための新規データ ソースを作成する」ウィザードを開きます。

  5. 「名前」フィールドで、データ・ソースの名前を指定します。たとえばsqlsourceと指定します。

  6. 「サーバー」フィールドで、接続するサーバーを選択し、「次へ」をクリックします。

  7. オペレーティング・システム・レベルまたはサーバー・レベルのどちらで認証を行うかを指定します。「次へ」をクリックします。

  8. データベース・ファイルを選択して「次へ」をクリックします。

  9. 次の画面でデフォルト値をそのままにして、「完了」をクリックします。

  10. データ・ソースをテストして接続を検証します。

Oracleデータベース・サーバーの構成

次に、SQL Serverに接続するようにOracle Databaseを構成する必要があります。Warehouse Builderでは、この構成を使用してSQL Serverからメタデータを抽出できます。これを行うには次の2つの手順が必要になります。

異機種間サービス構成ファイルの作成

ORACLE_HOME¥hs¥adminディレクトリ内で異種ファイルを作成する必要があります。このファイルのネーミング規則は次のとおりです。

  • initで始まる必要があります

  • 拡張子.oraで終わる必要があります

  • 空白と特殊文字は使用できません

たとえば、ファイルにinitsqlserver.oraという名前を付けられます。

ファイルに次のように入力します。

HS_FDS_CONNECT_INFO = sqlsource
HS_FDS_TRACE_LEVEL = 0

ここで、sqlsourceは、ODBCデータ・ソースを作成中に指定したデータ・ソース名です。

listener.oraファイルの編集

listener.oraファイルに新規SIDの説明を追加する必要があります。このファイルはORACLE_HOME/network/adminディレクトリに格納されています。

次のようにファイルを変更します。

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = sqlserver)
      (ORACLE_HOME = c:\oracle10g\oracle_home)
      (PROGRAM = hsodbc)
    )
    (SID_DESC =
      (SID_NAME = PLSExtProc)
      (ORACLE_HOME = c:\oracle10g\oracle_home)
      (PROGRAM = extproc)
      )
  )

SID_NAMEパラメータには、前の手順で作成した構成ファイルの名前が含まれている必要があります。ただし、init接頭辞は含まれません。たとえば、前の手順で作成した構成ファイルがinitsqlserver.oraだった場合、SID_NAMEパラメータの値は、sqlserverとなる必要があります。

ORACLE_HOMEは、データベース・インストールのOracleホーム・ロケーションを示します。

PROGRAMキーワードに関連付けられた値により、実行可能なエージェントの名前を定義します。この場合、hsodbcです。

これらの変更を行った後、リスナー・サービスを再開します。

Warehouse BuilderのソースとしてのSQL Serverの追加

最後の手順では、Warehouse Builder内へのODBCモジュールの追加およびSQL Serverからこのモジュールへのデータのインポートが含まれます。

Warehouse Builder内にODBCソース・モジュールを追加する手順は、次のとおりです。

  1. プロジェクト・エクスプローラのプロジェクト内で、「データベース」、「Oracle以外」ノードにナビゲートします。

  2. 「ODBC」を右クリックし、「新規」を選択します。

  3. モジュールの作成ウィザードを使用して新規ODBCモジュールを作成します。

  4. モジュールの作成時、またはこのモジュールへのデータのインポート時のいずれかに、ソース・ロケーションの接続情報を指定できます。

  5. 「場所の編集」ダイアログ・ボックスで、二重引用符(")内にユーザー名およびパスワードを必ず入力します。たとえば、ユーザー名がmarkである場合は、"mark"と入力します。

  6. サービス名には、listener.oraファイルで指定したSID名を入力します。また、メタデータのインポート元とするスキーマを選択します。

メタデータをODBCモジュールへインポートする手順は、次のとおりです。

  1. モジュールを右クリックし、「インポート」を選択します。

  2. インポート・メタデータ・ウィザードを使用してメタデータをインポートします。

    インポートのために使用可能な表およびビューは、接続情報の指定時に選択したスキーマに応じて異なります。

必要なその他の手順

Warehouse Builder内にメタデータを正常にインポートした後、データ・プロファイリング機能を使用してデータの品質を確認します。または、データ・プロファイリングをスキップして、データを抽出、変換およびロードするためにマッピングの設計に進みます。

トラブルシューティング

接続情報の指定中に発生するエラーの一部を次に示します。

エラー

ORA-28500: connection from ORACLE to a non-Oracle system returned this message: 
[Generic Connectivity Using ODBC][Microsoft][ODBC Driver Manager] Data source name 
not found and no default driver specified (SQL State: IM002; SQL Code: 0)

ORA-02063: preceding 2 lines from OWB_###

原因

「User DSN」タブからのDSNの作成

アクション

「システム DSN」タブからDSNを作成します。

エラー

ORA-28500: connection from ORACLE to a non-Oracle system returned this message: 
[Generic Connectivity Using ODBC][Microsoft][ODBC SQL Server Driver][SQL 
Server]Login failed for user 'SA'. (SQL State: 28000; SQL Code: 18456)

ORA-02063: preceding 2 lines from OWB_###

原因

「場所の編集」ダイアログ・ボックス内のユーザー名およびパスワードは、二重引用符で囲まれていません。

アクション

二重引用符で囲まれたユーザー名およびパスワードを入力します。


ヒント:

listener.oraファイルに変更があった場合は、必ずリスナー・サービスを再開します。