リモートデータベースにアクセスするために、Sql * PLUSをクラウドのOracle Linux環境にインストールしました。ここで回答として提供されているインストール手順を使用しました: https://stackoverflow.com/questions/23488394/how-to-install-sql-plus-client-in-linux
接続文字列は正しいが、エラーが発生する
_ERROR: ORA-12154: TNS:could not resolve the connect identifier specified
_
_tnsnames.ora
_を調べてこの問題を解決しようとしましたが、存在せず、_$Oracle_HOME
_に接続されているパスにサブフォルダー "_/network/admin/
_"がありませんでした。これを解決するために、両方のフォルダーを作成し、接続文字列を含む新しい_tnsnames.ora
_に_admin/
_ファイルを作成しました。残念ながら、まだ同じエラーが発生します。
新しい_tnsnames.ora
_ファイルのパス:_/usr/lib/Oracle/11.2/client64/network/admin/tnsnames.ora
_
参考までに、私の接続文字列は次のように構成されています。
_(DESCRIPTION=
(ADDRESS=(PROTOCOL=tcp)(Host= asdasdasd.com)(PORT=1524))
(CONNECT_DATA =
(SID = AARCER1)
)
)
_
そして私が私の端末に入れている私のコマンドは:sqlplus "userName/myPassword@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(Host=asdasdasd.com)(PORT=1524))(CONNECT_DATA=(SID=AARCER1)))"
このエラーを解決するにはどうすればよいですか?
sqlplus userName/myPassword@"(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(Host=asdasdasd.com)(PORT=1524))(CONNECT_DATA=(SID=AARCER1)))"
を使用する場合、_tnsnames.ora
_ファイルは必要ありません。
_tnsnames.ora
_ファイルのエントリは次のようになります。
_AARCER1 = (DESCRIPTION=
(ADDRESS=(PROTOCOL=tcp)(Host= asdasdasd.com)(PORT=1524))
(CONNECT_DATA =
(SID = AARCER1)
)
)
_
次に、コマンドを_sqlplus userName/myPassword@AARCER1
_に短縮できます。これが_tnsnames.ora
_の目的です。
_tnsnames.ora
_を使用するには、ファイル_sqlnet.ora
_も必要です。そこで、次のようなエントリが必要です。
_NAMES.DIRECTORY_PATH = (TNSNAMES)
_
ただし、デフォルト値はNAMES.DIRECTORY_PATH=(tnsnames, ldap, ezconnect)
であるため、実際にはスキップできます。
環境変数_TNS_ADMIN
_をこれらのファイルの場所に設定します。
_export TNS_ADMIN=/usr/lib/Oracle/11.2/client64/network/admin
_
EZ Connectメソッドを使用して、tnsnames.oraファイルを回避することもできます。
sqlplus scott/[email protected]:1524/<service name goes here>
Lsnrctl statusコマンドを実行すると、サービス名を取得できます。