Oracle用戶權限及死鎖


Oracle用戶權限表

oracle數據庫中涉及到用戶權限的三個表,dba_users,all_users,user_users有什么區別

dba_開頭的是查全庫所有的,all_開頭的是查當前用戶可以看到的,user_開頭的是查當前用戶的

用戶與模式

    用戶:對數據庫的訪問,需要以適當用戶身份通過驗證,並具有相關權限來完成一系列動作

       SYS用戶,缺省始終創建,且未被鎖定,擁有數據字典及其關聯的所有對象

       SYSTEM用戶,缺省始終創建,且未被鎖定,可以訪問數據庫內的所有對象

狀態詳解

0

OPEN

當前帳戶是開放的用戶可以自由登錄

1

EXPIRED

當前帳戶已經過期用戶必須在修改密碼以后才可以登錄系統在登錄的時候系統會提示修改密碼

2

EXPIRED(GRACE)

這是有password_grace_time定義的一個時間段在用戶密碼過期以后的第一次登錄系統會提示用戶,密碼在指定的時間段以后會過期需要及時修改系統密碼.

4

LOCKED(TIMED)

這是一個有條件的帳戶鎖定日期password_lock_time進行控制lock_date加上password_lock_time的日期以后,帳戶會自動解鎖.

8

LOCKED

帳戶是鎖定的,用戶不可以登錄必須由安全管理員將帳戶打開用戶才可以登錄.

5

EXPIRED & LOCKED(TIMED)

 

6

EXPIRED(GRACE) & LOCKED(TIMED)

 

9

EXPIRED & LOCKED

 

10

EXPIRED(GRACE) & LOCKED

 

 

給賬戶加鎖

Alter user user1 account lock;

解鎖

Alter user user1 account unlock;

死鎖:兩個進程互相請求對方資源被阻塞就會死鎖,發生死鎖不能自動釋放,必須手動解鎖。

Oracle 鎖

v$lock視圖常用列解釋

sid:持有鎖的會話SID,通常與v$session關聯

type:鎖的類型,TM:表鎖,TX行鎖或事務鎖,其他類型為系統鎖,會自動釋放

  lmode:會話保持的鎖的模式。

          0=None;

          1=Null ;

          2=Row-S (SS,行級共享鎖,其他對象只能查詢這些數據行),sql操作有select for update、lock for update、lock row share;

          3=Row-X (SX,行級排它鎖,在提交前不允許做DML操作),sql操作有insert、update、delete、lock row share;

          4=Share(共享鎖),sql操作有create index、lock share;

          5=S/Row-X (SSX,共享行級排它鎖),sql操作有lock share row exclusive;

          6=Exclusive(排它鎖),alter table、drop table、drop index、truncate table、look exclusive等DDL

2.V$LOCKED_OBJECT
   session_id:         會話id。通常與v$session關聯。
   object_id:          被鎖對象標識。通常與dba_objects關聯。
   oracle_username:    登錄oracle用戶名。
   os_user_name:       電腦用戶名如:Administrator
   locked_mode:        會話保持的鎖的模式。

V$LOCKED_OBJECT主要查詢的用戶鎖,v$lock查詢所有鎖

v$Session常用列解釋
SID - session identifier 常用於鏈接其他列
SERIAL# - SID有可能會重復,當兩個session的SID重復時,SERIAL#用來區別session(說白了某個session是由sid和serial#這兩個值確定的)
USERNAME - session's username。等於dba_users中的username。Oracle內部進程的username為空。
STATUS - 用來判斷session狀態。Active:正執行SQL語句。inactive:等待操作。killed:被標注為殺死。
OSUSER - 客戶端操作系統用戶名。
MACHINE - 客戶端machine name。
TERMINAL - 客戶端執行的terminal name。

視圖dba_objects記錄數據庫中所有的對象

視圖描述如下:

OWNER:對象擁有者

OBJECT_NAME:對象名字

常用SQL:

查詢數據庫中的鎖


select * from v$lock;
select * from v$lock where block=1;

查詢被鎖的對象

select * from v$locked_object;

查詢阻塞

查被阻塞的會話
select * from v$lock where lmode=0 and type in ('TM','TX');

查阻塞別的會話鎖
select * from v$lock where lmode>0 and type in ('TM','TX');

查詢數據庫正在等待鎖的進程

select * from v$session where lockwait is not null;

查詢死鎖:

select b.owner TABLEOWNER, b.object_name TABLENAME, c.OSUSER LOCKBY, c.USERNAME LOGINID, c.sid SID, c.SERIAL# SERIAL

from v$locked_object a,dba_objects b, v$session c

where b.object_id = a.object_id AND a.SESSION_ID =c.sid;

解鎖

--通過SID, SERIAL解鎖 
--alter system kill session 'SID, SERIAL';

 

1.查看所有用戶:
  select * from dba_users;
  select * from all_users;
  select * from user_users;
 
2.查看用戶或角色系統權限(直接賦值給用戶或角色的系統權限):
  select * from dba_sys_privs;
  select * from user_sys_privs;
 
        
3.查看角色(只能查看登陸用戶擁有的角色)所包含的權限
sql>select * from role_sys_privs;
 
4.查看用戶對象權限:
  select * from dba_tab_privs;
  select * from all_tab_privs;
  select * from user_tab_privs;
 
5.查看所有角色:
  select * from dba_roles;
 
6.查看用戶或角色所擁有的角色:
  select * from dba_role_privs;
  select * from user_role_privs;
 
        
7.查看哪些用戶有sysdba或sysoper系統權限(查詢時需要相應權限)
select * from V$PWFILE_USERS


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM