web-dev-qa-db-ja.com

リンクサーバーに相当するOracleとは何ですか?SQL Serverに参加できますか?

SQL Serverでは、リンクサーバーを使用して、完全に異なるサーバーにある2つのテーブルを結合するビューを作成できます。サーバーの1つをSQL ServerからOracleに変更しても、同じようにできますか?

結合テーブルがOracleである必要があります

3
user116560

はい、できます。 Oracleでは、これは "Heterogeneous Connectivity"と呼ばれます このOracle管理マニュアル に詳細があります。基本的な概要は

  1. OracleサーバーにODBCドライバをインストールします
  2. SQL Server DBと通信するようにODBCを構成します(システムDSNを作成します)
  3. ODBCをテストする
  4. Global_Namesパラメーターをfalseに構成します。
  5. Initodbc.oraファイルを作成して異機種間サービスを構成する
  6. OracleとODBCドライバーの両方に接続するようにlistener.oraを変更します。
  7. TnsNames.oraファイルを変更する
  8. リスナーをリロードして、上記の変更を確認してください。
  9. OracleからODBC接続へのDBリンクを作成します。
  10. SQL Selectステートメントを使用してテストします。

この記事 は、上記の手順を詳細に実行するケースの例を紹介しています。

6
CaM

OracleデータベースからSQL Serverに接続できるようにデータベースリンクを作成する方法を次に示します。

私の既存の環境:

  • ODBCコンポーネントがインストールされているOracle Database GatewayでOracle 12cを実行しているWindowsサーバー。(確認するには、Oracle DBサーバーを確認します。%Oracle_HOME%\ BIN\dg4odbc.exeが存在する場合、データベースゲートウェイはおそらくすでにインストールされています。)Oracleインスタンスは組織内で機能しており、完全に機能しているため、重要なlistener.oraファイルとtnsnames.oraファイルが正しく構成されています。Select * from v$parameter where name = 'global_names'を実行して、値がfalseであることを確認しました。
  • microsoft SQL Serverを実行する別のWindowsサーバー。これは、私のOracle DBから接続したかったものです。 Oracleから接続するときに使用するように構成されたSQL Server認証ログイン(ユーザー名/パスワード)があり、照会したいSQL Serverデータベースへの必要なアクセス権があることを確認しました。

手順

  1. OracleデータベースをホストしているWindowsサーバーで、ODBC(64-bit)を開き、Microsoft SQL Serverを指すシステムDSNを作成しました。テストし、接続は成功しました。(ヒント:接続するデータベースを、このDSN接続のデフォルトデータベースとして設定します。これは、複数のデータベースがある場合、Oracleリンクからアクセスできるのはこのデータベースだけである場合があるためです。)
  2. ディレクトリ%Oracle_HOME%\ hs\admin \にinit ?????。oraというファイルを作成しました。ここで?????手順1で作成したシステムDSNの名前です。このファイルには次の行が含まれています。

    HS_FDS_CONNECT_INFO=<System DSN name>
    HS_FDS_TRACE_LEVEL=off
    
  3. %Oracle_HOME%\ NETWORK\ADMIN \にある私のlistener.oraファイルを編集しました。 (SID_LIST_LISTENER =(SID_LIST = ...内にネストされた一連のSID_DESCアイテムが既にありましたODBCシステムDSN:

    (SID_DESC =
    (PROGRAM = dg4odbc)
    (Oracle_HOME = <Oracle_HOMEへのパス>)
    (SID_NAME = <システムDSN名>)

  4. Tnsnames.oraファイルにエントリを作成しました(listener.oraと同じディレクトリにあります)。

    <この接続に付ける名前>>
    (説明=
    (ADDRESS =
    (PROTOCOL = TCP)
    (Host = localhost)
    (PORT = 1521)

    (CONNECT_DATA =(SID = <システムDSN名>))
    (HS = OK)

  5. SQL * PlusまたはSQL Developerで、データベースリンクを作成しました。これは、ターゲットSQLサーバーに接続するために必要な資格情報を入力した場所です。

    CREATE PUBLIC DATABASE LINK <Name of DB Link> CONNECT TO "user" IDENTIFIED BY "password" USING '<Name we gave the connection in tnsnames.ora>';
    
  6. 管理者特権のコマンドプロンプトを開き、lsnrctl stopを実行してからlsnrctl startを実行してOracleリスナーサービスを再起動しました(ユーザーが切断されている可能性がありますか?)

  7. SQL Developerを開き、現在リンクされているSQL Serverデータベースに対してクエリを実行してテストしました(アクセスに使用されたアカウントのアクセスによって制限されます)。

     SELECT * FROM SomeTable@<Name we gave link in Step 5>;
    

適切なOracleのドキュメントはここにあります: https://docs.Oracle.com/database/121/OTGIS/configodbc.htm#OTGIS11

0
Baodad