我正在尝试使用此连接格式连接到公司数据库
sqlplus user/pass@url:1521/dbname
我得到
ORA-12514: TNS:listener does not currently know of service requested in connect descriptor
这与我使用 Toad 连接到数据库并查询数据库时使用的连接字符串相同。我究竟做错了什么?
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
目录中。