我想知道是否有可能以sqlplus
某种方式获取输出以发现我的数据库是否已启动.
我想在数据库上运行脚本列表,但在此之前,我想知道数据库是否已启动并运行我的脚本.
这是我尝试过的:
sqlplus /@DB1 << EOF
> select 1 from dual;
> EOF
Run Code Online (Sandbox Code Playgroud)
它无法连接,但sqlplus的返回码仍然说"一切正常"!
SQL*Plus: Release 11.2.0.4.0 Production on Mon Nov 28 10:06:41 2016 Copyright (c) 1982, 2013, Oracle. All rights reserved. ERROR: ORA-12505: TNS:listener does not currently know of SID given in connect descriptor Enter 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
我知道我可以grep我的测试查询的结果,像这样:
sqlplus /@DB1 << EOF
select 'ALL_GOOD_BOY' from …
Run Code Online (Sandbox Code Playgroud) 我有一个批处理脚本,用连接细节调用PLSQL,工作正常,但我仍然必须明确SET DEFINE OFF
连接时.我想增强我的简单批处理脚本以将SET DEFINE OFF命令传递给SQLPLUS,这样一旦我连接,我将不再需要手动发出该命令.
echo set define off | sqlplus user/pwd@tnsname
Run Code Online (Sandbox Code Playgroud)
这不起作用.我已登录,并立即再次注销(输出如下):
SQL*Plus:版本10.2.0.3.0 - 生产于2009年6月15日星期一16:43:17
版权所有(c)1982,2006 ,Oracle.版权所有.
连接到:Oracle数据库10g企业版10.2.0.4.0版 - 使用分区,OLAP,数据挖掘和实际应用程序测试选项进行生产
SQL> SQL>与Oracle数据库 10g企业版10.2版断开连接.0.4.0 - 使用分区,OLAP,数据挖掘和实际应用程序测试选项进行生产
d:>