修改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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 應用使用JNDI,資料庫無法連線,導致的程序無法啟動問題處理資料庫
- 記一次ORA-01102導致資料庫例項無法啟動案例資料庫
- 磁碟IO故障導致的SQLServer資料庫無法寫入SQLServer資料庫
- MYSQL資料庫服務無法啟動MySql資料庫
- 【案例】Oracle報錯ORA-01194 ORA-01110 由於資料庫SCN不一致導致無法啟動Oracle資料庫
- 重置資料庫密碼後導致網站無法訪問資料庫密碼網站
- ORACLE DSG資料同步軟體程式導致資料庫無法正常關閉Oracle資料庫
- 【北亞資料恢復】異常斷電導致linux伺服器無法啟動,資料庫損壞的資料恢復資料恢復Linux伺服器資料庫
- ORACLE OGG引數修改引起佇列檔案異常導致抽取程式無法啟動Oracle佇列
- 伺服器意外斷電導致無法重啟資料恢復伺服器資料恢復
- Oracle sysman.mgmt_jobs導致資料庫自動重啟Oracle資料庫
- 【epoll問題】EPOLLRDHUP使用導致無法接受資料
- asm磁碟組依賴導致資料庫自啟動報錯ASM資料庫
- Oracle日常問題-資料庫無法啟動(案例二)Oracle資料庫
- Oracle日常問題處理-資料庫無法啟動Oracle資料庫
- Oracle 12.2應用PSU後資料庫無法啟動Oracle資料庫
- 達夢資料庫dmap服務無法正常啟動資料庫
- RAC下主機修改時區導致db無法open
- 神奇的DEBUG:因為異常導致MongoDB容器無法啟動MongoDB
- @Transactional開啟事務導致AbstractRoutingDataSource動態資料來源無法切換的解決方案
- MySQL 5.6因為OOM導致資料庫重啟MySqlOOM資料庫
- GitLab修改配置後nginx無法啟動GitlabNginx
- 【伺服器資料恢復】RAID故障導致資料庫分割槽無法識別的資料恢復伺服器資料恢復AI資料庫
- 【虛擬機器資料恢復】異常斷電導致虛擬機器無法啟動的資料恢復案例虛擬機資料恢復
- 【資料庫資料恢復】無法啟動MongoDB服務的資料恢復案例資料庫資料恢復MongoDB
- SQL Server 因設定最大記憶體過小導致無法啟動SQLServer記憶體
- zblog域名後無法訪問 zblog資料庫地址修改資料庫
- 【資料庫資料恢復】突然斷電造成Syabse資料庫無法啟動的資料恢復案例資料庫資料恢復
- eclipse: workspace出錯導致無法啟用的解決Eclipse
- 資料庫資料恢復——Windows無法啟動MongoDB服務的資料恢復案例資料庫資料恢復WindowsMongoDB
- 懷疑私網網路卡多播問題導致crs無法正常啟動
- 伺服器資料恢復-RAID資訊丟失導致伺服器作業系統無法啟動的資料恢復案例伺服器資料恢復AI作業系統
- 【北亞伺服器資料恢復】raid5崩潰導致同友儲存無法啟動的資料恢復案例伺服器資料恢復AI
- 克隆虛擬機器導致Linux無法啟動網路卡的分析與解決虛擬機Linux
- mysql 資料庫無法啟動Ignoring the redo log due to missing MLOG_CHECKPOINT betweenMySql資料庫
- wpf popup導致MouseLeftButtonUp無法觸發
- 有問題的mybatis的sql導致對資料庫進行了批量的修改MyBatisSQL資料庫
- PostgreSQL 恢復大法 - 恢復部分資料庫、跳過壞塊、修復無法啟動的資料庫SQL資料庫
- 資料庫資料恢復-oracle資料庫報錯無法開啟的如何恢復資料?資料庫資料恢復Oracle