Oracle TNS 異常問題處理

2022-01-28 19:38:37 字數 1316 閱讀 3873

今天下午快下班時同事找我說自己的效能測試oracle資料庫 連不上了。 然後自己連上去簡單看了一下。

因為已經是事後了, 所以沒有截圖,只通過文字說明。 

環境說明:win2012r2 + oracle12.2.0.1

1. 伺服器報tns無法鏈結。 第一反應是tns的服務沒啟動好

cmd-> services.msc 開啟服務

發現有兩個oracle 的listener服務, 乙個是client的乙個是db的

為了簡化處理我將client的關閉,並且設定成了手動啟動。

當時發現服務使用者是 perf 使用者。 手賤給修改成了本地使用者,但是僅修改了 監聽服務沒有修改 資料庫instance例項 這裡給自己留坑了。 

2. 開啟命令列, 輸入 cmd 啟動 

輸入lsnrctl  使用status檢視服務命令 很奇怪 tns的配置檔案都是走的client的

膝蓋環境變數 將path的內容裡面 client相關的都替換成dbhome_1的。 

再次重複 cmd 開啟監聽服務, 很不幸 還是提示client

再次開啟環境變數檢視 原來同事新增了乙個tns_admin的變數 指定了 是client的,所以命令自動通過client裡面的去查詢

將這個變數進行改名。 再次執行相關命令 發現已經是dbhome相關的配置檔案了。

3. 但是這個時候很奇怪的是 總是報乙個 tns sid_list的配置錯誤,重新手動修改了配直節也不行比較奇怪。

沒辦法 網上找了乙個很簡單的配直節 手動修改, 將括號設定準確,目錄設定好,並且host 使用機器名進行啟動。 

發現服務啟動起來了 但是提示無法支援服務 一頭霧水。

4. 使用靜態註冊也是如此提示 按住不表。。

5. 使用動態註冊, sqlplus / as sysdba

alter system register;

再次進入lsnrctl 發現依舊沒有服務

6. 這個時候才想起來自己修改了 監聽的登入使用者 但是沒有修改 instance的使用者

沒辦法要過來perf的密碼 並且沖洗你設定所有的監聽到 perf使用者

再次啟動 竟然可以了。。。

7. 在自己本地 使用客戶端進行連線,發現無問題。

8. 本次的經驗教訓是 環境變數一定要搞清楚,不要隨便設定,包括字符集,客戶端字符集還有oracle的一些資訊。 如果設定一定要記錄一下

就跟我設定linux的環境變數一樣 多了自己就記不住了 就容易自己坑自己。

9. 簡單記錄一下 以備不時之需。。

10. 我3年前修改系統檢視 修改gs的資料庫名的方法再也沒有想起來。。改天再找找 資料庫的檢視 我記得不是用v$服務開頭的。 

異常處理的問題

這樣是可以通過編譯的,而換一下catch的順序則不能通過編譯.try catch system.io.ioexception iex catch system.exception ex catch 例如這樣則會出現 try catch system.exception ex catch system...

ORACLE 異常處理問題處理

create or replace procedure pro people as begin select per id into v per id from people where id i id exception when no data found then v per id 1 whe...

異常處理的效能問題

通常,錯誤條件都將作為常規流程控制使用。在此情況下,如果試圖通過程式設計將使用者新增到 active directory 例項中,則只能試著新增該使用者,如果系統返回 e ads object exists hresult,則說明它們已經存在於該目錄中。此外,您也可以通過搜尋目錄查詢該使用者,如果搜...