今天在啟動服務器上的ORACLE時遇到如下錯誤:
SQL> startup;
ORA-00119: invalid specification for system parameter LOCAL_LISTENER
ORA-00132: syntax error or unresolved network name ’LISTENER_ORCL’
然後,在網上找了一些資料,解決了此問題。
解決的方式如下(這是網上的一位達人解決方案,我照他的步驟順利解決,不過決定還是做一個筆記):
第一步:複製一份pfile引數檔案(注意:oracle中的pfile指的就是檔案)
$ ./sqlplus / as sysdba;
SQL> create pfile from spfile=’/u01/oracle/product/10.2.0/db_1/dbs/’;
第二步:修改pfile引數檔案(也即修改檔案)
經過第一步以後,你就會在$ORACLE_HOME/dbs目錄下發現有這麼一個檔案,這就是你第一步建立的檔案。由於我的oracle例項名為orcl,所以我的pfile檔案為。
用gedit開啟,找到local_listener這一行,然後將其值修改為:
(ADDRESS_LIST=(Address=(Protocol=tcp) (Host=your_hostname)(Port=1521)))
其中的your_hostname為你的主機名,其實導致ORA-00119和ORA-00132錯誤的原因就很可能是你修改了你的hostname,但是我看了一下我的檔案裡面的那個LISTENER_ORCL(可能你不是這個名字)和後面修改的'your_hostname一致,我做的只是將檔案中的(ADDRESS_LIST=(Address=(Protocol=tcp) (Host=your_hostname)(Port=1521)))複製到pfile檔案的“local_listener=”後面,然後就順利啟動了資料庫,我也不知道為什麼直接用*l_listener=’LISTENER_ORCL’就找不到,而一定要*l_listener=’(ADDRESS_LIST=(Address=(Protocol=tcp) (Host=your_hostname)(Port=1521)))’才可以,這個問題以後研究一下。
以下是我的一個修改樣例:
修改之前可能是這樣
*l_listener=’LISTENER_ORCL’
修改後的值大概就是這個樣子了
*l_listener=’(ADDRESS_LIST=(Address=(Protocol=tcp) (Host=your_hostname)(Port=1521)))’
然後儲存退出
第三步:以pfile建立spfile
使用以下命令建立spfile
SQL> create spfile from pfile=’/u01/oracle/product/10.2.0/db_1/dbs/’;
第四步:啟動資料庫
SQL> startup;
ORACLE instance started.
Total System Global Area *** bytes
Fixed Size *** bytes
Variable Size *** bytes
Database Buffers *** bytes
Redo Buffers *** bytes
Database mounted.
Database opened.