如何使用 SQLPlus 成功连接到我的 Oracle 数据库

How can I connect successfully to my Oracle Database using SQLPlus

我一直在尝试使用 SQLPlus 打开我的计算机和 Oracle 数据库之间的连接。

我正在使用命令:

sqlplus USERNAME@server.domain.com:4075/DBNAME.WORLD

它不断返回:

TNS:could not resolve the connect identifier specified

tnsnames.ora 包含:

DBNAME.WORLD =
 (DESCRIPTION =
   (ADDRESS_LIST =
     (ADDRESS = (PROTOCOL = TCP)(HOST = server.domain.com))(PORT = 4075))
   )
(CONNECT_DATA =
  (SID = DBNAME)
  (SRVR = DEDICATED)
 )
)

我正在使用雇主提供的 sqlnet 文件:

AUTOMATIC_IPC = OFF
TRACE_LEVEL_SERVER = OFF
TRACE_LEVEL_CLIENT = OFF
SQLNET.EXPIRE_TIME = 0
NAMES.DEFAULT_DOMAIN = world
NAME.DEFAULT_ZONE = world
SQLNET.CRYPTO_SEED = "ENCRYPTIONSEED"
SQLNET.ENCRYPTION_CLIENT = REJECTED
SQLNET.ENCRYPTION_TYPES_CLIENT = (DES40)
SQLNET.ENCRYPTION_SERVER = REJECTED
SQLNET.ENCRYPTION_TYPES_SERVER = (DES40)
SQLNET.CRYPTO_CHECKSUM_CLIENT = REJECTED
SQLNET.CRYPTO_CHECKSUM_TYPES_CLIENT = (MD5)
SQLNET.CRYPTO_CHECKSUM_SERVER = REJECTED
SQLNET.CRYPTO_CHECKSUM_TYPES_SERVER = (MD5)
NAMES.DIRECTORY_PATH = (TNSNAMES)
SQLNET.AUTHENTICATION_SERVICES = (BEQ,NONE)

如何解决此 "could not resolve the connect identifier" 错误并打开与我的 Oracle 数据库的连接?

如果您的 tnsnames.ora 文件中有该条目,则无需再次提及服务器名称和端口。

这就足够了 -

sqlplus USERNAME@DBNAME.WORLD

(如果你想让它提示输入密码)

或者你可以按照 OldProgrammer 在评论中所说的那样做,如果可以使用纯文本形式的密码。

虽然其他人关于您应该如何连接是正确的:

sqlplus USERNAME@DBNAME.WORLD

也可以选择在命令行上使用密码,您的 tnsnames.ora 文件也有问题,这将导致您仍然得到 ORA-12154: TNS:could not resolve the connect identifier specified.

您的 connect_data 行没有缩进,which is invalidating the whole file。无论如何,缩进有助于理解文件,但在这里至关重要:

Any keyword in a configuration file that begins a parameter that includes one or more keyword-value pairs must be in the far left column of a line. If it is indented by one or more spaces, then it is interpreted as a continuation of the previous line.

因此请确保与别名相关的行都在其下方缩进,只有别名在行首开始。

在主机 key/value 对之后还有一个额外的右括号,即使文件缩进正确,这也会导致该错误。

DBNAME.WORLD =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = server.domain.com)(PORT = 4075))
    )
    (CONNECT_DATA =
      (SID = DBNAME)
      (SERVER = DEDICATED)
    )
  )