如何使用SQLcl和SQLPlus连接到Oracle数据库,但没有TNSNames.ORA文件?

tha*_*ith 3 oracle tnsnames sqlplus sqlcl

你有:

  1. 一个Oracle数据库
  2. Oracle客户端安装,包括SQL*Plus
  3. #1的TNS信息
  4. 但没有TNSNames.ORA文件或创建和维护一个文件的愿望

你怎么能得到你的SQL*Plus连接?

tha*_*ith 5

sqlplus user/password@(description=(address_list=(address=.......ODS))) 
Run Code Online (Sandbox Code Playgroud)

()中的文本是您在TNSNames文件中为服务看到的信息.因此,您可以明确地使用TNS条目

注意,如果在Unix中使用引号,则shell会解释().

或者你可以使用EZconnect语法(我的首选方法)

sqlplus user/password@//hostname/service_name 

sqlplus user/password@//hostname:port/service_name 
Run Code Online (Sandbox Code Playgroud)

请注意,对于Oracle Database 12/18c多租户体系结构数据库,如果要连接到可插拔数据库,则必须使用/ service_name而不是/ SID.

另请注意,我们现在有2个命令行界面.

SQL*Plus和SQLcl.

SQLcl是基于Java的,是Oracle SQL Developer的精简版本.它支持基于TNS的连接,并且还支持EZConnect语法.与SQL*Plus相比,它的一个显着优势是它不需要安装Oracle客户端.

这个问题最初是由Tom在AskTom上回答的.

我在这里更新了他的答案,以解决Oracle 12c Multitenant和SQLcl.

  • 大!SQLcl的内联编辑非常有用. (2认同)