Oracle數據庫在使用的過程中常常會遇到這樣或那樣的問題,而這些問題常常又使我們感到很困惑,本文我們總結了Oracle數據庫在使用過程中的一些問題,並給出了解決方法,下面我們就開始分析一下這些問題。
一、oracle監聽啟動後,立即停止。
TNS-12545: 因目標主機或對象不存在,連接失敗。
TNS-12560: TNS: 協議適配器錯誤。
TNS-00515: 因目標主機或對象不存在,連接失敗。
32-bit Windows Error: 1004: Unknown error。
不再監聽: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=//./pipe/EXTPROC0ipc)))。
原因是我安裝了oracle之後,又修改了主機名。
解決方法:
1.直接修改listener.ora
路徑是: oracle安裝目錄/product/10.2.0/db_1/NETWORK/ADMIN/listener.ora.
修改HOST 為主機名或者IP.
2.通過 Net Manager,在 監聽程序/LISTENER 下直接修改主機即可
二.錯誤碼及解決辦法
1.ORA:-12545:因目標主機和對象不存在,連接失敗。
錯誤代碼ORA-12545表示網絡連接串(即tnsnames.ora文件中的HOST處)中使用的機器名和IP地址不存在,重新修改和重新連接即可。
2.ORA-12651:TNS:沒有監聽器。
該信息說明所要連接的服務器沒有啟動監聽進程Listener(該進程為Oracle服務器上操作系統進程,監聽進程沒有啟動時,服務器可以正常進行,但是客戶端不能與服務器產生連接。這時可以在服務器使用操作系統命令lsnrctl正常起啟動監聽進程)。
3.ORA-00600:internal error code,arguments:[num],[?],[?],[?],[?] 。
產生原因:這種錯誤通常為ORACLE的內部錯誤,只對OSS和ORACLE開發有用。ORA-600的錯誤經常伴隨跟蹤文件的狀態轉儲(系統狀態和進程狀態),系統狀態存儲將包括ORACLE RDBMS持有的當前對象的信息,進程狀態轉儲則將顯示特殊進程持有的對象,當進程符合了某錯誤條件時,經常是由於一些信息取自它持有的一個塊,如果我們知道這些錯誤進程持有的塊,就容易跟蹤問題的來源。
解決方法:一般來說出現這個錯誤我們本身是無法解決的,只有從提高系統本身各方面來解決這個內部問題,如增加硬件設備,調整系統性能,使用OPS(當然OPS從某種意義上說並不是一種好的解決方式)等。ORA-600錯誤的第一個變量用於標記代碼中錯誤的位置(代碼中的每個部分的第一變量都不一樣),從第二個到第五個變量顯示附加信息,告訴OSS代碼在哪裡出現了錯誤
4.ORA-12560 協議適配器錯誤:
有關ORA-12560: TNS:協議適配器錯誤的問題
①.檢查Terminal Service, 遠程桌面是不是起因。
②.環境變量set oracle_sid=需要的服務名。
③.listener.ora, tnsnames.ora等內機器名或者IP地址是否正確。
④.netstat –a檢查端口是否被占用。
⑤.檢查注冊表HKEY_LOCAL_MACHINE/Software/Oracle/Home0新增字符串USE_SHARED_SOCKET=TRUE, 重新啟動服務。
5.ORA-28595: Invalid DLL Path 調用外部DLL出錯
原因:A setting in Oracle's LISTENER.ORA file on the server hosting the RDBMS is missing.
解決辦法:
(1).Locate the active LISTENER.ORA file on the server. By default, it will be on the Oracle RDBMS drive in the path ../ora92/network/admin.
(2).Inspect the file and locate all entries associated with "SID_DESC". Each such entry should have the following option associated with it:
(ENVS = "EXTPROC_DLLS=ANY")
(3).Add the above line to any entry where it is missing.
(4).Restart the Oracle Listener Service (or reboot the server which will in turn restart Oracle).
例子:
The example LISTENER.ORA file below shows a valid configuration for the server named "WOODY" (using TCP/IP on Port 1521) with the correct ENVS entries highlighted:
# LISTENER.ORA Network Configuration File: C:/oracle/ora92/network/admin/listener.ora
# Generated by Oracle configuration tools.
LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0)) ) (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = woody)(PORT = 1521)) ) ) ) SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (SID_NAME = PLSExtProc) (ORACLE_HOME = C:/oracle/ora92) (PROGRAM = extproc) (ENVS = "EXTPROC_DLLS=ANY") ) (SID_DESC = (GLOBAL_DBNAME = WOODY) (ORACLE_HOME = C:/oracle/ora92) (SID_NAME = WOODY) (ENVS = "EXTPROC_DLLS=ANY") ) )
6.在控制面板中啟動服務,出現以下錯誤:
服務:在本地計算機無法啟動OracleOraDb10g_home1TNSListener 服務。
錯誤3:系統找不到指定的路徑。
查看屬性發現,OracleOraDb10g_home1TNSListener 服務的可執行文件的路徑為空。
解決辦法:
開始-->運行REGEDIT -->進入注冊表找到HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/OracleOraDb10g_home1TNSListener
發現ImagePath關鍵值沒有了,新建一個名為ImagePath的可擴充字符串值,編輯字符串的數值數據為:Oracle安裝路徑/BIN/TNSLSNR
7.錯誤描述:本地計算機上的OracleOraDb10g_home1TNSListener服務啟動後又停止了。一些服務自動停止,如果它們沒有什麼可做的,例如 "性能日志和警報 "服務。
解決辦法:C:/oracle/product/10.2.0/db_1/NETWORK/ADMIN/listener.ora把這這文件裡的內容改下 HOST=你的計算機名字。
關於Oracle數據庫的問題及解決方法就介紹到這裡,希望能夠對您有所幫助。