【问题标题】:SQL*Plus return code when invalid username or passwordSQL*Plus 在用户名或密码无效时返回代码
【发布时间】:2019-01-15 22:39:30
【问题描述】:

我正在尝试开发一个调用 SQL*Plus 并执行 SQL 文件的 ANT 脚本。使用以下内容:

<exec executable="sqlplus" failonerror="true">
    <arg value="-LOGON"/>
    <arg value="scott/${db.pwdapps}"/>
    <arg value="@${scm.target}/install/sql/XXCUST_COMMON_PKG.pks"/>
</exec>

这可行,但是当用户名或密码输入错误时,SQL*Plus 返回成功状态,因此 ANT 返回相同状态。

有谁知道当用户名或密码不正确时如何让 SQLPlus 返回错误状态?

【问题讨论】:

    标签: sql oracle ant sqlplus


    【解决方案1】:
    sqlplus /nolog
    SQL*Plus: Release 10.2.0.4.0 - Production on Thu Apr 14 08:48:07 2011
    Copyright (c) 1982, 2007, Oracle.  All Rights Reserved.
    SQL> whenever sqlerror exit failure
    SQL> connect ronr/wrongpwd
    ERROR:
    ORA-01017: invalid username/password; logon denied
    echo $?
    1
    

    将脚本转换为使用 here 文档,或者在设置 sqlerror 并将连接信息作为脚本的参数传递后让脚本进行连接。

    【讨论】:

    • 感谢负载。我设法解决了这个问题,因为有一个错字并且它忽略了“-LOGIN”。怀疑是这个问题。您的解决方案看起来也可以。
    【解决方案2】:

    对@ik_zelf 提案的小幅升级。 解决方案 /nolog 有效,但限制 sqlplus 的打印,因此如果您需要执行操作的日志,则不会正确写入。

    在 sqlplus 的 man 中找到了 -l 参数,如果密码错误,会阻塞脚本,返回错误并退出到命令提示符:

    C:\>sqlplus -l test/test@host
    
    SQL*Plus: Release 12.1.0.2.0 Production on Mar Gen 15 15:27:23 20019
    Copyright (c) 1982, 2014, Oracle. All rights reserved.
    ERROR:
    ORA-01017: invalid username/password; logon denied
    SP2-0751: Unable to connect to Oracle. Exiting SQL*Plus    
    C:\>
    

    【讨论】:

      【解决方案3】:

      USERPSW=ronr/wrongpwd

      KEY='错误'

      RETCODE=0

      newobjs=$(sqlplus -s

      如果 [[ echo $newobjs | grep -ic "$KEY" -gt 0 ]] 然后 RETCODE=1 别的 RETCODE=0 菲

      【讨论】:

        猜你喜欢
        • 2015-05-31
        • 2016-08-22
        • 2016-11-14
        • 2018-01-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多