Oracle

Sql*Plus 錯誤:ORA-12154:TNS:無法解析指定的連接標識符

  • February 21, 2018

我在雲 Oracle Linux 環境上安裝了 Sql*PLUS,以便訪問遠端數據庫。我在這裡使用提供的安裝說明作為答案:https ://stackoverflow.com/questions/23488394/how-to-install-sql-plus-client-in-linux

我的連接字元串是正確的,但我得到了錯誤

ERROR: ORA-12154: TNS:could not resolve the connect identifier specified

我嘗試通過查看 my 來解決此問題tnsnames.ora,但它不存在並且連接到 my 的路徑$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/tiger@asdasdasd.com:1524/<service name goes here>

您可以通過執行 lsnrctl status 命令獲取服務名稱。

引用自:https://dba.stackexchange.com/questions/95698