修改SQLNET.ORA導致資料庫無法啟動
修改sqlnet.ora這種貌似完全無害的檔案,也可能導致資料庫無法啟動。
今天在一個RAC資料庫上進行測試,在嘗試重啟時,碰到了引數錯誤:
SQL> conn / as sysdba
Connected.
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup
ORA-01078: failure in processing system parameters
ORA-00119: invalid specification for system parameter REMOTE_LISTENER
ORA-00132: syntax error or unresolved network name 'LISTENERS_RAC'
開始懷疑是有人手工修改了REMOTE_LISTENER引數,但是目前的引數值LISTENERS_RAC應該是在tnsnames.ora中進行的配置。莫非是tnsnames.ora檔案被修改。
檢查$ORACLE_HOME/network/admin/tnsnames.ora檔案:
$ more tnsnames.ora
# tnsnames.ora.db210-rac1 Network Configuration File: /opt/oracle/product/10.2.0/db10g/network/admin/tnsnames.ora.db210-rac1
# Generated by Oracle configuration tools.
LISTENERS_RAC =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = db210-rac1vip)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = db210-rac2vip)(PORT = 1521))
)
RAC2 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = db210-rac2vip)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = rac)
(INSTANCE_NAME = rac2)
)
)
RAC1 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = db210-rac1vip)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = rac)
(INSTANCE_NAME = rac1)
)
)
從語法上看不到什麼錯誤,為什麼Oracle無法解析這個簡單監聽服務名呢,透過tnsping命令檢查語法錯誤:
$ tnsping listeners_rac
TNS Ping Utility for Solaris: Version 10.2.0.4.0 - Production on 04-MAR-2011 20:37:19
Copyright (c) 1997, 2007, Oracle. All rights reserved.
Used parameter files:
/opt/oracle/product/10.2.0/db10g/network/admin/sqlnet.ora
TNS-03505: Failed to resolve name
嘗試測試其他服務名,錯誤依舊:
$ tnsping rac2
TNS Ping Utility for Solaris: Version 10.2.0.4.0 - Production on 04-MAR-2011 20:40:09
Copyright (c) 1997, 2007, Oracle. All rights reserved.
Used parameter files:
/opt/oracle/product/10.2.0/db10g/network/admin/sqlnet.ora
TNS-03505: Failed to resolve name
看來問題不是不可見字元引起的,應該是其他的原因。觀察提示資訊中存在的sqlnet.ora配置檔案,於是檢查了一下。
$ more sqlnet.ora
NAMES.DIRECTORY_PATH= (EZCONNECT)
有人手工修改了sqlnet.ora,將連線方式設定為簡化連線這一種方式了。
顯然,這導致了Oracle不去解析tnsnames.ora檔案。
修改檔案,註釋掉sqlnet.ora中的配置:
$ vi sqlnet.ora
#NAMES.DIRECTORY_PATH= (EZCONNECT)
再次嘗試服務名:
$ tnsping rac2
TNS Ping Utility for Solaris: Version 10.2.0.4.0 - Production on 04-MAR-2011 20:08:23
Copyright (c) 1997, 2007, Oracle. All rights reserved.
Used parameter files:
/opt/oracle/product/10.2.0/db10g/network/admin/sqlnet.ora
Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = db210-rac2vip)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = rac) (INSTANCE_NAME = rac2)))
OK (10 msec)
$ tnsping listeners_rac
TNS Ping Utility for Solaris: Version 10.2.0.4.0 - Production on 04-MAR-2011 20:09:10
Copyright (c) 1997, 2007, Oracle. All rights reserved.
Used parameter files:
/opt/oracle/product/10.2.0/db10g/network/admin/sqlnet.ora
Used TNSNAMES adapter to resolve the alias
Attempting to contact (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = db210-rac1vip)(PORT = 1521)) (ADDRESS = (PROTOCOL = TCP)(HOST = db210-rac2vip)(PORT = 1521)))
OK (10 msec)
這次Oracle可以正確的解析服務名的配置,嘗試啟動資料庫:
SQL> startup
ORA-01078: failure in processing system parameters
ORA-00119: invalid specification for system parameter REMOTE_LISTENER
ORA-00132: syntax error or unresolved network name 'LISTENERS_RAC'
SQL> exit
Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit Production
With the Partitioning, Real Application Clusters, Data Mining and Real Application Testing options
[oracle@db210-rac1 oracle]$ sqlplus / as sysdba
SQL*Plus: Release 10.2.0.4.0 - Production on Fri Mar 4 20:09:30 2011
Copyright (c) 1982, 2007, Oracle. All Rights Reserved.
Connected to an idle instance.
SQL> startup
ORACLE instance started.
Total System Global Area 2147483648 bytes
Fixed Size 2041976 bytes
Variable Size 687871880 bytes
Database Buffers 1442840576 bytes
Redo Buffers 14729216 bytes
Database mounted.
Database opened.
直接啟動,仍然出現同樣的錯誤,退出sqlplus再次嘗試啟動資料庫,問題消失。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4227/viewspace-688877/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- HA異常導致oracle資料庫無法啟動Oracle資料庫
- spfile誤修改導致資料庫無法啟動的另一種恢復方法資料庫
- 歸檔問題導致的資料庫無法啟動資料庫
- oracle SGA設定過大導致資料庫無法啟動Oracle資料庫
- 【故障恢復】因spfile修改錯誤導致資料庫無法啟動的恢復方法資料庫
- 【strings】spfile誤修改導致資料庫無法啟動的另一種恢復方法資料庫
- 誤修改ORACLE_HOME導致無法登陸資料庫Oracle資料庫
- SPFILE 錯誤導致資料庫無法啟動(ORA-01565)資料庫
- mongoDB因root啟動關閉資料庫導致mongo普通使用者無法啟動MongoDB資料庫
- 又一例SPFILE設定錯誤導致資料庫無法啟動資料庫
- 應用使用JNDI,資料庫無法連線,導致的程序無法啟動問題處理資料庫
- memory_target設定不當導致資料庫無法啟動的問題資料庫
- ORACLE的歸檔空間滿導致的監聽故障資料庫無法啟動Oracle資料庫
- ORA-06502報錯導致資料庫所有檢視無法修改。資料庫
- 11gRAC許可權問題導致的叢集及資料庫無法啟動資料庫
- 【故障處理】修改主機名導致oracle例項無法啟動暨如何修改hostnameOracle
- ORACLE windows驅動磁碟機代號自動變更導致oracle資料庫崩潰無法啟動OracleWindows資料庫
- [oracle]undo表空間出錯,導致資料庫例項無法開啟Oracle資料庫
- 資料庫恢復狀態可能導致JOB無法自動執行資料庫
- OEL 11.2.0.2 RAC 資料庫停電導致has程式無法啟動OLR檔案損壞資料庫
- MYSQL資料庫服務無法啟動MySql資料庫
- 磁碟IO故障導致的SQLServer資料庫無法寫入SQLServer資料庫
- UNDO表空間損壞導致資料庫無法OPEN資料庫
- 記一次ORA-01102導致資料庫例項無法啟動案例資料庫
- 11gR2私有ip修改錯誤導致crs無法啟動解決方法
- 解決hyper v導致docker無法啟動問題Docker
- 歸檔日誌無法歸檔導致資料庫hang住資料庫
- 大量"library cache lock"事件導致資料庫無法連線事件資料庫
- undo壞塊引起資料庫無法啟動資料庫
- 非歸檔模式下異常斷電導致的資料庫無法啟動的問題修復模式資料庫
- ORACLE DSG資料同步軟體程式導致資料庫無法正常關閉Oracle資料庫
- Workstation服務無法啟動導致無法訪問檔案伺服器伺服器
- Oracle sysman.mgmt_jobs導致資料庫自動重啟Oracle資料庫
- Sybase資料庫日誌過大導致不能啟動(轉)資料庫
- 【北亞資料恢復】異常斷電導致linux伺服器無法啟動,資料庫損壞的資料恢復資料恢復Linux伺服器資料庫
- 資料庫表匯出不全導致tomcat無法釋出程式資料庫Tomcat
- OS臨時埠耗盡導致無法建立資料庫連線資料庫
- ORACLE OGG引數修改引起佇列檔案異常導致抽取程式無法啟動Oracle佇列