【问题标题】:Should CONNECT work in SQL*PLUS script?CONNECT 应该在 SQL*PLUS 脚本中工作吗?
【发布时间】:2013-11-27 02:45:52
【问题描述】:

我想从 cron 作业运行 sqlplus 脚本。

我想我可以这样写:

CONNECT "myuser/mypass@mydb"

在脚本中,然后执行它:

sqlplus @myscript

但是,当我这样做时,我得到:

SP2-0306: Invalid Option
SP3-0157: unable to CONNECT to ORACLE after 3 attempts, exiting SQL*Plus

是不是我误解了connect命令的用法?

【问题讨论】:

    标签: oracle sqlplus


    【解决方案1】:

    当在SQL*Plus 中运行CONNECT 时,去掉引号:

    CONNECT myuser/mypass@mydb
    

    如果您将凭据作为参数传递给sqlplus,则需要双引号:

    sqlplus "myuser/mypass@mydb"
    

    ,如果您的连接标识符中有空格或使用诸如AS SYSDBA 之类的附加选项,则shell 将myuser/mypass@mydb 解析为单个参数。

    【讨论】:

    • @Wade:它是否使用相同的凭据从命令行连接?
    • @Wade:您的脚本是否仅在cron 下运行时才会失败?您能否将CONNECT myuser/mypass@mydb 放入file.sql 并运行sqlplus /nolog @file.sql?
    • 我还没有在 cron 下运行它。你描述的是我在做什么。但是,主要区别在于我没有使用 /nolog 选项。使用该选项,它可以工作。感谢您的帮助。
    【解决方案2】:

    使用 /NOLOG 选项。

    sqlplus /nolog @myscript
    

    【讨论】:

      【解决方案3】:

      Oracle 11gR2

      我通过最初作为 JOHN 连接的 SQL*Plus 运行了一个 .sql 文件。在文件中,我以 SYS 身份连接,然后运行 ​​GRANT。请参阅下面的 .sql 文件内容:

      以 sysdba 身份连接系统/密码

      将 DBMS_CRYPTO 上的执行权限授予 JOHN;

      连接约翰/能源部

      注意:我不建议将系统/密码保存在文本文件中。

      HTH

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2010-12-16
        • 2012-11-13
        • 1970-01-01
        • 2019-06-06
        • 1970-01-01
        • 2014-09-01
        • 1970-01-01
        相关资源
        最近更新 更多