ゲートウェイのインストール後、次のタスクを実行してOracle Database Gateway for SQL Serverを構成します。
次のタスクを実行して、ゲートウェイ初期化パラメータ・ファイルを構成します。
ゲートウェイ・システム識別子(SID)は、ゲートウェイ・インスタンスを識別する英数字の文字列です。アクセスするSQL Serverデータベースごとに、1つのゲートウェイ・インスタンスが(したがって1つのゲートウェイSIDが)必要です。SIDは、初期化パラメータ・ファイルのファイル名の一部に使用されます。デフォルトのSIDは、dg4msqlです。
任意のゲートウェイSIDを定義できますが、デフォルトのdg4msqlを使用する方が、初期化パラメータ・ファイルの名前を変更する必要がないため便利です。ただし、2つのSQL Serverデータベースにアクセスする場合は、ゲートウェイのインスタンスごとに1つずつ、合計2つのゲートウェイSIDが必要です。SQL Serverデータベースが1つのみ存在し、そのアクセスに使用するゲートウェイ・パラメータ設定のセットを状況に応じて使い分ける場合、単一のSQL Serverデータベースに対して複数のゲートウェイSIDが必要です。
初期化パラメータ・ファイルは、ゲートウェイの起動時に使用可能である必要があります。インストール時に、次のデフォルトの初期化パラメータ・ファイルが作成されます。
ORACLE_HOME\dg4msql\admin\initdg4msql.ora
ここで、ORACLE_HOMEは、ゲートウェイのインストール先のディレクトリです。
この初期化ファイルは、デフォルトのゲートウェイSID用です。ゲートウェイSIDとしてdg4msqlを使用していない場合、前の手順の「ゲートウェイ用のシステム識別子の選択」で指定したSIDを使用して初期化パラメータ・ファイルの名前を変更する必要があります。ゲートウェイの起動、インストールの成功の確認、およびデモ・スクリプトの実行用としては、このデフォルトの初期化パラメータ・ファイルで十分です。
複数の初期化パラメータを使用して、ゲートウェイの動作を変更できます。設定可能な初期化パラメータの完全なリストは、付録C「初期化パラメータ」を参照してください。初期化パラメータに加えた変更は、次のゲートウェイ・セッションまで反映されません。最も重要なパラメータは、Oracle以外のシステムに対する接続を記述するHS_FDS_CONNECT_INFOです。
デフォルトの初期化パラメータ・ファイルには、このパラメータのエントリがすでに含まれています。HS_FDS_CONNECT_INFOの構文は、次のとおりです。
HS_FDS_CONNECT_INFO= host_name/[instance_name][/database_name]
変数の意味は次のとおりです。
| 変数 | 説明 |
|---|---|
host_name |
SQL Serverデータベースをホストするマシンのホスト名またはIPアドレス。 |
instance_name |
マシンで稼働するSQL Serverのインスタンス。 |
database_name |
SQL Serverデータベースの名前。 |
instance_nameとdatabase_nameは両方ともオプションです。instance_nameを省略してdatabase_nameを指定する場合、スラッシュ(/)が必要です。つまり、次のようになります。
HS_FDS_CONNECT_INFO= host_name//database_name
|
関連項目: 初期化パラメータ・ファイルのカスタマイズの詳細は、付録C「初期化パラメータ」および『Oracle Database Heterogeneous Connectivity管理者ガイド』を参照してください。 |
ゲートウェイでは、Oracle Databaseと通信するためにOracle Netが必要です。ゲートウェイの構成後、次のタスクを実行して、ゲートウェイと連携動作するようにOracle Netを構成します。
Oracle Net Listenerは、Oracle Databaseからの着信リクエストをリスニングします。Oracle Net Listenerでゲートウェイをリスニングするためには、ゲートウェイに関する情報をOracle Net Listenerの構成ファイル(listener.ora)に追加する必要があります。このファイルのデフォルトの場所は、ORACLE_HOME\network\adminです(ORACLE_HOMEはゲートウェイのインストール先のディレクトリです)。
次のエントリをlistener.oraファイルに追加する必要があります。
Oracle Net ListenerがリスニングするOracle Netアドレスのリスト
Oracle Net Listenerが着信接続リクエストに応じて起動するゲートウェイの実行可能ファイルの名前
listener.oraエントリのサンプル(listener.ora.sample)は、ORACLE_HOME\dg4msql\adminディレクトリにあります(ORACLE_HOMEはゲートウェイのインストール先のディレクトリです)。
Oracle Databaseは、Oracle Netおよびサポートされている任意のプロトコル・アダプタを使用してゲートウェイと通信します。次に、TCP/IPプロトコル・アダプタを使用してOracle Net Listenerがリスニングするアドレスの構文を示します。
LISTENER=
(ADDRESS=
(PROTOCOL=TCP)
(HOST=host_name)
(PORT=port_number))
変数の意味は次のとおりです。
| 変数 | 説明 |
|---|---|
host_name |
ゲートウェイがインストールされているマシンの名前。 |
port_number |
Oracle Net Listenerにより使用されるポート番号。同じマシン上で稼働する他のリスナーが存在する場合、port_numberの値は、他のリスナーのポート番号とは異なる必要があります。 |
着信接続リクエストに応じてゲートウェイを起動するようOracle Net Listenerを構成するには、listener.oraファイルにエントリを追加します。
|
注意: listener.oraファイルと次の手順で構成するtnsnames.oraファイルで同じSID値を使用する必要があります。 |
SID_LIST_LISTENER=
(SID_LIST=
(SID_DESC=
(SID_NAME=gateway_sid)
(ORACLE_HOME=oracle_home_directory)
(PROGRAM=dg4msql)
)
)
変数の意味は次のとおりです。
| 変数 | 説明 |
|---|---|
gateway_sid |
ゲートウェイのSIDを指定します。tnsnames.oraファイルの接続記述子エントリで指定されたゲートウェイSIDと一致させます。 |
oracle_home_directory |
ゲートウェイの存在するOracleホーム・ディレクトリを指定します。 |
dg4msql |
Oracle Database Gateway for SQL Serverの実行可能ファイル名を指定します。 |
既存のOracle Net Listenerがすでに存在する場合、既存のlistener.oraファイルのSID_LISTに次の構文を追加します。
SID_LIST_LISTENER=
(SID_LIST=
(SID_DESC=.
.
)
(SID_DESC=.
.
)
(SID_DESC=
(SID_NAME=gateway_sid)
(ORACLE_HOME=oracle_home_directory)
(PROGRAM=dg4msql)
)
)
|
関連項目: listener.oraファイルの変更方法の詳細は、『Oracle Database Net Services管理者ガイド』を参照してください。 |
ゲートウェイを使用してSQL Serverデータにアクセスする前に、Oracle Databaseを構成してOracle Netを通じたゲートウェイとの通信を使用可能にする必要があります。
Oracle Databaseを構成するには、tnsnames.oraファイルに接続記述子を追加する必要があります。このファイルのデフォルトの場所は、ORACLE_HOME\network\adminです(ORACLE_HOMEはOracle Databaseのインストール先のディレクトリです)。tnsnames.oraファイルの構成にOracle Net AssistantやOracle Net Easy Configツールを使用することはできません。ファイルは手動で編集してください。
tnsnames.oraエントリのサンプル(tnsnames.ora.sample)は、ORACLE_HOME\dg4msql\adminディレクトリにあります(ORACLE_HOMEはゲートウェイのインストール先のディレクトリです)。
|
関連項目: tnsnames.oraファイルの編集方法の詳細は、『Oracle Database管理者ガイド』を参照してください。 |
tnsnames.oraファイルを編集してゲートウェイの接続記述子を追加します。次に、TCP/IPプロトコルを使用するOracle Netエントリの構文を示します。
connect_descriptor= (DESCRIPTION= (ADDRESS= (PROTOCOL=TCP) (HOST=host_name) (PORT=port_number) ) (CONNECT_DATA= (SID=gateway_sid)) (HS=OK))
変数の意味は次のとおりです。
| 変数 | 説明 |
|---|---|
connect_descriptor |
データベース・リンクの作成時に指定された接続先オブジェクトの記述(dg4msqlなど)。
Oracle Databaseの
注意: Oracle DatabaseがMicrosoft Windows上に存在する場合、このファイルは
|
TCP |
TCP/IP接続に使用されるTCPプロトコル。 |
host_name |
ゲートウェイが稼働しているマシンを指定します。 |
port_number |
ゲートウェイをリスニングしているOracle Net Listenerにより使用されるポート番号と一致させます。Oracle Net Listenerのポート番号は、Oracle Net Listenerにより使用されるlistener.oraファイルで確認できます。「listener.oraファイルのエントリの構文」を参照してください。 |
gateway_sid |
ゲートウェイのSIDを指定します。ゲートウェイをリスニングしているOracle Net Listenerのlistener.oraファイルで指定されたSIDと一致させます。詳細は、「ゲートウェイ用のOracle Net Listenerの構成」を参照してください。 |
(HS=OK) |
この接続記述子でOracle以外のシステムに接続することを指定します。 |
Oracle Databaseに接続されたすべてのOracleクライアントは、ゲートウェイを通じてSQL Serverデータにアクセスします。OracleクライアントとOracle Databaseは、異なるマシン上に存在できます。ゲートウェイは、Oracle Databaseからの接続のみを受け入れます。
ゲートウェイとの接続は、Oracleセッションでその接続が最初に使用されるときに、データベース・リンクを通じて確立されます。この場合の接続とは、Oracle Databaseとゲートウェイ間の接続を示します。接続は、Oracleセッションが終了するまで確立されたままとなります。別のセッションまたはユーザーが同じデータベース・リンクにアクセスし、ゲートウェイおよびSQL Serverデータベースに対する別個の接続を取得することも可能です。
データベース・リンクは、ゲートウェイ・セッションの継続時間中はアクティブです。セッション中にデータベース・リンクをクローズする場合は、ALTER SESSION文を使用します。
SQL Serverにアクセスするには、データベース・リンクを作成する必要があります。パブリック・データベース・リンクは、最も一般的なデータベース・リンクです。
SQL> CREATE PUBLIC DATABASE LINK dblink CONNECT TO 2 "user" IDENTIFIED BY "password" USING 'tns_name_entry';
変数の意味は次のとおりです。
| 変数 | 説明 |
|---|---|
dblink |
完全なデータベース・リンク名。 |
tns_name_entry |
ゲートウェイを識別するtnsnames.oraファイルのOracle Net接続記述子を指定します。 |
データベース・リンクの作成後に、次のようにSQL Serverデータベースへの接続を確認できます。
SQL> SELECT * FROM DUAL@dblink;
|
関連項目: データベース・リンクの使用方法の詳細は、『Oracle Database管理者ガイド』および『Oracle Database Heterogeneous Connectivity管理者ガイド』を参照してください。 |
ゲートウェイでは、次のトランザクション機能がサポートされます。
COMMIT_CONFIRM
READ_ONLY
SINGLE_SITE
トランザクション・モデルは、HS_TRANSACTION_MODEL初期化パラメータを使用して設定されます。デフォルトでは、ゲートウェイはCOMMIT_CONFIRMトランザクション・モードで実行されます。SQL Serverデータベースがトランザクションによって更新されると、ゲートウェイはコミット・ポイント・サイトになります。Oracle Databaseは、トランザクションに関連するすべてのOracle Databaseがトランザクションの準備に成功したことを確認してから、SQL Serverデータベースの作業ユニットをコミットします。Oracleの2フェーズ・コミット・トランザクションにコミット・ポイント・サイトとして参加できるのは、ただ1つのゲートウェイ・インスタンスのみです。
|
関連項目: 2フェーズ・コミット・プロセスの詳細は、『Oracle Database Heterogeneous Connectivity管理者ガイド』を参照してください。 |
COMMIT_CONFIRMトランザクション・モードを有効化するには、次のタスクを実行します。
HS_TRANSACTION_LOGというログ表に、2フェーズ・コミット・トランザクションが記録されます。
ゲートウェイで分散トランザクションをリカバリするには、SQL Serverデータベースでリカバリ・アカウントおよびパスワードを設定する必要があります。デフォルトでは、アカウントのユーザー名とパスワードの両方ともRECOVERです。アカウント名は、ゲートウェイ初期化パラメータHS_FDS_RECOVERY_ACCOUNTで変更できます。アカウント・パスワードは、ゲートウェイ初期化パラメータHS_FDS_RECOVERY_PWDで変更できます。
|
注意: デフォルト値のRECOVERは、ユーザー名とパスワードに使用しないことをお薦めします。また、ユーザー名とパスワードをプレーン・テキスト形式で初期化ファイルに格納することは、セキュリティ・ポリシー上問題があります。現在、暗号化に使用する必要のあるdg4pwdというユーティリティがあります。詳細は、『Oracle Database Heterogeneous Connectivity管理者ガイド』の4.2.3項「初期化パラメータの暗号化」を参照してください。 |
SQL Serverデータベースでユーザー・アカウントを設定します。ユーザー名とパスワードは、両方とも有効なSQL Serverユーザー名およびパスワードである必要があります。
初期化パラメータ・ファイルで、次のゲートウェイ初期化パラメータを設定します。
HS_FDS_RECOVERY_ACCOUNT: リカバリ用に設定するSQL Serverユーザー・アカウントのユーザー名を指定します。
HS_FDS_RECOVERY_PWD: リカバリ用に設定するSQL Serverユーザー・アカウントのパスワードを指定します。
|
関連項目: 初期化パラメータ・ファイルの編集方法の詳細は、「初期化パラメータ・ファイルのカスタマイズ」を参照してください。HS_FDS_RECOVERY_ACCOUNTおよびHS_FDS_RECOVERY_PWDの詳細は、付録C「初期化パラメータ」を参照してください。 |
2フェーズ・コミット用にゲートウェイを構成する場合、SQL Serverデータベースにトランザクション・ロギングのための表を作成する必要があります。ゲートウェイでは、このトランザクション・ログ表を使用して、ゲートウェイによりSQL Serverデータベースで開始され、表に登録された障害トランザクションのステータスを確認します。
|
注意: トランザクション・ログ表の更新は、Oracle分散トランザクションの一部にはなりません。 |
|
注意: トランザクション・ログ表の情報は、リカバリ・プロセスで必要とされるため、絶対に変更しないでください。この表は、ゲートウェイによってのみ使用、アクセスまたは更新される必要があります。 |
HS_TRANSACTION_LOGという表は、データ型CHAR(64) NOT NULLのGLOBAL_TRAN_ID列と、データ型CHAR(255)のTRAN_COMMENT列で構成されます。
ログ表にHS_TRANSACTION_LOG以外の名前を使用するには、HS_FDS_TRANSACTION_LOG初期化パラメータを使用して別の名前を指定します。
トランザクション・ログ表は、「リカバリ・アカウントおよびパスワードの作成」で作成したユーザー・アカウントで作成します。トランザクション・ログ表は、ゲートウェイ・トランザクションのステータスの記録に使用されるため、SQL Serverの更新処理が行われるデータベースに存在する必要があります。また、トランザクション・ログ表は、リカバリ・アカウントの所有者に対して作成される必要があります。
|
注意: トランザクション・ログ表を使用するには、その表に対する権限をゲートウェイのユーザーに付与する必要があります。 |
トランザクション・ログ表を作成するには、ORACLE_HOME\dg4msql\adminディレクトリ(ORACLE_HOMEはゲートウェイのインストール先のディレクトリ)にあるdg4msql_tx.sqlスクリプトを使用します。MS-DOSプロンプトでisqlを使用して次のようにスクリプトを実行します。
> isql -Urecovery_account -Precovery_account_password [-Sserver] -idg4msql_tx.sql
Oracleデータ・ディクショナリ変換サポートを有効化するには、$ORACLE_HOME/dg4msql/adminディレクトリ($ORACLE_HOMEはゲートウェイのインストール先のディレクトリ)にあるdg4msql_cvw.sqlスクリプトを使用します。ゲートウェイを通じてアクセスするSQL Serverデータベースごとにこのスクリプトを実行する必要があります。isqlを使用して次のようにスクリプトを実行します。
$ isql -Usa_user -Psa_pwd [-Sserver] [-ddatabase] -e -i dg4msql_cvw.sql
ここで、sa_userとsa_pwdは、それぞれSQL Serverのシステム管理者のユーザーIDおよびパスワードです。
ゲートウェイでは、ユーザーIDとパスワードを使用してリモート・データベースの情報にアクセスします。一部のユーザーIDおよびパスワードは、リソース・リカバリなどの機能を処理するためにゲートウェイ初期化ファイルに定義する必要があります。セキュリティを意識した現在の環境では、初期化ファイルでアクセス可能なプレーン・テキスト・パスワードは、セキュアではないとみなされます。セキュリティを向上するために、異機種間サービスの一部としてdg4pwd暗号化ユーティリティが追加されました。このユーティリティには、ゲートウェイからアクセスできます。機密値を含む初期化パラメータは、暗号化された形式で格納できます。
|
関連項目: このユーティリティの使用方法の詳細は、『Oracle Database Heterogeneous Connectivity管理者ガイド』を参照してください。 |
複数のSQL Serverデータベースにアクセスするためのゲートウェイの構成作業は、単一のデータベースを対象とするゲートウェイの構成作業とほぼ同じです。構成例の前提条件は次のとおりです。
ゲートウェイがデフォルトのSIDであるdg4msqlを使用してインストールおよび構成されていること
ゲートウェイがdb1という1つのSQL Serverデータベース用に構成されていること
IPアドレスが204.179.79.15であるホストにdb2およびdb3という2つのSQL Serverデータベースが追加されること
SQL Serverデータベースごとに1つのシステムIDを選択
SQL Serverデータベースごとにゲートウェイの個別のインスタンスが必要です。各インスタンスには、独自のゲートウェイ・システムID(SID)が必要です。この例では、SQL Serverデータベースにアクセスするインスタンスに対して次のゲートウェイSIDが選択されます。
dg4msql2(データベースdb2にアクセスするゲートウェイ用)
dg4msql3(データベースdb3にアクセスするゲートウェイ用)
2つの初期化パラメータ・ファイルの作成
ゲートウェイのインスタンスごとに初期化パラメータ・ファイルを作成するため、元の初期化パラメータ・ファイルORACLE_HOME\dg4msql\admin\initdg4msql.oraを2回コピーします。次のように、1つのファイルにはdb2のゲートウェイSIDを含む名前を付け、もう1つのファイルにはdb3のゲートウェイSIDを含む名前を付けます。
> cd ORACLE_HOME\dg4msql\admin > copy initdg4msql.ora initdg4msql2.ora > copy initdg4msql.ora initdg4msql3.ora
各新規ファイルのHS_FDS_CONNECT_INFOパラメータの値を変更します。
initdg4msql2.oraでは、次のように入力します。
HS_FDS_CONNECT_INFO=204.179.79.15//db2
initdg4msql3.oraでは、次のように入力します。
HS_FDS_CONNECT_INFO=204.179.79.15//db3
|
注意: 状況に応じて異なるゲートウェイ・パラメータ設定を使用するために、同じSQL Serverデータベースに対して複数のゲートウェイSIDを割り当てる場合も、同じ手順に従ってください。それぞれ異なるSIDと異なるパラメータ設定を持つ複数の初期化パラメータ・ファイルを作成します。 |
Oracle Net Listener構成ファイルlistener.oraに、2つの新規エントリを追加します。複数のゲートウェイ・インスタンスで同じデータベースにアクセスする場合でも、ゲートウェイ・インスタンスごとに1つのエントリを用意する必要があります。
次の例では、最初にインストールされた元のゲートウェイ用のエントリの次に、新規エントリが続いています。
SID_LIST_LISTENER=
(SID_LIST=
(SID_DESC=
(SID_NAME=dg4msql)
(ORACLE_HOME=oracle_home_directory)
(PROGRAM=dg4msql)
)
(SID_DESC=
(SID_NAME=dg4msql2)
(ORACLE_HOME=oracle_home_directory)
(PROGRAM=dg4msql)
)
(SID_DESC=
(SID_NAME=dg4msql3)
(ORACLE_HOME=oracle_home_directory)
(PROGRAM=dg4msql)
)
)
ここで、oracle_home_directoryは、ゲートウェイが存在するディレクトリです。
次の手順を実行してください。
「スタート」メニューで、「設定」→「コントロール パネル」→「サービス」を選択します。
ゲートウェイ用のOracle Net Listenerサービスを選択します。
「停止」をクリックします。
「開始」をクリックします。
tnsnames.oraファイルに2つの接続記述子エントリを追加します。複数のゲートウェイ・インスタンスで同じデータベースにアクセスする場合でも、ゲートウェイ・インスタンスごとに1つのエントリを用意する必要があります。
この例では、複数のゲートウェイ・インスタンス用にOracle DatabaseでOracle Netを構成する方法について説明します。次の例では、最初にインストールされた元のゲートウェイ用のエントリの次に、新規ゲートウェイ・インスタンス用の2つのエントリが続いています。
old_db_using=(DESCRIPTION= (ADDRESS= (PROTOCOL=TCP) (PORT=port_number) (HOST=host_name)) (CONNECT_DATA= (SID=dg4msql)) (HS=OK)) new_db2_using=(DESCRIPTION= (ADDRESS= (PROTOCOL=TCP) (PORT=port_number) (HOST=host_name)) (CONNECT_DATA= (SID=dg4msql2)) (HS=OK)) new_db3_using=(DESCRIPTION= (ADDRESS= (PROTOCOL=TCP) (PORT=port_number) (HOST=host_name)) (CONNECT_DATA= (SID=dg4msql3)) (HS=OK))
PORTの値は、ゲートウェイをリスニングしているOracle Net ListenerのTCP/IPポート番号です。この番号は、Oracle Net Listenerにより使用されるlistener.oraファイルで確認できます。HOSTの値は、ゲートウェイが稼働しているマシンの名前です。この名前も、Oracle Net Listenerにより使用されるlistener.oraファイルで確認できます。
次のように入力してdg4msql2ゲートウェイ用のデータベース・リンクを作成します。
SQL> CREATE PUBLIC DATABASE LINK MSQL2 CONNECT TO 2 "user2" IDENTIFIED BY "password2" USING 'new_db2_using';
次のように入力してdg4msql3ゲートウェイ用のデータベース・リンクを作成します。
SQL> CREATE PUBLIC DATABASE LINK MSQL3 CONNECT TO 2 "user3" IDENTIFIED BY "password3" USING 'new_db3_using';
データベース・リンクの作成後に、次のように新規SQL Serverデータベースへの接続を確認できます。
SQL> SELECT * FROM ALL_USERS@MSQL2;
SQL> SELECT * FROM ALL_USERS@MSQL3;