ORA 12560 問題的分析

2021-10-04 21:38:37 字數 1648 閱讀 7384

來自路勇同學投稿,在此感謝。

近日公司軟體應用客戶端連線資料庫時不時出現ora-12560錯誤,通過pl/sql工具、netmanager工具測試連線資料伺服器都正常,上網查詢ora-12560方法解決嘗試以後都沒有成功,自己以前從來不會寫記錄,但是希望遇到類似問題的朋友不要像我一樣很茫然。

應用客戶端系統win7,資料庫版本oracle(11.2.0),應用開發語言c,以下是分析步驟:

1. 在sqlnet.ora檔案中開啟日誌記錄功能

在檔案中加入以下內容:

trace_level_client=16

trace_directory_client=d:\oraclelog

trace_unique_client=on

trace_timestamp_client=on

diag_adr_enabled=off

tnsping.trace_directory=d:\oraclelog

tnsping.trace_level=admin

日誌會在oraclelog檔案中產生。

2. 分析oraclelog日誌

產生ora-12560日誌如下:

connection refused - trying again in 16 seconds.

tcp連線拒絕,查詢了相關資料,剛開始懷疑系統埠不夠或者過多的time_wait連線造成的,修改了tcp登錄檔引數以後還是沒有解決。

nserror: nsres: id=0, op=65, ns=12560, ns2=0; nt[0]=530, nt[1]=55, nt[2]=0; ora[0]=0, ora[1]=0, ora[2]=0

這句日誌分析,查詢了oracle文件,沒有找到nserror: nsres引數字段意思,自己只有慢慢異想天開,突然間nt[1]=55,這個欄位55讓我搖擺不定,55難道是系統錯誤碼或者tcp錯誤碼,自己查閱了系統錯誤碼或者tcp錯誤碼。

只有找到tcp錯誤碼有點類似,enobufs (10055):無緩衝區空間可用。難道是應用程序記憶體洩漏或者記憶體資源不足引起的嗎?

3.  提交大小

通過任務管理器檢視應用程序記憶體才14.7m,也不大啊,摸索了一天,開啟效能監視器檢視程序發現程序提交大小很大,是不是發現問題了,自己很興奮。

提交大小:1059kb

查閱資料提交大小=記憶體(專用工作集)+頁面快取 ,但是程序顯示提交大小怎麼大,肯定是程式問題。

4. 如何解決

記憶體資源問題,肯定是**或者軟體架構問題,自己把整個工程中的變數宣告、巨集定義、檔案引用都重新規範化,把工程重新新建在新增,最後編譯通過執行,主要有:

1)開發工程規範化,合理使用.h和.c檔案,編寫**不冗餘,每個檔案**量合理控制。

2).變數宣告合理化,.c檔案宣告變數,.**件extern變數並加入巨集控制標頭檔案多次引用,其它檔案如果使用變數包含標頭檔案即可。

3).巨集合理化使用,將工程中經常使用的資料定義成巨集,可以提高程式效率。

程序提交大小變成46kb左右,在反反覆覆測試連線資料庫竟然沒有問題了,有的時候解決問題就是憑感覺。

5. 學習

通過今日分析問題,讓我知道了裡面有大量的文件,自己以後多學習。

ORA 12560解決方法

今天在進行oracle資料imp exp時突然發現在cmd下執行exp輸入scott tiger這裡我不太熟悉。再次輸入使用者名稱和密碼,依舊報錯。靜下來想想 和資料庫例項都已經啟動了而且還是用自己做的批處理指令碼。在linxu下我也是可以imp exp的,linxu下沒有登錄檔這種概念,而存在環境...

ORA 12560 TNS 協議器錯誤的解決方法

使用sql plus登入資料庫時,系統報ora 12560 tns 協議器錯誤。之前建了三個資料庫例項,刪除了乙個例項。現在登入其中乙個資料庫報此錯誤。方法一 檢查監聽口是否開啟。在開始 執行,輸入services.msc或者在控制面板 管理工具,進入服務。找到oracleoradb11g home...

ora 27054問題的解決

可通過以下三種方式進行解決 1 設定事件10298 level 32 alter system set event 10298 trace name context forever,level 32 scope spfile 重新啟動資料庫後生效.2 打補丁 5146667 3 mount nfs目...