0

我正在尝试使用此连接格式连接到公司数据库

sqlplus user/pass@url:1521/dbname

我得到

ORA-12514: TNS:listener does not currently know of service requested in connect descriptor

这与我使用 Toad 连接到数据库并查询数据库时使用的连接字符串相同。我究竟做错了什么?

4

1 回答 1

0

Easy Connect 格式只接受服务名称,而不接受 SID。从文档中:

这种命名方法为数据库提供了开箱即用的 TCP/IP 连接。除了数据库的主机名外,它还允许客户端使用可选的端口和服务名连接到数据库服务器,从而扩展了主机命名方法的功能:

CONNECT username@[//]host[:port][/[service_name][:server]][/instance_name]]
Enter password: password

连接标识符转换为以下连接描述符:

(DESCRIPTION= 
  (ADDRESS=(PROTOCOL=tcp)(HOST=host)(PORT=port))
  (CONNECT_DATA=
    (SERVICE_NAME=service_name)
    (SERVER=server)
    (INSTANCE_NAME=instance_name)))

如果dbname在您最初的尝试中代表 SID,那么您将需要找出服务名称。您可以从lsnrctl services服务器上获取它,或者select value from v$parameter where name = 'service_names'(如果您有权限),或者从 SQL*Plus 获取show parameter service_names,但如果您无法连接到 SQL*Plus,这并不能真正帮助您……如果 Toad 正在使用一个 TNS 别名,那么它也可能在您的tnsnames.ora目录中。

于 2013-05-01T16:07:05.447 回答