下午一位壓測的同事找到我說一套壓測的庫鏈接報錯,報錯以下圖:sql
要來ip和實例名登到服務器上看pmon進程還在數據庫
ps -ef |grep pmonbash
查看監聽狀況也是正常的服務器
lsnrctl status oracle
這兩項都沒問題,嘗試登陸數據庫,以下圖:app
熟悉Oracle的同窗一看這個提示信息應該就能感受到不對,不是正常庫鏈接的提示信息ide
查詢數據庫狀態,語句執行報錯以下spa
語句沒法執行,而後轉站去看alert日誌3d
一直在報相似此種的信息,沒有找到有效的信息,順着日誌往前找到一個關鍵點,16:01:45曾嘗試shutdown數據庫日誌
繼續跟壓測同事溝通,他們嘗試下午重啓數據庫但報權限不足。
感受很奇怪,shutdown庫怎麼會沒有權限。
我也進行嘗試,shutdown immediate沒法執行,shutdown abort也報權限不足
這個問題肯定很奇怪,我是用sqlplus / as sysdba登陸的數據庫,怎麼會沒有權限,繼續往下查
查看用戶權限
這臺服務器上裝的是單實例,卻有grid用戶,感受仍是挺怪的。
從上面的輸出來看oracle用戶的權限和所屬組是沒有問題的
查看oracle文件的權限也沒有問題
至此找不到什麼問題了,因而轉站MOS,去查是否有相關文檔
找到一篇ORA-1031 While Starting An Instance As SYSDBA immediately After Applying A Patch (文檔 ID 1475357.1)但與這邊遇到的問題不太一致,文檔的最後有一篇參考文檔ORA-01031 DOING DATABASE STARTUP OR SHUTDOWN (文檔 ID 1008507.6)
裏面提到了TWO_TASK這個環境變量,之前數據庫出問題也跟這個變量有關,因而查看環境變量沒有配置這個變量
順着這個思路我查看了整個oracle用戶的環境變量找到了問題所在
原來oracle用戶中的PATH路徑配置了/u01/app/11.2.0/grid/bin這個路徑,權限不對
因而把.bash_profile中的PATH進行修改
從新登陸oracle用戶
再次sqlplus / as sysdba登陸數據庫,重啓,問題解決