SYS使用者登入Oracle報錯ORA-01031: insufficient privileges

迷倪小魏發表於2018-01-30


今天,自己寫了一個指令碼在測試環境執行指令碼的時候,導致資料庫異常的宕掉之後,然後重新連線就出現了下面的問題,下面是場景還原與解決的過程:

 

[oracle@seiang ~]$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.4.0 Production on Tue Jan 30 08:39:21 2018

 

Copyright (c) 1982, 2013, Oracle.  All rights reserved.

 

Connected.

SYS@seiang11g>shutdown immediate

ORA-24324: service handle not initialized

ORA-24323: value not allowed

ORA-01089: immediate shutdown in progress - no operations are permitted

 

1、嘗試強制關閉和開啟資料庫,都出現報錯ORA-01031: insufficient privileges

SYS@seiang11g>shutdown abort

ORA-01031: insufficient privileges

SYS@seiang11g>startup

ORA-01031: insufficient privileges

 

2、接下來嘗試去檢視資料庫的引數,提示說沒有登入

SYS@seiang11g>show parameter password

ERROR:

ORA-01012: not logged on

 

3、下面使用SYS連線到資料庫例項,看到提示說連線到一個空閒的例項

SYS@seiang11g>conn / as sysdba

Connected to an idle instance.

 

4、接下來,嘗試重新啟動資料庫,再次提示說沒有登入

SYS@seiang11g>startup

ORA-01012: not logged on

 

5、再次嘗試強制的關閉資料庫,然後在重新啟動資料庫,啟動成功

SYS@seiang11g>shutdown abort

ORACLE instance shut down.

SYS@seiang11g>

SYS@seiang11g>startup

ORACLE instance started.

 

Total System Global Area 1252663296 bytes

Fixed Size                  2252824 bytes

Variable Size             738201576 bytes

Database Buffers          503316480 bytes

Redo Buffers                8892416 bytes

Database mounted.

Database opened.

 

資料庫啟動成功!

補充說明:

對於ORA-01031: insufficient privileges報錯,常見的一些原因和解決思路:

1、如果是多個資料庫例項時候,set ORACLE_SID= ''

2、檢查sqlnet.oraWINDOWS下位於%ORACLE_HOME%NETWORKADMIN目錄)是否包含這句:
SQLNET.AUTHENTICATION_SERVICES=(NTS)
,沒有的話加上;

3
、檢查登陸windows的使用者(administrator或安裝oracle時候使用的使用者)是不是在包含在ORA_DBA組中,域使用者沒有連上域伺服器時就可能出現這種現象。

3、要保證 remote_login_passwordfile 引數 = EXCLUSIVE .

4、檢視口令檔案和資料庫例項是否是對應的,如果不對應,則需要使用orapwd重新生成口令檔案

【關於Oracle的兩種認證方式請參考另一篇博文: Oracle中兩種認證方式:OS認證與口令檔案認證 

 

作者:SEian.G(苦練七十二變,笑對八十一難)

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31015730/viewspace-2150635/,如需轉載,請註明出處,否則將追究法律責任。

相關文章