Sql*Plus 错误:ORA-12154:TNS:无法解析指定的连接标识符

bec*_*kah 7 oracle oracle-11g sqlplus

我在云 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,但它不存在,并且连接到我的路径$ORACLE_HOME没有子文件夹“ /network/admin/”。为了解决这个问题,我创建了两个文件夹并tnsnames.ora在 newadmin/中创建了一个包含我的连接字符串的文件。不幸的是,我仍然遇到同样的错误。

我的新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)
    )
  )
Run Code Online (Sandbox Code Playgroud)

我输入终端的命令是: sqlplus "userName/myPassword@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=asdasdasd.com)(PORT=1524))(CONNECT_DATA=(SID=AARCER1)))"

我应该怎么做才能解决这个错误?

Wer*_*eit 7

当您使用时,您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)
    )
  )
Run Code Online (Sandbox Code Playgroud)

然后您可以将命令缩短为sqlplus userName/myPassword@AARCER1- 这就是tnsnames.ora.

为了使用tnsnames.ora你还必须有文件sqlnet.ora. 在那里你需要一个这样的条目:

NAMES.DIRECTORY_PATH = (TNSNAMES)
Run Code Online (Sandbox Code Playgroud)

但是,默认值为NAMES.DIRECTORY_PATH=(tnsnames, ldap, ezconnect),因此实际上您可以跳过它。

将环境变量设置TNS_ADMIN为这些文件的位置,即

export TNS_ADMIN=/usr/lib/oracle/11.2/client64/network/admin
Run Code Online (Sandbox Code Playgroud)