sqlplusを使用して、独自のtnsnames.oraを変更せずに別のホストにあるOracleデータベースに接続する方法


80

sqlplusを使用して、別のホストにあるOracleデータベースに接続したい。このページでは、tnsnamesにアイテムを追加して、そのデータベースに接続することを提案しました

local_SID =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL= TCP)(Host= hostname.network)(Port= 1521))
    (CONNECT_DATA = (SID = remote_SID))
  )

そして、それをsqlplusで使用します

sqlplus user/pass@local_SID

ただし、私の状況では、ローカルtnsnamesを変更することはできません。tnsnamesを変更せずにsqlplus引数を使用するだけでリモートデータベースに接続できますか?何かのようなもの

sqlplus user/pass@remote_SID@hostname.network ;( I know, this one is not valid)

1
さらに短く

@GlennLong-しかし、あなたのバージョンでdatabaseは、まだTNSエイリアスtnsnames.oraです。
アレックスプール14

回答:


85
 sqlplus user/pass@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(Host=hostname.network)(Port=1521))(CONNECT_DATA=(SID=remote_SID)))

たぶん、これは使用しているコマンドライン環境に依存する可能性がありますので、文字列を引用符で囲む必要があります。

 sqlplus "user/pass@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(Host=hostname.network)(Port=1521))(CONNECT_DATA=(SID=remote_SID)))"

または

 sqlplus 'user/pass@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(Host=hostname.network)(Port=1521))(CONNECT_DATA=(SID=remote_SID)))'

35

これには簡単な接続を使用できます。

sqlplus usr/pass@hostname.network/remote_service_name

マシンで簡単に接続できるようにするにはNAMES.DIRECTORY_PATH 、sqlnet.ora に追加する必要があります。例:

NAMES.DIRECTORY_PATH=(EZCONNECT)

リスナーがデフォルト以外のポートにある場合は、を使用します...@hostname.network:port/...

実際、SIDではなくサービス名を指定する必要があるようです。同じかもしれませんが、そうでない場合はサーバーから取得する必要があります。


1
サービス名がホスト名と同じ場合、接続時にサービス名を指定する必要さえありません。(実際にはだれもこれを行いませんが、知っておくといい
でしょう

リンク切れ.......
Harvey

1
@Harvey-更新、ありがとう。
アレックスプール

17

書き込み可能なディレクトリにtnsnames.oraファイルのコピーを作成し、それに応じてファイルを変更してから、TNS_ADMIN環境変数をそのディレクトリの場所に設定します。

例えば:

cp $ORACLE_HOME/network/admin/tnsnames.ora /tmp/tnsnames.ora
# edit the /tmp/tnsnames.ora file to add your entries

# Set the $TNS_ADMIN environment variable so that sqlplus knows where to look 
export TNS_ADMIN=/tmp

2
これは非常に、非常に良好な応答である
アンドリュー・スレッジ

このアプローチは、sqlplusクライアント以外にOracleインフラストラクチャがインストールされていないシステムで機能します。dbサーバーからtnsnames.oraをコピーし、Philのプロセスに従ってください。
theRiley

3

Unix / Linuxシステムでは、ユーザーレベルの構成ファイルを使用してシステムレベルのエントリを上書きできます。

システムレベルのユーザーレベル 
構成ファイル構成ファイル
------------------ -------------------
sqlnet.ora $ HOME / .sqlnet.ora
tnsnames.ora $ HOME / .tnsnames.ora

システムレベルの設定ファイルは、ディレクトリにあり$TNS_ADMINます。変数TNS_ADMINが設定されていない場合、ディレクトリで検索され$ORACLE_HOME/network/adminます。

ユーザーレベルの構成ファイルは、システムレベルの構成ファイル全体を置き換えません(TNS_ADMINディレクトリがディレクトリ全体を置き換えるため$ORACLE_HOME/network/admin)が、システムレベルの構成ファイルのエントリを追加または変更します。エントリがユーザーレベルの構成ファイルに存在する場合、このエントリが使用されます。ユーザーレベルの構成ファイルに存在しない場合は、システムレベルの構成ファイルのエントリが使用されます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.