今天在启动服务器上的ORACLE时遇到以下错误:sql
SQL> startup;数据库
ORA-00119: invalid specification for system parameter LOCAL_LISTENER服务器
ORA-00132: syntax error or unresolved network name ’LISTENER_ORCL’oracle
而后,在网上找了一些资料,解决了此问题。tcp
解决的方式以下(这是网上的一位达人解决方案,我照他的步骤顺利解决,不过决定仍是作一个笔记):ide
第一步:复制一份pfile参数文件(注意:oracle中的pfile指的就是init<sid>.ora文件)ci
$ ./sqlplus / as sysdba;it
SQL> create pfile from spfile=’/u01/oracle/product/10.2.0/db_1/dbs/spfileorcl.ora’;io
第二步:修改pfile参数文件(也即修改init<sid>.ora文件)class
通过第一步之后,你就会在$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.