記一次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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 記一次 Homestead 啟動故障修復
- 記一次android app啟動錯誤 Error running :Default Activity not foundAndroidAPPError
- 記錄一次根據錯誤資訊無法定位錯誤的錯誤
- 記一次令人絕望的mysql啟動報錯MySql
- Windows下hadoop環境搭建之NameNode啟動報錯WindowsHadoop
- windows下oracle的ora-27100錯誤WindowsOracle
- Windows系統下Tomcat服務無法啟動,返回錯誤“服務因 1 (0x1) 服務性錯誤而停止”WindowsTomcat
- 記一次自動恢復的支付故障
- Ubuntu下啟動、停止、重啟MySQL,檢視錯誤日誌命令大全UbuntuMySql
- git: 記一次push的錯誤,印象深刻Git
- windows10,homestead啟動時,VERR_INTNET_FLT_IF_NOT_FOUND 錯誤解決Windows
- minikube addons enable ingress 啟動錯誤
- ORA-01591錯誤故障處理
- Windows10系統啟動時提示inetcpl.cpl錯誤如何解決WindowsTCP
- Windows 錯誤程式碼Windows
- Windows 下 PHP 7 中 *getcsv 函式解析 CSV 錯誤的問題記錄WindowsPHP函式
- Eclipse 啟動專案錯誤:class not foundEclipse
- openstack 啟動認證服務錯誤
- mongodb 啟動故障MongoDB
- 記錄一次錯誤的使用當前時間new Date()引發的錯誤
- windows下啟動nacos服務Windows
- 記錄一次一次監聽無法連線的錯誤
- 記一次因為共享變數的犯錯誤變數
- 記一次Ubuntu網路故障Ubuntu
- swagger啟動錯誤Unable to infer base url.Swagger
- windows故障轉移叢集 “群集事件” 經常出現 1135 錯誤的解決Windows事件
- win10系統下無法啟動Windows defender提示0x800704ec錯誤程式碼如何解決Win10Windows
- 記錄一次homestead意外關閉導致的錯誤
- 記一次網路故障排障
- 記一次NAS故障分析(ZFS NFS)NFS
- windows10系統下HTTP錯誤400如何解決WindowsHTTP
- 【故障公告】週五下午的一次突發故障
- mysql 啟動錯誤(InnoDB: Operating system error number 13 )MySqlError
- 啟動IDEA 報 failed to load jvm dll XXX 錯誤IdeaAIJVM
- mysql服務啟動1053錯誤如何解決MySql
- Windows錯誤“ 0xc0000005”Windows
- 記一次錯誤:無法調起微信分享圖片
- Windows下make clean指令錯誤[錯誤碼2](系統找不到指定檔案)的解決方案Windows
- ghost win10啟動出現錯誤怎麼解決_ghost win10啟動出現錯誤如何修復Win10