如何获得某个用户对某个对象的访问权限

王朝other·作者佚名  2008-05-31
窄屏简体版  字體: |||超大  

与权限相关的数据字典

SQL> select * from dict where table_name like '%PRIVS' or table_name like '%ROLE%';

TABLE_NAME COMMENTS

-----------------------------------------------------------------------------------------------

ALL_TAB_PRIVS All object grants where the user or public is grantee

ALL_TAB_PRIVS_MADE All object grants made by user or on user owned objects

ALL_TAB_PRIVS_RECD All object grants to user or public

DBA_SYS_PRIVS System privileges granted to users and roles

DBA_ROLES List of all roles in the database

DBA_ROLE_PRIVS Roles granted to users and to other roles

ROLE_ROLE_PRIVS Roles granted to other roles

ROLE_SYS_PRIVS System privileges granted to roles

ROLE_TAB_PRIVS Table privileges granted to roles

SESSION_PRIVS All privileges currently available to user

SESSION_ROLES All roles currently available to user

USER_SYS_PRIVS System privileges granted to current user

USER_TAB_PRIVS Grants on objects where current user is grantee, grantor, or owner

主要介绍***_TAB_PRIVS

DBA_TAB_PRIVS:

Name Null? Type

---------------------------- -------- ----------------------------

GRANTEE NOT NULL VARCHAR2(30) <== Receiver of privilege

OWNER NOT NULL VARCHAR2(30)

TABLE_NAME NOT NULL VARCHAR2(30)

GRANTOR NOT NULL VARCHAR2(30) <-- Giver of privilege

PRIVILEGE NOT NULL VARCHAR2(40)

GRANTABLE VARCHAR2(3) <-- Grantee has ability to grant privilege to others

DBA_TAB_PRIVS 数据字典表纪录了所有数据库对象的授权情况,这些对象包括表,视图,存储过程等。利用这个视图可以生成数据库对象的权限脚本

Oracle数据库权限主要分为2类:对象访问权限(tables, indexes, views...) 和 系统权限(create session, create table, create user...). DBA_TAB_PRIVS 只记录 对象访问权限。

其他相关视图:

ALL_TAB_PRIVS All object grants where the user or public is grantee

ALL_TAB_PRIVS_MADE All object grants made by user or on user owned objects

ALL_TAB_PRIVS_RECD All object grants to user or public

DBA_SYS_PRIVS System privileges granted to users and roles

DBA_ROLES List of all roles in the database

DBA_ROLE_PRIVS Roles granted to users and to other roles

ROLE_ROLE_PRIVS Roles granted to other roles

ROLE_SYS_PRIVS System privileges granted to roles

ROLE_TAB_PRIVS Table privileges granted to roles

SESSION_PRIVS All privileges currently available to user

SESSION_ROLES All roles currently available to user

USER_SYS_PRIVS System privileges granted to current user

USER_TAB_PRIVS Grants on objects where current user is grantee, grantor, or owner

获得用户的对象权限script

UT1> l

1 select grantee,

2 privilege,

3 grantable "Adm",

4 owner,

5 table_name

6 from sys.dba_tab_privs

7 where grantee = upper('&usernm')

8* order by grantee, owner, table_name, privilege

GRANTEE PRIVILEGE Adm OWNER TABLE_NAME

------------ ---------- --- ------------ -------------------------

SEFIN DELETE NO SYSTEM SRW_FIELD

INSERT NO SYSTEM SRW_FIELD

SELECT NO SYSTEM SRW_FIELD

UPDATE NO SYSTEM SRW_FIELD

set echo off

rem

rem 19980729 M D Powell New script.

rem

set verify off

set pagesize 0

set feedback off

spool grt_&&owner._&&table_name..sql

select 'REM grants on &&owner..&&table_name'

from sys.dual ;

select 'grant 'privilege' on 'lower(owner)'.'

lower(table_name)' to 'grantee

decode(grantable,'YES',' with grant option',NULL)

' ;'

from sys.dba_tab_privs

where owner = upper('&&owner')

and table_name = upper('&&table_name')

order by grantee, privilege ;

spool off

undefine owner

undefine table_name Sample output:

grant INDEX on jit.wo_master to EDSJIT ;

grant INSERT on jit.wo_master to EDSJIT with grant option ;

grant REFERENCES on jit.wo_master to EDSJIT ;

grant SELECT on jit.wo_master to EDSJIT with grant option ;

当在开发数据库上丢失了对象权限的时候,可以在产品数据库上运行该script获得丢失的授权脚本。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航