我想實現在shell腳本中的錯誤日誌記錄機制,這也給我的錯誤SQL語句記錄SQL錯誤
我打算從裏面另一個腳本和重定向打電話給我的劇本里錯誤到日誌文件.. 有沒有更好的選擇?請幫忙。
#!/bin/sh
./test.sh 2>&1 >> log_1.log
test.sh包含follwing代碼
## testing error logging in sql
result=`sqlplus -s $username/[email protected]$db <<EOF
set serveroutout on
set pagesize 0
set heading off
set echo off
set feedback off
select first_name from employees;
exit;
EOF
if [ $? -ne 0 ]; then
echo "Error exists"
else
echo "$result"
fi
---用於測試由亞歷克斯游泳池
我做了變化,但給出的代碼編輯後,每當我得到一個SQL錯誤,日誌文件沒有得到生成,而是錯誤顯示在命令行上。
腳本名稱-test_error_log.sh
#!/bin/sh
output=`sqlplus -s -l hr/[email protected] << EOF
whenever sqlerror exit failure rollback
whenever oserror exit failure rollback
set serveroutput on
set heading off
set pagesize 0
set echo off
select **e.firs_name --- wrong field name**
,d.department_name from
employees e , departments d
where e.department_id=d.department_id ;
exit;
EOF`
echo $output
我從caller_shell.sh在以下方法調用它
腳本名稱:caller_shell.sh
#!/bin/sh
./test_error_log.sh 2>&1 log_file
當我執行命令行./caller_shell.sh我收到錯誤一個 但不是在LOG_FILE但在屏幕
ERROR at line 1: ORA-00904: "E"."FIRS_NAME": invalid identifier
請讓我知道如何解決這個..
很好的解釋。用於'-l'選項的+1。 –
@Alex先生非常感謝您。非常豐富。每當sqlerror退出失敗回滾時 – redsoxlost
@Alex失敗包含什麼? sql err味精?我沒有這臺機器的機器,所以無法真正測試它。 – redsoxlost