1. 程式人生 > >Oracle11g 客戶端連接出現的問題解決方案

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.ora 我的如下所示

#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-01034ORA-27101的原因是多方面的:主要是oracle當前的服務不可用,sharedmemory realm does not exist,是因為oracle沒有啟動或沒有正常啟動,共享記憶體並沒有分配給當前例項.所以,通過設定例項名,再用作業系統身份驗證的方式,啟動資料庫。這樣資料庫就正常啟動了,就不會報ORA-01034ORA-27101兩個啟動異常了。

還有就是可能是登入資料庫後,不正常的退出,比如直接關掉視窗,而這時資料庫裡有未完成的動作,再次登入時就會提示“insufficient privileges”的報錯,SQL>shutdownimmediate;   SQL>startup;就恢復正常了。

解決方法/步驟:

1)先看oracle的監聽和oracle的服務是否都啟動了。

啟動oracle監聽:cmd命令列視窗下,輸入lsnrctl start,回車即啟動監聽。

2)檢視oraclesid叫什麼,比如建立資料庫的時候,例項名叫“orcl”,那麼先手工設定一下oralcesidcmd命令視窗中,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)