Linux

Oracle 返回錯誤 ORA-01031: 權限不足

  • May 19, 2016

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中。請訪問此連結

http://pastebin.com/YpjVeG8u

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

引用自:https://dba.stackexchange.com/questions/5395