Oracle ORA-00119,ORA-00132 错误处理(一)

2014-11-24 18:07:44 · 作者: · 浏览: 0

最近系统启动时,收到了ORA-00119以及ORA-00132的错误,该错误实际上跟LISTENER有关,通常的处理办法是将spfile转储为pfile然后从pfile启动


并生成新的spfile,不过该操作方式代价太高,需要重新启动数据库。另一种方式则是直接修改tnsnames.ora中的服务名,使之与监听器中的listener名字保持一致,具体参考下面的细节。


一.错误提示


SQL> startup nomount;


ORA-00119: invalid specification for system parameter LOCAL_LISTENER


ORA-00132: syntax error or unresolved network name 'LISTENER_ODBP'


二、分析错误


1.查看错误号对应的具体描述


00132, 00000, "syntax error or unresolved network name '%s'"


// *Cause: Listener address has syntax error or cannot be resolved.


// *Action: If a network name is specified, check that it corresponds


// to an entry in TNSNAMES.ORA or other address repository


// as configured for your system. Make sure that the entry


// is syntactically correct.


描述信息中给出了listener.ora中网络名是否与tnsnames.ora相一致,需要检查


2.查看监听


[oracle@odbp admin]$ more listener.ora


# listener.ora Network Configuration File: /u01/app/oracle/10g/network/admin/listener.ora


# Generated by Oracle configuration tools.


SID_LIST_LISTENER_ODBP =


(SID_LIST =


(SID_DESC =


(GLOBAL_DBNAME = odbp.oradb.com)


(ORACLE_HOME = /u01/app/oracle/10g)


(SID_NAME = odbp)


)


)


LISTENER_ODBP =


(DESCRIPTION =


(ADDRESS = (PROTOCOL = TCP)(HOST = odbp.oradb.com)(PORT = 1521))


)


3.查看tnsnames.ora


[oracle@odbp admin]$ more tnsnames.ora


# tnsnames.ora Network Configuration File: /u01/app/oracle/10g/network/admin/tnsnames.ora


# Generated by Oracle configuration tools.


ODBP =


(DESCRIPTION =


(ADDRESS_LIST =


(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.192.11)(PORT = 1521))


)


(CONNECT_DATA =


(SERVICE_NAME = odbp.oradb.com)


)


)


EXTPROC_CONNECTION_DATA =


(DESCRIPTION =


(ADDRESS_LIST =


(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))


)


(CONNECT_DATA =


(SID = PLSExtProc)


(PRESENTATION = RO)


)


)


由上面的listener.ora与tnsnames.ora可知


listener.ora中的监听名与tnsnames.ora中的服务名不一致


三、解决方法


1.修改tnsnames.ora中的服务名为LISTENER_ODBP,然后重新启动数据库即可


2.可以将spfile(无pfile情况下)转储为pfile文件,将local_listener参数置空,然后使用pfile文件启动数据库后重新生成spfile


可以采用下面的方法来转储,如下


[oracle@odbp dbs]$ ls --没有pfile


hc_odbp.dat initdw.ora init.ora lkODBP orapwodbp spfileodbp.ora


[oracle@odbp dbs]$ strings spfileodbp.ora > initodbp.ora


[oracle@odbp dbs]$ cat initodbp.ora


odbp.__db_cache_size=130023424


odbp.__java_pool_size=33554432


odbp.__large_pool_size=4194304


odbp.__shared_pool_size=113246208


odbp.__streams_pool_size=0


*.audit_file_dest='/u01/app/oracle/admin/odbp/adump'


*.background_dump_dest='/u01/app/oracle/admin/odbp/bdump'


*.compatible='10.2.0.4.0'


*.control_files='/u01/app/oracle/oradata/odbp/control01.ctl','/u01/app/oracle/oradata/odbp/control02.ctl'


*.core_dump_dest='/u01/app/oracle/admin/odbp/cdump'


*.db_block_size=8192


*.db_domain='oradb.com'


*.db_file_multiblock_read_count=16


*.db_name='odbp'


*.db_recovery_file_dest='/u01/app/oracle/flash_recovery_area'


*.db_recovery_file_dest_size=2147483648


*.dispatchers='(PROTOCOL=TCP) (SERVICE=odbpXDB)'