本文摘自:http://blog.csdn.net/pw_windgod/article/details/6058384
?
今天在启动服务器?上的ORACLE?时遇到如下错误:
SQL> startup;
ORA-00119: invalid specification for system parameter LOCAL_LISTENER?
ORA-00132: syntax error or unresolved network name 'LISTENER_ORCL'
?
网上找了很多资料,都没解决问题,后来看了一位达人的文章,主要意思是先用spfile产生pfile,再修改local_listener的参数,再重新产生spfile,步骤如下:
?
第一步:复制一份pfile参数文件(注意:oracle中的pfile指的就是init<sid>.ora文件)
$ ./sqlplus / as sysdba;
SQL> create pfile from spfile='/u01/oracle/product/10.2.0/db_1/dbs/spfileorcl.ora';
第二步:修改pfile参数文件(也即修改init<sid>.ora文件)
经过第一步以后,你就会在$ORACLE_HOME/dbs目录下发现有这么一个文件init<sid>.ora,这就是你第一步创建的文件。由于我的oracle实例名为orcl,所以我的pfile文件为initorcl.ora。
用gedit打开,找到local_listener这一行,然后将其值修改为:
(ADDRESS_LIST=(Address=(Protocol=tcp) (Host=your_hostname)(Port=1521)))
其中的your_hostname为你的主机名,其实导致ORA-00119和ORA-00132错误的原因就很可能是你修改了你的 hostname,但是我看了一下我的tnsname.ora文件里面的那个LISTENER_ORCL(可能你不是这个名字)和后面修改的 your_hostname一致,我做的只是将tnsname.ora文件中的(ADDRESS_LIST=(Address= (Protocol=tcp) (Host=your_hostname)(Port=1521)))复制到pfile文件的“local_listener=”后面,然后就顺利启动了 数据库,我也不知道为什么直接用*.local_listener='LISTENER_ORCL'就找不到,而一定 要*.local_listener='(ADDRESS_LIST=(Address=(Protocol=tcp) (Host=your_hostname)(Port=1521)))'才可以,这个问题以后研究一下。
以下是我的一个修改样例:
修改之前可能是这样
*.local_listener='LISTENER_ORCL'
修改后的值大概就是这个样子了
*.local_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/initorcl.ora';
第四步:启动数据库
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.?