学习笔记——spool小技巧

在写脚本执行oracle sql时,会用到spool工具,但是遇到一个问题就是,执行的sql会输出到屏显,但是我只需要输出到指定的文件,不需要屏显

1.修改前

案例:
编写tmp.sh脚本,查看oracle实例状态和日志模式,将执行过程输出到/tmp/status.txt

[root@linux-vm tmp]# cat tmp.sh
#!/bin/sh

ORACLE_HOME=/home/oracle/app/oracle/product/11.2.0/dbhome_1

su - oracle -c "${ORACLE_HOME}/bin/sqlplus '/as sysdba'"<<EOF1
spool /tmp/status.txt
select status from v\$instance;
select name,log_mode from v\$database;
spool off
exit
EOF1

执行脚本:

[root@linux-vm tmp]# ./tmp.sh

SQL*Plus: Release 11.2.0.1.0 Production on Fri Jun 19 16:59:51 2020

Copyright (c) 1982, 2009, Oracle.  All rights reserved.


Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> SQL>
STATUS
------------
OPEN

SQL>
NAME      LOG_MODE
--------- ------------
ORCL      ARCHIVELOG

SQL> SQL> Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
[root@linux-vm tmp]#

屏显会有这么一坨。。。其实只需要加个重定向就可以了

2.修改后

脚本:

#!/bin/sh

ORACLE_HOME=/home/oracle/app/oracle/product/11.2.0/dbhome_1

su - oracle -c "${ORACLE_HOME}/bin/sqlplus '/as sysdba'" <<EOF1 >/dev/null 2>&1
spool /tmp/status.txt
select status from v\$instance;
select name,log_mode from v\$database;
spool off
exit

EOF1

执行结果:

[root@linux-vm no_time_bak_0617]# ./tmp.sh

没有任何屏显,查看执行过程:

[root@linux-vm tmp]# cat /tmp/status.txt
SQL> select status from v$instance;

STATUS
------------
OPEN

SQL> select name,log_mode from v$database;

NAME      LOG_MODE
--------- ------------
ORCL      ARCHIVELOG

SQL> spool off
[root@linux-vm tmp]#

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值