分析的相当好! |
转:ORA-00119,ORA-00132 错误处理 --****************************** -- ORA-00119,ORA-00132 错误处理 --****************************** 最近系统启动时,收到了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.查看错误号对应的具体描述 [oracle@odbp admin]$ oerr ora 00132 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)' *.job_queue_processes=10 *.local_listener='LISTENER_ODBP' --将改行注释掉或置空 *.open_cursors=300 *.pga_aggregate_target=94371840 *.processes=150 *.remote_login_passwordfile='EXCLUSIVE' *.sga_target=285212672 *.undo_management='AUTO' *.undo_tablespace='UNDOTBS1' *.user_dump_dest='/u01/app/oracle/admin/odbp/udump' SQL> startup nomount pfile='/u01/app/oracle/10g/dbs/initodbp.ora'; ORACLE instance started. Total System Global Area 285212672 bytes Fixed Size 1267068 bytes Variable Size 150997636 bytes Database Buffers 130023424 bytes Redo Buffers 2924544 bytes SQL> create spfile from pfile; File created. SQL> startup force; ORACLE instance started. Total System Global Area 285212672 bytes Fixed Size 1267068 bytes Variable Size 150997636 bytes Database Buffers 130023424 bytes Redo Buffers 2924544 bytes Database mounted. Database opened. |
no mount阶段的错误一定是spfile的问题,你这个错误很可能是你修改了local_listener这个参数,将这个参数清空一下,具体方式就是采用spfile——pfile——修改——spfile的方式。 |