Warehouse Builderでは、Microsoft製品を使用して格納されたデータを取得できます。この章では、Microsoft ExcelおよびMicrosoft SQL Serverをソースとして利用する方法について説明します。
シナリオ
ある会社は、employees.xls
というExcelファイルに従業員データを格納しています。このファイルには、employee_details
とjob_history
という2つのワークシートが含まれています。employee_details
ワークシートから、Warehouse Builder内のターゲット表にデータをロードする必要があります。
解決策
Excelファイルに格納されたデータをターゲット表にロードするには、最初にソースとしてExcelファイルを使用する必要があります。Warehouse Builderにより、Oracle Databaseの異機種間サービス・コンポーネントを使用して、Microsoft ExcelのようなOracle以外のソースに格納されたデータを取得できます。
図9-1では、Oracle Databaseにより、異機種間サービスを使用してリモートのOracle以外のソースにアクセスする方法を示します。
データベース内の異機種間サービス・コンポーネントは異機種間サービス・エージェント・プロセスと通信します。次に、エージェント・プロセスはリモート・データベースと通信します。
エージェント・プロセスはエージェント汎用コードおよびシステム固有のドライバで構成されます。すべてのエージェントには同じエージェント汎用コードが含まれます。ただし、各エージェントでは、取得されるデータのタイプによって異なるドライバを所有します。
この事例では、Warehouse Builder内でソースとしてemployees.xls
というExcelファイルを使用する方法を示します。
手順1: Excel用ODBCドライバのインストール
Microsoft Excelからデータを読み込むには、Excel用ODBCドライバを事前にインストールする必要があります。
手順2: Excelファイル内のデータの区切り
Excelファイルからデータを取得するには、取得するデータの範囲の名前を定義します。
employee_details
ワークシートで、Oracleから問い合せる範囲をハイライト表示します。
範囲には列名およびデータが含まれている必要があります。列名がOracle Database内の列のネーミングのルールに従っていることを確認します。
「挿入」メニューから、「名前」、「定義」の順に選択します。「名前の定義」ダイアログ・ボックスが表示されます。範囲の名前を指定します。
手順3: システムDSNの作成
Microsoft ODBC Administratorを使用して、システム・データ・ソース名(DSN)を設定します。
「スタート」、「設定」、「コントロール パネル」、「管理ツール」、「データ ソース (ODBC)」を選択します。
これにより、「ODBC データ ソース アドミニストレータ」ダイアログ・ボックスが開きます。
「システム DSN」タブにナビゲートし、「追加」をクリックして「データ ソースの新規作成」ダイアログ・ボックスを開きます。
データ・ソースを設定するドライバとして「Microsoft Excel Driver」を選択します。
「完了」をクリックすると、図9-2に示すように、「ODBC Microsoft Excel セットアップ」ダイアログ・ボックスが開きます。
データ・ソースの名前を指定します。たとえば、odbc_excel
と指定します。
「ブックの選択」をクリックしてデータのインポート元のExcelファイルを選択します。
「バージョン」フィールドにソースのExcelファイルのバージョンが正確にリストされていることを確認します。
手順4: 異機種間サービス初期化ファイルの作成
エージェントを構成するには、異機種間サービス初期化ファイル内の初期化パラメータを設定する必要があります。各エージェントには、独自の異機種間サービス初期化ファイルがあります。異機種間サービス初期化ファイルの名前は、init
SID
.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) ) )
SID_NAME
パラメータでは、異機種間サービス用の初期化パラメータ・ファイルの作成時に指定したSID
を使用します。この場合は、excelsid
です。
ORACLE_HOME
パラメータ値が、Oracle Databaseホーム・ディレクトリへのパスであることを確認します。
PROGRAM
キーワードに関連付けられた値は、実行可能なエージェントの名前です。
これらの変更を行った後、リスナーを必ず再開します。
注意: 初期化パラメータGLOBAL_NAMES が、データベースの初期化パラメータ・ファイル内でFALSE に設定されていることを確認します。FALSEはこのパラメータのデフォルト設定です。 |
手順6: ODBCソース・モジュールの作成
次の手順に従い、ODBCソース・モジュールを作成します。
プロジェクト・エクスプローラからODBCソース・モジュールを作成します。
ナビゲーション・ツリーには、「データベース」ノードの下の「Oracle以外」ノード内にODBCがリストされます。
モジュールの作成時、またはこのモジュールへのデータのインポート時のいずれかに、ソース・ロケーションの接続情報を指定できます。
モジュールの作成中に接続情報を指定するには、接続情報ページで、「編集」をクリックして次の詳細を提供します。
指定したサービス名が、listener.ora
ファイル内で指定したSID_NAME
と同一であることを確認します。
「ホスト名」フィールドおよび「ポート番号」フィールドを別々に使用してホスト名およびポート番号を指定します。
Oracle databaseに接続中ではないため、ユーザー名およびパスワードに対して仮の値を指定できます。フィールドを空にできません。
スキーマからはデータをインポートしていないため、「スキーマ」フィールドは空のまま残すことができます。
手順7: メタデータのインポート・ウィザードを使用したExcelからのメタデータのインポート
メタデータのインポート・ウィザードを使用してExcelファイルからWarehouse Builderへメタデータをインポートします。「フィルタ条件」として「表」を使用します。このウィザードにより、使用可能なオブジェクトのリストにある「表」ノードの下のソースのExcelファイル内のすべてのワークシートが表示されます。
「employee_details」を選択し、右矢印を使用して選択済オブジェクトのリストにこれを移動します。
「終了」をクリックしてデータをインポートします。
employee_detailsワークシートからのデータは、ODBCソース・モジュール内のemployee_details
という表に格納されます。
手順8: ターゲット表にデータをロードするためのマッピングの作成
Warehouse Builderコンソールで、ターゲット表を含むモジュールを開きます。ソースとしてODBCソース・モジュール内のemployee_details
という表を使用し、ターゲット表にデータをロードします。図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
内のinit
SID
.ora
ファイルの名前の不一致。
アクション
initSID.ora
ファイルの名前と、listener.ora
ファイル内のSID_NAME
パラメータに指定された値が同じであることを確認します。
ヒント: listener.ora ファイルに変更があった場合は必ずリスナー・サービスを再開してください。 |
シナリオ
会社にSQL Serverに格納されたデータがあり、Warehouse Builder内にこのデータをインポートする必要があるとします。データをインポートした後、データ・プロファイリングを実行して異常を修正でき、またマッピングを使用し、条件に応じてデータを変換できます。
解決策
Warehouse Builderでは、Oracle以外のデータ・ソースに接続できます。接続後、Oracleのデータ・ソースからのインポートと同様にメタデータをインポートできます。
事例
SQL Serverへ接続してメタデータをインポートするには、次の各項を参照してください。
この解決策を実行して問題が発生した場合は、トラブルシューティングを参照してください。
SQL Serverに接続するためにODBCデータ・ソースを作成する必要があります。これを実行するには、システムのデータ・ソース名(DSN)を設定する必要があります。
「スタート」、「コントロール パネル」、「管理ツール」、「データ ソース (ODBC)」の順に選択します。
これにより、「ODBC データ ソース アドミニストレータ」ダイアログ・ボックスが開きます。
「システム DSN」タブにナビゲートし、「追加」をクリックして「データ ソースの新規作成」ダイアログ・ボックスを開きます。
データ・ソースを設定するドライバとして「SQL Server」を選択します。
「完了」をクリックして「SQL Server に接続するための新規データ ソースを作成する」ウィザードを開きます。
「名前」フィールドで、データ・ソースの名前を指定します。たとえばsqlsource
と指定します。
「サーバー」フィールドで、接続するサーバーを選択し、「次へ」をクリックします。
オペレーティング・システム・レベルまたはサーバー・レベルのどちらで認証を行うかを指定します。「次へ」をクリックします。
データベース・ファイルを選択して「次へ」をクリックします。
次の画面でデフォルト値をそのままにして、「完了」をクリックします。
データ・ソースをテストして接続を検証します。
次に、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
ファイルに新規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内へのODBCモジュールの追加およびSQL Serverからこのモジュールへのデータのインポートが含まれます。
Warehouse Builder内にODBCソース・モジュールを追加する手順は、次のとおりです。
プロジェクト・エクスプローラのプロジェクト内で、「データベース」、「Oracle以外」ノードにナビゲートします。
「ODBC」を右クリックし、「新規」を選択します。
モジュールの作成ウィザードを使用して新規ODBCモジュールを作成します。
モジュールの作成時、またはこのモジュールへのデータのインポート時のいずれかに、ソース・ロケーションの接続情報を指定できます。
「場所の編集」ダイアログ・ボックスで、二重引用符(")内にユーザー名およびパスワードを必ず入力します。たとえば、ユーザー名がmarkである場合は、"mark"と入力します。
サービス名には、listener.ora
ファイルで指定したSID名を入力します。また、メタデータのインポート元とするスキーマを選択します。
メタデータをODBCモジュールへインポートする手順は、次のとおりです。
モジュールを右クリックし、「インポート」を選択します。
インポート・メタデータ・ウィザードを使用してメタデータをインポートします。
インポートのために使用可能な表およびビューは、接続情報の指定時に選択したスキーマに応じて異なります。
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 ファイルに変更があった場合は、必ずリスナー・サービスを再開します。 |