web-dev-qa-db-ja.com

SQL Server 2014とOracle 12c間の接続を段階的に確立する

2つのサーバーがあります(両方のサーバーがWindows OS上にあります)。

  1. Server_A Oracle 12cの実行
  2. Server_B SQL Server 2014の実行

これらのサーバーがお互いを参照できるようにしたいので、Server_AからServer_B およびその逆。

I only SELECTクエリ(INSERT、UPDATE、DELETE、またはDDLクエリではない)を実行する機能、および可能であればプロシージャを実行する機能も必要です。

この問題を解決するために私たちが持っているオプションやテクノロジーはどれですか、どちらが優れていますか?

インストールする必要のあるソフトウェアまたは構成を各サーバーに設定する必要があるかどうかを教えてください。
手順を段階的に説明していただければ幸いです。

2
SajjaD

部分的な答え(OracleからSQL Serverテーブルを選択):

Oracle側では、SQL Serverでデータを表示するためのデータベースリンクを作成できます。これは5ステップのプロセスであるため、SQL Serverからのdbリンクを診断するときに使用するいくつかのデバッグステップも含めて、失敗の場所を追跡します。

Oracleマシン上:

1)SQL ServerへのODBC接続をセットアップします

開始=>コントロールパネル=>管理ツール=>データソース(ODBC)=>システムDSN =>追加=> SQL Server)

デバッグ:ODBC接続ウィンドウからテスト接続ボタンを押します

2)ODBC connectionを指すHSファイルを作成します

%Oracle_home%\ hs\adminで、init<name>.oraという新しいファイルを作成します。通常のHSファイルには通常、次のものが含まれます。

HS_FDS_CONNECT_INFO = <name of the ODBC connection name>
HS_FDS_TRACE_LEVEL = OFF

デバッグ:HS_FDS_TRACE_LEVEL = ONを変更してから、%Oracle_home%\ hs\traceで適切なトレースファイルを確認します。

3)リスナーにエントリを追加します.ora

SID_LIST_LISTENERにすでにSID_DESCが存在する場合は、そのすぐ下に新しいSID_DESCを追加できます。

SID_LIST_LISTENER =
  (SID_LIST=
    (SID_DESC=
      (SID_NAME=...)
      (Oracle_HOME=...)
      (PROGRAM=...)
    )
    (SID_DESC=
      (SID_NAME=<name of the ODBC connection>)
      (Oracle_HOME=<full path for oracleHome>)
      (PROGRAM=dg4odbc)
    )
  )

デバッグ:リスナーログを確認する

c:> lsnrctl reload

4)TNSEntryを追加します

<Name> =
   (DESCRIPTION=
      (ADDRESS=(PROTOCOL=TCP)(Host=<Host>)(PORT=<port>))
      (CONNECT_DATA= (SID=<ODBC connection name>))
      (HS=OK)
   )

デバッグc:\> tnsping <tns entry name>

5)dbリンクを作成します

create database link <name> connect to DUMMY identified by " " using '<tns entry name>';

デバッグ:SQL> select * from dual@<dblinkname>;

10gより前では、単純にcreate database link <name> using '<tns entry>';を使用できましたが、入力したものが何も使用されない場合でも、connect as identified byセクションが11g以降で必須になりました(=でSQL Serverのログイン認証情報を使用するため) ODBC接続)。

少し古いですが、このプロセスを学習していたときに、次のチュートリアルが非常に役立つことがわかりました: SQLServer用のOracle異機種間サービスのインストールと構成

データベースリンクが機能するようになったら、Oracle側でSQL Serverテーブル上にビュー/シノニム/マテリアライズドビュー(完全更新のみ)を作成して、アクセスを容易にします。

他の方法(SQL ServerからOracleのデータを表示する方法)については、私はOracle DBAなので、確信が持てません...

3
Kris Johnston