Oracle11g 客戶端連接出現的問題解決方案
1、在win7 64位系統下安裝Oracle11g,需要安裝32位的Oracle客戶端,PLSQL才能正確訪問,如果安裝64位的Oracle客戶端會報如下錯誤:
Initialization error
SQL*Net not properly installed
OracleHomeKey:
OracleHomeDir:
2、用Oracle客戶端PL/SQL連線Oracle資料庫時報“ORA-12514 TNS 監聽程式當前無法識別連線描述符中請求服務”錯誤。
如下是解決思路:
根據出錯資訊判斷出客戶端未監聽到例項服務名
(1)通過重啟服務的方式啟動資料庫,再次連線仍無法連線伺服器。
(2)既然第一種方法不能解決問題,那就第二種方法。考慮監聽listener.ora
監聽配置檔案listener.ora中可以不必指定監聽的服務名(安裝Oracle11g後也是沒有指定的)。正常情況下一般只要資料庫啟動,客戶端連線資料庫也沒有什麼問題,但是有時重複啟動關閉也會出現ORA-12514錯誤。
既然listener.ora中沒有指定監聽,我們可以在listener.ora檔案中指定監聽的例項名,這樣該問題應該可以連線。
步驟如下:
•在oracle伺服器Oracle安裝目錄(我的在D:\DeveSoftware\oracle11g下,每個人的不一樣,根據自己的情況查詢)Network/admin
#listener.oraNetwork Configuration File: D:\DeveSoftware\oracle11g\product\11.2.0\dbhome_1\network\admin\listener.ora
#Generated by Oracle configuration tools.
SID_LIST_LISTENER=
(SID_LIST =
(SID_DESC =
(SID_NAME = CLRExtProc)
(ORACLE_HOME =D:\DeveSoftware\oracle11g\product\11.2.0\dbhome_1)
(PROGRAM = extproc)
(ENVS ="EXTPROC_DLLS=ONLY:D:\DeveSoftware\oracle11g\product\11.2.0\dbhome_1\bin\oraclr11.dll")
)
(SID_DESC =
(GLOBAL_DBNAME = ORCL)
(ORACLE_HOME =D:\DeveSoftware\oracle11g\product\11.2.0\dbhome_1)
(SID_NAME = ORCL)
)
)
LISTENER=
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY =EXTPROC1521))
(ADDRESS = (PROTOCOL = TCP)(HOST =localhost)(PORT = 1521))
)
標紅的為我新增的部分,ORCL為監聽的例項名。
•然後在Oracle伺服器的服務中重新啟動監聽服務
3、用Oracle客戶端PL/SQL連線Oracle資料庫時報“ORA-01034: ORACLE not available ORA-27101”錯誤。
出現ORA-01034和ORA-27101的原因是多方面的:主要是oracle當前的服務不可用,sharedmemory realm does not exist,是因為oracle沒有啟動或沒有正常啟動,共享記憶體並沒有分配給當前例項.所以,通過設定例項名,再用作業系統身份驗證的方式,啟動資料庫。這樣資料庫就正常啟動了,就不會報ORA-01034和ORA-27101兩個啟動異常了。
還有就是可能是登入資料庫後,不正常的退出,比如直接關掉視窗,而這時資料庫裡有未完成的動作,再次登入時就會提示“insufficient privileges”的報錯,SQL>shutdownimmediate; SQL>startup;就恢復正常了。
解決方法/步驟:
(1)先看oracle的監聽和oracle的服務是否都啟動了。
啟動oracle監聽:cmd命令列視窗下,輸入lsnrctl start,回車即啟動監聽。
(2)檢視oracle的sid叫什麼,比如建立資料庫的時候,例項名叫“orcl”,那麼先手工設定一下oralce的sid,cmd命令視窗中,set ORACLE_SID=orcl
(3)再輸入sqlplus /nolog,回車
再輸入 conn / as sysdba;回車
(4)再輸入startup,回車.這步是啟動oracle服務。如果startup啟動被告知已經啟動了,可以先輸入shutdown immediate;等shutdown結束之後,再輸入startup。
如果第(4)步驟startup的時候出現如下錯誤:
ORA-00119: invalid specification for system parameterLOCAL_LISTENER
ORA-00130: invalid listener address ORCL_LISTENER
解決方案:
SQL> create pfile from spfile=‘D:\DeveSoftware\oracle11g\product\11.2.0\dbhome_1\database\SPFILEORCL.ORA';
執行該語句後在database下會生成INITorcl.ORA檔案
把INITorcl.ORA檔案中的*.local_listener的值改成,如:
*.local_listener='(ADDRESS_LIST=(Address=(Protocol=tcp)(Host=localhost)(Port=1521)))'
再執行
SQL> create spfile from pfile=‘D:\DeveSoftware\oracle11g\product\11.2.0\dbhome_1\database\INITorcl.ORA';
SQL>startup
這樣就啟動了 (orcl是SID)