2つのサーバーがあります(両方のサーバーがWindows OS上にあります)。
Server_A
Oracle 12cの実行Server_B
SQL Server 2014の実行これらのサーバーがお互いを参照できるようにしたいので、Server_A
からServer_B
およびその逆。
I only SELECTクエリ(INSERT、UPDATE、DELETE、またはDDLクエリではない)を実行する機能、および可能であればプロシージャを実行する機能も必要です。
この問題を解決するために私たちが持っているオプションやテクノロジーはどれですか、どちらが優れていますか?
インストールする必要のあるソフトウェアまたは構成を各サーバーに設定する必要があるかどうかを教えてください。
手順を段階的に説明していただければ幸いです。
部分的な答え(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なので、確信が持てません...