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查询所有锁

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

更多推荐