你有:
- 甲骨文数据库
- Oracle 客户端安装,包括 SQL*Plus
- #1 的 TNS 信息
- 但没有 TNSNames.ORA 文件或创建和维护一个文件的愿望
如何让您的 SQL*Plus 连接正常运行?
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 客户端。
这个问题最初是由 Tom 在AskTom上回答的。
我在这里更新了他的答案以解决 Oracle 12c Multitenant 和 SQLcl。
假设sqlcl
可执行文件存在于当前目录中,您可以使用
./sql user/password//host:port/service_name
如果您不想在 bash 历史记录中留下密码,请使用以下命令:
# connect
sql user@host:port/database
# will ask password later
# then connect to your database
sql > conn database
Using a tnsnames.ora
file is just one out of four different naming methods, see Parameters for the sqlnet.ora File
Usually ldap
and nis
are suitable only when you have many Oracle databases running in your premises. Other methods are already provided by @thatjeffsmith