gpt4 book ai didi

oracle - 如何验证sqlplus可以连接?

转载 作者:行者123 更新时间:2023-12-04 07:50:42 24 4
gpt4 key购买 nike

我想知道是否有可能获得 sqlplus以某种方式输出以发现我的数据库是否已启动。
我想在数据库上运行脚本列表,但在此之前,我想知道数据库是否已启动并使用我的脚本运行。
这是我尝试过的:

 sqlplus /@DB1 << EOF
> select 1 from dual;
> EOF
连接不上,但是sqlplus的返回码还是说“一切正常”!
SQL*Plus: Release 11.2.0.4.0 Production on Mon Nov 28 10:06:41 2016Copyright (c) 1982, 2013, Oracle.  All rights reserved.ERROR:ORA-12505: TNS:listener does not currently know of SID given in connectdescriptorEnter user-name: SP2-0306: Invalid option.Usage: CONN[ECT] [{logon|/|proxy} [AS {SYSDBA|SYSOPER|SYSASM}] [edition=value]]where  ::= [/][@]       ::= [][/][@]Enter user-name: ju@srv:/tmp/jcho $ echo $?0

I know I could grep the result of my test query, like that:

a.sh

sqlplus /@DB1 << EOF
select 'ALL_GOOD_BOY' from dual;
EOF
称呼:
1线路如果连接有效, 0除此以外:
$ a.sh |grep ALL_GOOD_BOY|wc -l
...这对我来说似乎有很多步骤。在“无法连接”给出“错误”返回码的模式下设置sqlplus的任何其他方法?

最佳答案

感谢@Kacper 提供的引用,我可以调整这个 sqlplus /nolog 我的情况;这是想法:

  • 打开 sqlplus 只有没有连接
  • SQLERROR 上设置特定的返回码- 这就是 connect 时发生的情况失败
  • 返回码可以像往常一样在调用者脚本中收集:


  • sqlplus /nolog << EOF
    WHENEVER SQLERROR EXIT 50
    WHENEVER OSERROR EXIT 66
    connect /@${MISTERY_DB}
    exit;
    EOF

    然后调用:
    /ju $ export MISTERY_DB="eg_NON_EXISTING_DB"
    /ju $ a.sh
    SQL*Plus: Release 11.2.0.4.0 Production on Tue Nov 29 08:43:44 2016
    Copyright (c) 1982, 2013, Oracle. All rights reserved.
    SQL> SQL> SQL> ERROR:
    ORA-12154: TNS:could not resolve the connect identifier specified
    /ju $ echo $?
    50

    还相关: Connect to sqlplus in a shell script and run SQL scripts

    关于oracle - 如何验证sqlplus可以连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40840765/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com