(一)ora-01031:insufficient privileges
1.sqlplus "/ as sysdba" 連不上,報ora-01031:insufficient privileges解決方法
select instance_name from v$instance;#查看oracle實例名
SQL> select instance_name from v$instance;
INSTANCE_NAME
--------------------------------
orcl
--------------------------------
orcl
(1)檢查sqlnet.ora(WINDOWS下位於%ORACLE_HOME%NETWORKADMIN目錄)是否包含這句:SQLNET.AUTHENTICATION_SERVICES=(NTS),沒有的話加上
(2)檢查登陸的用戶是不是在包含在ORA_DBA組中,
windows上是(administrator或安裝oracle時候使用的用戶),域用戶沒有連上域服務器時就可能出現這種現象;linux、unix上root或安裝oracle的授權賬戶
SQL> select * from v$pwfile_users;
USERNAME SYSDBA SYSOPER
------------------------------------------------------------ ---------- --------- SYS TRUE TRUE 如果返回空,則SYS無dba權限
SQL> grant sysdba to sys;
grant sysdba to sys * ERROR at line 1: ORA-01994: GRANT failed: password file missing or disabled 此次應重建或修改密碼文件,詳見第(4)步
V$PWFILE_USERS
這個視圖列出從口令文件中導出的授予SYSDBA和SYSOPER權限的用戶。
列 數據類型 說明
USERNAME
VARCHAR2(30)
包含在口令文件中的用戶名
SYSDBA
VARCHAR2(5)
如果此列的值爲TURE,則該用戶可利用SYSDBA權限進行連接
SYSOPER
VARCHAR2(5)
如果此列的值爲TURE,則該用戶可利用SYSOPER權限進行連接 |
(3)要保證 remote_login_passwordfile 參數 = EXCLUSIVE
SQL> show parameter password
NAME TYPE
------------------------------------ ---------------------- VALUE ------------------------------ remote_login_passwordfile string EXCLUSIVE #---------如果不是運行
SQL>alter system set remote_login_passwordfile=EXCLUSIVE scope=spfile;
#/*-------------------------
REMOTE_LOGIN_PASSWORDFILE= {NONE | SHARED} Values:
Note:
The value
EXCLUSIVE is supported for backward compatibility. It now has the same behavior as the value SHARED . #-----------------------*/ |
(4)看看是否需要使用orapassw生成口令文件
比如機器是windows系統:
orapwd file="D:/oracle/product/10g/db_1/database/PWDoratest.ora" password=gp
oswong entries=10
oswong entries=10
SQL> select * from v$pwfile_users;
USERNAME SYSDB SYSOP
------------------------------ ----- -----
SYS TRUE TRUE
------------------------------ ----- -----
SYS TRUE TRUE
SYS正常顯示出來,重新在遠程以SYSDBA登錄,可正常使用。
(二)ORA-01925: maximum of 30 enabled roles exceeded
sysdba登陸oracle
#-------------------1.查看oracle數據庫最大角色數
SQL> show parameter role;
NAME TYPE
------------------------------------ ----------------------
VALUE
------------------------------
max_enabled_roles integer
30
os_roles boolean
FALSE
remote_os_roles boolean
FALSE
SQL>
------------------------------------ ----------------------
VALUE
------------------------------
max_enabled_roles integer
30
os_roles boolean
FALSE
remote_os_roles boolean
FALSE
SQL>
SQL> show parameter max_enabled_roles
NAME TYPE
------------------------------------ ----------------------
VALUE
------------------------------
max_enabled_roles integer
30
SQL>
------------------------------------ ----------------------
VALUE
------------------------------
max_enabled_roles integer
30
SQL>
#-------------------2.修改最大角色數
SQL> alter system set max_enabled_roles=500 scope=spfile;
alter system set max_enabled_roles=500 scope=spfile
*
ERROR 位於第 1 行:
ORA-00068: 值 500 對參數 max_enabled_roles 無效,必須在 1 和 148 之間
alter system set max_enabled_roles=500 scope=spfile
*
ERROR 位於第 1 行:
ORA-00068: 值 500 對參數 max_enabled_roles 無效,必須在 1 和 148 之間
SQL> alter system set max_enabled_roles=148 scope=spfile;
系統已更改。
#-------------------3.系統重啓,修改參數生效
SQL> shutdown immediate;
數據庫已經關閉。
已經卸載數據庫。
ORACLE 例程已經關閉。
SQL> startup
ORACLE 例程已經啓動。
數據庫已經關閉。
已經卸載數據庫。
ORACLE 例程已經關閉。
SQL> startup
ORACLE 例程已經啓動。
Total System Global Area 139533192 bytes
Fixed Size 453512 bytes
Variable Size 113246208 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
數據庫裝載完畢。
數據庫已經打開。
Fixed Size 453512 bytes
Variable Size 113246208 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
數據庫裝載完畢。
數據庫已經打開。
SQL> show parameter role
NAME TYPE
------------------------------------ ----------------------
VALUE
------------------------------
max_enabled_roles integer
148
os_roles boolean
FALSE
remote_os_roles boolean
FALSE
------------------------------------ ----------------------
VALUE
------------------------------
max_enabled_roles integer
148
os_roles boolean
FALSE
remote_os_roles boolean
FALSE