Oracle使用者許可權及死鎖

2022-08-26 17:45:10 字數 4162 閱讀 3186

oracle使用者許可權表

oracle資料庫中涉及到使用者許可權的三個表,dba_users,all_users,user_users有什麼區別

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

使用者與模式

sys使用者,預設始終建立,且未被鎖定,擁有資料字典及其關聯的所有物件

system使用者,預設始終建立,且未被鎖定,可以訪問資料庫內的所有物件

狀態詳解

0open

當前帳戶是開放的使用者可以自由登入

1expired

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

2expired(grace)

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

4locked(timed)

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

8locked

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

5expired & locked(timed)

6expired(grace) & locked(timed)

9expired & locked

10expired(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

oracle使用者許可權及角色

每個oracle使用者都有乙個名字和口令,並擁有一些由其建立的表 檢視和其他資源。oracle角色 role 就是一組許可權 privilege 或者是每個使用者根據其狀態和條件所需的訪問型別 使用者可以給角色授予或賦予指定的許可權,然後將角色賦給相應的使用者。乙個使用者也可以直接給其他使用者授權。...

oracle使用者建立及許可權設定

許可權 create session create table unlimited tablespace connect resource dba例 sqlplus nolog sql conn as sysdba sql create user username identified by pas...

oracle使用者建立及許可權設定

許可權 create session create table unlimited tablespace connect resource dba例 sqlplus nolog sql conn as sysdba sql create user username identified by pas...