【发布时间】:2017-04-11 23:11:49
【问题描述】:
我想知道是否有可能以某种方式获得sqlplus 输出以发现我的数据库是否已启动。
我想在数据库上运行脚本列表,但在此之前,我想知道数据库是否已启动并与我的脚本一起运行。
这是我尝试过的:
sqlplus /@DB1 << EOF
> select 1 from dual;
> EOF
连接不上,但是sqlplus的返回码还是“一切正常”!
SQL*Plus:2016 年 11 月 28 日星期一 10:06:41 发布 11.2.0.4.0 生产版 版权所有 (c) 1982, 2013,甲骨文。版权所有。 错误: ORA-12505: TNS:listener 当前不知道连接中给出的 SID 描述符 输入用户名:SP2-0306:无效选项。 用法:CONN[ECT] [{logon|/|proxy} [AS {SYSDBA|SYSOPER|SYSASM}] [edition=value]] 在哪里 ::= [/][@] ::= [][/][@] 输入用户名:ju@srv:/tmp/jcho $ echo $? 0我知道我可以像这样 grep 测试查询的结果:
a.sh
sqlplus /@DB1 << EOF
select 'ALL_GOOD_BOY' from dual;
EOF
调用:
如果连接正常,则提供1 行,否则提供0:
$ a.sh |grep ALL_GOOD_BOY|wc -l
...这对我来说似乎有很多步骤。在“无法连接”给出“错误”返回码的模式下设置 sqlplus 的任何其他方式?
【问题讨论】:
-
老实说,我认为 select from dual 的方式是检查它的最佳方式。这是另一个主题非常相似的主题:dba.stackexchange.com/questions/4718/…
-
这就是我害怕的。如果我真的可以连接,我可以更改 SQLPLUS 返回码,如here。但我不知道我是否可以连接。
-
我不得不再深入一点,它就在那里:stackoverflow.com/questions/2254761/…