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