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@[email protected] ;( I know, this one is not valid)
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)))'
これには easy connect を使用できます。
sqlplus usr/[email protected]/remote_service_name
マシンでeasy connectを有効にするには、それをsqlnet.oraのNAMES.DIRECTORY_PATH
に追加する必要があります。例:
NAMES.DIRECTORY_PATH=(EZCONNECT)
リスナーがデフォルト以外のポートにある場合は、[email protected]:port/...
を使用します。
実際には、SIDではなくサービス名を指定する必要があるようです。それらは同じである可能性がありますが、異なる場合はサーバーから取得する必要があります。
書き込み可能なディレクトリに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
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
ディレクトリ全体を置き換えます)が、システムレベルの構成のエントリを追加または変更しますファイル。ユーザーレベルの構成ファイルにエントリが存在する場合は、このエントリが使用されます。ユーザーレベルの構成ファイルに存在しない場合は、システムレベルの構成ファイルのエントリが使用されます。