記一次Windows下啟動錯誤故障
Oracle資料庫最早是構建在Unix/Linux環境下,提供企業級應用。所以,其中很多的配置和架構體系都是依存在Unix/Linux思路。
1、 故障症狀
一臺專案組內部使用的資料庫伺服器斷電停機了,重啟之後就資料庫沒有自動啟動。在工作管理員中,使用重新啟動資料庫服務OracleServiceOrcl,啟動過程中沒有錯誤報出。監聽器服務啟動,檢查監聽器服務狀態如下:
LSNRCTL> status
正在連線到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=acca-119hs63yxc)(PORT=1521)
))
LISTENER 的 STATUS
------------------------
別名 LISTENER
版本 TNSLSNR for 32-bit Windows: Version 10.2.0.1.0 - Production
啟動日期 11-10月-2011 12:35:32
正常執行時間 0 天 0 小時 0 分 21 秒
跟蹤級別 off
安全性 ON: Local OS Authentication
SNMP OFF
監聽程式引數檔案 C:\tool\oracle\oracle\product\10.2.0\db_1\network\admin\listener.ora
監聽程式日誌檔案 C:\tool\oracle\oracle\product\10.2.0\db_1\network\log\listener.log
監聽端點概要... (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=acca-119hs63yxc)(PORT=1521)))
監聽程式不支援服務
命令執行成功
資料庫沒有啟動,那麼嘗試手工命令列登入。
C:\Documents and Settings\Administrator>sqlplus /nolog
SQL*Plus: Release 10.2.0.1.0 - Production on 星期二 10月 11 12:36:03 2011
Copyright (c) 1982, 2005, Oracle. All rights reserved.
SQL> conn / as sysdba
ERROR:
ORA-12641: 驗證服務無法初始化
SQL> conn sys/sys as sysdba
ERROR:
ORA-12641: 驗證服務無法初始化
登入無法實現。
2、問題分析
從監聽器的情況看,監聽器是在執行,但是沒有註冊的服務傳入進來。起碼證明資料庫例項Instance的沒有啟動或者啟動中斷。另外一個疑點在於即使例項沒有啟動,單獨使用本機使用者進行伺服器端驗證也無法登陸。
那麼,首先排除一下是不是在Instance啟動過程中出現什麼問題,檢查AlertLog。下面是抽取到的日誌最後記錄。
Fri Sep 23 15:46:13 2011
Thread 1 advanced to log sequence 1428
Current log# 2 seq# 1428 mem# 0: C:\TOOL\ORACLE\ORACLE\PRODUCT\10.2.0\ORADATA\OTS\REDO02A.LOG
Current log# 2 seq# 1428 mem# 1: C:\TOOL\ORACLE\ORACLE\PRODUCT\10.2.0\ORADATA\OTS\REDO02B.LOG
Sat Sep 24 06:00:09 2011
Thread 1 advanced to log sequence 1429
Current log# 3 seq# 1429 mem# 0: C:\TOOL\ORACLE\ORACLE\PRODUCT\10.2.0\ORADATA\OTS\REDO03A.LOG
Current log# 3 seq# 1429 mem# 1: C:\TOOL\ORACLE\ORACLE\PRODUCT\10.2.0\ORADATA\OTS\REDO03B.LOG
當前日期是10月11日,而alert_log中的最後的記錄是在9月24日。說明最起碼在啟動當天,使用工作管理員啟動根本就沒有觸及到啟動的過程。
結合使用sqlplus不能登陸的現象,說明在啟動之前,使用當前使用者進行驗證登入是失敗的。
[oracle@bspdev ~]$ oerr ora 12641
12641, 00000, "Authentication service failed to initialize"
// *Cause: The authentication service failed during initialization.
// *Action: Enable tracing to determine the exact error.
那麼,整個問題的焦點就集中到空閒例項登入驗證機制上。因為即使是使用工作管理員進行例項啟動,實現機制無外於由OS使用當前使用者進行登入。所以,下一步的檢查目標是驗證機制配置檔案tnsnames.ora。
開啟該檔案,發現如下配置。
SQLNET.AUTHENTICATION_SERVICES = (ALL)
該引數確定的是是否使用作業系統驗證機制。在Windows平臺上,配置工具netca將這個引數預設設定為NT。取值NT的含義是專門用於Windows平臺的驗證機制。在官方文件上,Windows平臺設定為ALL也是可以進行OS驗證的。
3、問題解決
理論上沒有問題,但是筆者嘗試將其修改為NT,看看實際的效果。
SQLNET.AUTHENTICATION_SERVICES = (NT)
嘗試進行sqlplus連線。
SQL> conn sys/acca as sysdba
已連線到空閒例程。
SQL> startup
ORACLE 例程已經啟動。
Total System Global Area 419430400 bytes
Fixed Size 1249368 bytes
Variable Size 83890088 bytes
Database Buffers 331350016 bytes
Redo Buffers 2940928 bytes
資料庫裝載完畢。
資料庫已經開啟。
啟動成功,監聽器狀態如下。
--篇幅原因,有省略……
LSNRCTL> status
正在連線到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=acca-119hs63yxc)(PORT=1521)
))
LISTENER 的 STATUS
------------------------
監聽端點概要...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=acca-119hs63yxc)(PORT=1521)))
服務摘要..
服務 "OTSXDB" 包含 1 個例程。
例程 "ots", 狀態 READY, 包含此服務的 1 個處理程式...
服務 "OTS_XPT" 包含 1 個例程。
例程 "ots", 狀態 READY, 包含此服務的 1 個處理程式...
服務 "ots" 包含 1 個例程。
例程 "ots", 狀態 READY, 包含此服務的 1 個處理程式...
命令執行成功
alert_log中也出現了對應的啟動過程日誌,無故障。登入嘗試也成功。
SQL> conn scott/tiger@otstest;
Connected to Oracle Database 10g Enterprise Edition Release 10.2.0.1.0
Connected as scott
4、結論和反思
說明,在windows上嘗試使用Oracle 10gR2(起碼在筆者的伺服器上嘗試使用)ALL選項,會帶來驗證登入問題。
下面是該引數幾個取值在驗證上的效果。
SQLNET.AUTHENTICATION_SERVICES = (ALL)
SQL> conn / as sysdba
ERROR:
ORA-12641: 驗證服務無法初始化
SQL> conn sys/acca as sysdba
ERROR:
ORA-12641: 驗證服務無法初始化
取值NONE效果。
SQLNET.AUTHENTICATION_SERVICES = (NONE)
SQL> conn / as sysdba
ERROR:
ORA-01031: 許可權不足
SQL> conn sys/acca as sysdba
已連線。
SQL>
取值NT效果。
SQLNET.AUTHENTICATION_SERVICES = (NT)
SQL> conn / as sysdba
ERROR:
ORA-01031: 許可權不足
警告: 您不再連線到 ORACLE。
SQL> conn sys/acca as sysdba
已連線。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/17203031/viewspace-709211/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 一次儲存故障引起的資料庫啟動錯誤資料庫
- windows 下 asm儲存啟動故障WindowsASM
- 記一次android app啟動錯誤 Error running :Default Activity not foundAndroidAPPError
- mysql 啟動錯誤MySql
- Windows系統錯誤程式碼-----故障檢測用Windows
- 記錄一次根據錯誤資訊無法定位錯誤的錯誤
- MongoDB的一次錯誤記錄MongoDB
- 記一次令人絕望的mysql啟動報錯MySql
- 修正windows下ora錯誤顯示???Windows
- Linux下matlab開啟出現啟動桌面時錯誤LinuxMatlab
- Windows 8啟用錯誤程式碼解析Windows
- 記一次 oracle expdp 匯出錯誤Oracle
- ubuntu 啟動錯誤stdin:is not ttyUbuntu
- Ubuntu下啟動、停止、重啟MySQL,檢視錯誤日誌命令大全UbuntuMySql
- Windows Time服務無法啟動 錯誤5拒絕訪問Windows
- Windows下hadoop環境搭建之NameNode啟動報錯WindowsHadoop
- Windows下啟動Solr報錯:Nothing to start,exiting...WindowsSolr
- git: 記一次push的錯誤,印象深刻Git
- 記一次OPatch failed with error code 73錯誤AIError
- Apache Hive啟動報NoClassDefFoundError錯誤ApacheHiveError
- Windows系統下Tomcat服務無法啟動,返回錯誤“服務因 1 (0x1) 服務性錯誤而停止”WindowsTomcat
- oracle EBS啟動無錯誤,訪問網頁500錯誤Oracle網頁
- 記一次AsmLib故障ASM
- 記一次Linux故障Linux
- mongodb 啟動故障MongoDB
- 在windows下檢視oracle錯誤的方法WindowsOracle
- windows下啟動nacos服務Windows
- windows下oracle自動啟動指令碼WindowsOracle指令碼
- 記錄一次一次監聽無法連線的錯誤
- 記錄一次錯誤的使用當前時間new Date()引發的錯誤
- windows下oracle的ora-27100錯誤WindowsOracle
- 記一次因為共享變數的犯錯誤變數
- 【故障恢復】因spfile修改錯誤導致資料庫無法啟動的恢復方法資料庫
- Windows 8下如何禁用啟動項Windows
- Windows 下快速後臺啟動 RedisWindowsRedis
- MySQL Windows下關閉和啟動MySqlWindows
- 在Windows下啟動Linux(轉)WindowsLinux
- windows10,homestead啟動時,VERR_INTNET_FLT_IF_NOT_FOUND 錯誤解決Windows