在寫指令碼執行oracle sql時,會用到spool工具,但是遇到乙個問題就是,執行的sql會輸出到屏顯,但是我只需要輸出到指定的檔案,不需要屏顯。
1.修改前
案例:編寫tmp.sh指令碼,檢視oracle例項狀態和日誌模式,將執行過程輸出到/tmp/status.txt
[root@linux-vm tmp]# cat tmp.sh
#!/bin/sh
oracle_home=
11.2
.0/dbhome_1
su - oracle -c "$/bin/sqlplus '/as sysdba'"
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 1916:
59:512020
1982
,2009
connected to:
oracle database 11g enterprise edition release 11.2
.0.1.0-
64bit production
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
[root@linux-vm tmp]#
屏顯會有這麼一坨。。。其實只需要加個重定向就可以了
2.修改後
指令碼:
#!
/bin/sh
oracle_home=
11.2
.0/dbhome_1
su - oracle -c "$/bin/sqlplus '/as sysdba'"
<
/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]#
完 spool的小技巧以及別的sql取整
在sqlplus裡 1.不顯示 行頭 set heading off pages 0 2.不顯示行數資訊 set feedback off 3。不在螢幕上顯示結果 set termout off 還要 關鍵。把sql存在檔案 aa.sql 裡 用 aa.sql 的方式執行。不顯示查詢結果的唯一方法 ...
Sql plus技巧之SPOOL應用
1 使用sql plus動態生成批量指令碼 建立gen drop table.sql檔案,包含如下語句 set echo off 不顯示start啟動的指令碼中的每個sql set feedback off 不回顯處理記錄條數 set newpage none set linesize 2000 一...
eclipse小技巧筆記
update sql應用 翻譯 更新 date 日期 data 檔案 updata 不存在無意義 ctrl d 刪除當前行 shift tab 取消縮排 ctrl pgup down 切換小視窗 shift up down 選中一行 shift pgup down 選中自此上 下 ctrl left...