【问题标题】:How can I connect to Oracle Database with SQLcl and SQLPlus, but without a TNSNames.ORA file?如何在没有 TNSNames.ORA 文件的情况下使用 SQLcl 和 SQLPlus 连接到 Oracle 数据库?
【发布时间】:2018-03-17 14:27:26
【问题描述】:

你有:

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

如何使 SQL*Plus 连接正常运行?

【问题讨论】:

    标签: oracle sqlplus tnsnames sqlcl


    【解决方案1】:
    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。

    【讨论】:

    • 感谢@KaushikNayak - 我们添加了大量现代功能来补充现有的 SQL*Plus 功能。您可能还喜欢制表符补全、命令历史记录、DDL 和 ALIAS(构建您自己的命令)功能。
    【解决方案2】:

    假设,sqlcl 可执行文件存在于当前目录中,您可以使用

    ./sql user/password//host:port/service_name

    【讨论】:

      【解决方案3】:

      使用tnsnames.ora 文件只是四种不同命名方法中的一种,请参阅Parameters for the sqlnet.ora File

      通常ldapnis 仅适用于在您的场所运行许多 Oracle 数据库的情况。 @thatjeffsmith 已经提供了其他方法

      【讨论】:

        【解决方案4】:

        如果您不想在 bash 历史记录中留下密码,请使用:

        # connect
        sql user@host:port/database
        # will ask password later
        # then connect to your database
        sql > conn database
        

        【讨论】:

          猜你喜欢
          • 2012-01-16
          • 2021-07-27
          • 1970-01-01
          • 1970-01-01
          • 2013-03-17
          • 2013-09-15
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多