Linux
Oracle 返回錯誤 ORA-01031: 權限不足
sqlplus / as sysdba
當我執行但sqlplus sys/oracle123 as sysdba
沒有執行時, Oracle 返回錯誤“ORA-01031:權限不足” ,為什麼?
- Oracle 版本:Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bit
- Linux 版本:SUSE Linux Enterprise Server 11 (x86_64)
我知道 Oracle 在執行時使用 OS 身份驗證
sqlplus / as sysdba
,我還仔細檢查了 sqlnet.ora,它包含SQLNET.AUTHENTICATION_SERVICES = (NTS)
.我還更改了 oracle 使用者的組,oracle 使用者絕對屬於 dba 組,因為當我執行命令 id 時返回以下資訊:
oracle@linux-mage:~> id uid=103(oracle) gid=106(dba) groups=105(oinstall),106(dba)
另一個資訊是我可以通過 登錄
sqlplus sys/oracle123 as sysdba
,但我無法關閉實例:oracle@linux-mage:~> sqlplus sys/oracle123 as sysdba SQL*Plus: Release 10.2.0.1.0 - Production on Mon Sep 5 16:29:57 2011 Copyright (c) 1982, 2005, Oracle. All rights reserved. Connected. SQL> shutdown immediate ORA-24324: service handle not initialized ORA-24323: value not allowed ORA-27140: attach to post/wait facility failed SQL> shutdown abort ORA-01031: insufficient privileges SQL>
我執行 strace -o trace.out sqlplus “/ as sysdba” 並得到以下輸出消息。strace 消息太大。所以我將它粘貼到pastebin中。請訪問此連結
ipcs -s 和 ipcs -ls 資訊:
oracle@linux-mage:~> ipcs -s
------ Semaphore Arrays -------- key semid owner perms nsems oracle@linux-mage:~> ipcs -ls ------ Semaphore Limits -------- max number of arrays = 200 max semaphores per array = 250 max semaphores system wide = 32000 max ops per semop call = 100 semaphore max value = 32767
一定是在 O/S 級別出了問題 - 請查看此頁面以了解一些步驟來追踪問題
Post/wait 是信號量IPC 子系統 - 很可能是您的信號量用完了,或者信號量創建的權限不允許您的使用者訪問它們 - 檢查輸出
ipcs -s
,那裡的權限在哪裡? 將信號量的數量與 進行比較ipcs -ls
。