Ben*_*Ben 0 oracle sqlplus sqlcl
我可以使用SQLDeveloper连接到远程数据库.
我试图从命令行使用sqlcl连接到同一个数据库,但我收到一个错误.
这是我正在运行的命令:
/bin/sql username/pass@delphix-vdb-n-1.va2.b2c.nike.com:1521/vdbsl14
Run Code Online (Sandbox Code Playgroud)
我也尝试过:
/bin/sql username/pass@//delphix.......etc.
Run Code Online (Sandbox Code Playgroud)
这是我收到的错误:
SQLcl: Release 4.2.0.16.131.1023 RC on Wed Jun 15 11:36:33 2016
Copyright (c) 1982, 2016, Oracle. All rights reserved.
USER = username
URL = jdbc:oracle:thin:@delphix-vdb-n-1.va2.b2c.nike.com:1521/vdbsl14
Error Message = Listener refused the connection with the following error:
ORA-12514, TNS:listener does not currently know of service requested in connect descriptor
Username? (RETRYING) ('username/*********@delphix-vdb-n-1.va2.b2c.nike.com:1521/vdbsl14'?)
Run Code Online (Sandbox Code Playgroud)
同样在SQLDeveloper中,我只是在"自定义jdbc url"下输入以下内容并且它连接没有任何问题,所以我希望我可以使用相同的URL通过命令行连接,但到目前为止,它无法正常工作:
jdbc:oracle:thin:@delphix-vdb-n-1.va2.b2c.nike.com:1521:vdbsl4
Run Code Online (Sandbox Code Playgroud)
看起来您的SID和服务名称不一样.在SQL Developer中,您似乎正在使用SID - 至少在您显示的自定义JDBC URL中 - 如冒号所示:vdbsl4.
您的SQLcl URL正在使用服务名称,如斜线所示/vdbsl14.改为使用SID(即在该URL中更改/ to :)应该可以正常工作,因为它使用的是JDBC:
sqlcl username/pass@delphix-vdb-n-1.va2.b2c.nike.com:1521:vdbsl14
Run Code Online (Sandbox Code Playgroud)
或者(最好在我看来)找出你的服务名称实际上是什么.如果您对数据库有足够的权限,可以show parameters service_names从SQL Devleoper执行,或者如果您可以作为DBA访问服务器lsnrctl services,甚至可以查看tnsnames.ora是否已定义显示服务名称的TNS别名.(listener.ora不太可能有所帮助,但可以给出提示,或者如果你幸运的话显示默认服务名称).
您可以在JDBC URL中使用该服务名称/service_name.
您还可以使用SQLcl(或SQL*Plus)中的TNS别名.你可能已经有了tnsnames.ora; 如果没有,您可以从服务器复制它,或创建自己的.这可以参考SID或服务名称.
您甚至可以将完整的TNS描述传递给SQL*Plus(不确定SQLcl),但这有点令人不快.如果你没有/想tnsnames.ora你可以使用"易连接"的语法,这是一样的,你正在使用的SQLcl -但有是服务名称,它不允许的SID.