1. 程式人生 > >pl/sql無法連線oracle的解決過程心得

pl/sql無法連線oracle的解決過程心得

剛裝好的oracle,pl/sql之前都好好的突然一天,pl/sql登入連線oracle失敗了。提示ora-01034:ORACLE NOT AVAI LABLE

ora-27101:shared memory realm does not exist

然後試著在cmd中 啟動

sqlplus /nolog

conn /as sysdba

startup

出現如下錯誤:

ORA-00119: invalid specification for system parameter LOCAL_LISTENER

ORA-00132:syntax error or unresolved network name "LISTENER_ORCL"

在網上查了一大堆的解決辦法最後所有的途徑都指向一個問題,要修復spfile.ora這個檔案。但是在我的安裝目錄下根本找不到這個檔案也找不到修復這個檔案所需的另一個檔案pfile.ora。在解決問題的過程中發現我的E盤和F盤下面都有oracle的安裝資料夾,這讓我非常費解。後經過查資料得知,因該是在安裝orcle時同時安裝了服務端和客戶端導致的,因此這兩個盤當中的資料夾應該一個是客戶端一個是服務端。由於plsql設定的是連線E盤的資料夾。因此靈機一動將F盤下的NETWORK/ADMIN資料夾下的listener.ora;sqlnet.ora;tnsnames.ora複製到E盤的同名資料夾下覆蓋同名檔案。再次啟動plsql.還是失敗提示無監聽程式。但是開啟cmd.用startup啟動oracle成功了。這說明,之前的問題是三個ora中的某幾個檔案的配置出了問題。

接著,在程式選單中開啟oracle目錄——配置和移植工具——開啟net manager。在服務命名中新建服務。服務名為orcl(orcl是安裝oracle時的例項名,如果忘記了這個例項名可以檢視系統服務。在系統服務中找到所有oracle相關的服務,其中有一個是OracleServiceORCL,service後面就是你的例項名也是全域性資料庫名)協議是TCP/IP 主機名是本機名稱(127.0.0.1是否可以我沒有做測試)埠號1521。完成。

而後在監聽程式中建立監聽程式:一般引數頁選項預設,監聽位置地址1是 TCP/IP 主機名本幾名 埠1521 地址2IPC 鍵自動生成

*****重點***** 資料庫服務——新增資料庫 全域性資料名(我安裝的是11g版本預設的全域性資料庫名是oracle8)這個地方要改成orcl。SID預設是ORCL不用改動。如果全域性資料庫名不改啟動plsql就會始終出現無鑑定程式的錯誤。

*****重點*****(這一項我不知道跟解決上述問題是否有關係)其他服務(如果用Net manager上面那個選項 Net Configuration  Assistant 建立監聽程式的話,建立完成後再Net Manager下的服務命名中就會自動的出現一個服務叫oraclr_connection_data,檢視這個服務會發現它的SID為CLRExtProc)其他服務頁中程式名填寫ExtProc。SID填寫CLRExtProc。oracle主目錄是自動生成的我這裡預設指向F盤的oracle資料夾。完成。

再次登入plsql連線oracle成功。問題全部解決。

plsql連線的應該是oracle的服務端。我的plsql的preference下的oracle_Home指向的是E盤,所以E盤下的資料夾應該是服務端。F盤下就是客戶端,但是我不明白為什麼將客戶端的三個.ora檔案覆蓋掉服務端的.ora就能正常啟動oracle了呢。