應使用sqlplus代替tnsping進行oracle連通性測試


一直以來,都習慣於tnsping alias測試確定使用了那個sqlnet.ora,並測試連通性。最近在制作系統的安裝包,為了輕量級以及提高實施效率,全部客戶端使用oracle instant client,可惜並沒有tnsping,於是研究了下如何用sqlplus測試連通性。看sqlplus -H的時候發現,可通過如下方式驗證oracle服務器的連通性:

sqlplus -L -S ${USERNAME}/${PASSWORD}@${ALIAS} @validate.sql
然后判斷有沒有"ORA-"關鍵字即可,如果有的話,就是連接出錯了。它相比tnsping的好處在於會真正登錄驗證oracle服務器的可用性,tnsping只是增強版的telnet,不會校驗oracle服務真正的可用性。
如下:

[oracle@oel-12c ~]$ sqlplus -L -S scott/tiger@ora111g @validate.sql
ERROR:
ORA-12154: TNS: 無法解析指定的連接標識符


SP2-0751: 無法連接 Oracle。正在退出 SQL*Plus
[oracle@oel-12c ~]$ sqlplus -L -S scott/tiger@ora11g @validate.sql

1
----------
1

 -S選項指定不回顯各種信息。

-L指定第一次登錄報錯之后就退出,而不是默認嘗試用戶交互三次。

如果要執行的腳本條件要根據上下文不同傳遞不同的參數,可以在sql文件后加參數,在sql文件中使用&1,&2..作為占位符。

很多時候,因為代碼不嚴謹,執行會出錯,比如重復性檢查,此時如果要在碰到第一個命令報錯的時候就退出,可以在sqlplus上加上WHENEVER SQLERROR EXIT SQL.SQLCODE,如下:

WHENEVER SQLERROR EXIT SQL.SQLCODE
--select 'OK' from duabbl;
--select 'OK' from duiaaal;
select 'OK' from dual;
select 'OK' from dzual;
select 'OK' from dual;
exit;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM