【发布时间】:2018-03-17 14:27:26
【问题描述】:
你有:
- Oracle 数据库
- Oracle 客户端安装,包括 SQL*Plus
- #1 的 TNS 信息
- 但没有 TNSNames.ORA 文件或创建和维护一个文件的愿望
如何使 SQL*Plus 连接正常运行?
【问题讨论】:
标签: oracle sqlplus tnsnames sqlcl
你有:
如何使 SQL*Plus 连接正常运行?
【问题讨论】:
标签: oracle sqlplus tnsnames sqlcl
sqlplus user/password@(description=(address_list=(address=.......ODS)))
() 中的文本是您将在 TNSNames 文件中看到的服务信息。因此,您可以简单地显式使用 TNS 条目
注意,如果在 Unix 中使用引号,否则 () 由 shell 解释。
或者您可以使用 EZconnect 语法(我的首选方法)
sqlplus user/password@//hostname/service_name
sqlplus user/password@//hostname:port/service_name
请注意,对于 Oracle Database 12/18c 多租户架构数据库,如果要连接到可插拔数据库,则必须使用 /service_name 而不是 /SID。
另请注意,我们现在有 2 个命令行界面。
SQL*Plus 和 SQLcl。
SQLcl 是基于 java 的,是 Oracle SQL Developer 的精简版。它支持基于 TNS 的连接,还支持 EZConnect 语法。与 SQL*Plus 相比,它的一个显着优势是它不需要安装 Oracle 客户端。
这个问题最初是由汤姆在AskTom 上回答的。
我已在此处更新了他的答案以解决 Oracle 12c Multitenant 和 SQLcl。
【讨论】:
假设,sqlcl 可执行文件存在于当前目录中,您可以使用
./sql user/password//host:port/service_name
【讨论】:
使用tnsnames.ora 文件只是四种不同命名方法中的一种,请参阅Parameters for the sqlnet.ora File
通常ldap 和nis 仅适用于在您的场所运行许多 Oracle 数据库的情况。 @thatjeffsmith 已经提供了其他方法
【讨论】:
如果您不想在 bash 历史记录中留下密码,请使用:
# connect
sql user@host:port/database
# will ask password later
# then connect to your database
sql > conn database
【讨论】: