Chinaunix首页 | 论坛 | 博客
  • 博客访问: 27008
  • 博文数量: 34
  • 博客积分: 65
  • 博客等级: 民兵
  • 技术积分: 180
  • 用 户 组: 普通用户
  • 注册时间: 2010-03-16 14:56
文章分类
文章存档

2012年(4)

2011年(30)

我的朋友

分类:

2011-12-26 10:06:52

本文将为大家介绍Oracle用户权限视图的使用方法,包括一些Oracle用户权限视图的命令等。希望能对大家日常数据库维护有所帮助。

  查看当前用户:SQL>select user from dual;

  一. Oracle用户权限视图概述

  与权限,角色相关的视图大概有下面这些:

  DBA_SYS_PRIVS: 查询某个用户所拥有的系统权限

  USER_SYS_PRIVS: 当前用户所拥有的系统权限

  SESSION_PRIVS: 当前用户所拥有的全部权限

  ROLE_SYS_PRIVS: 某个角色所拥有的系统权限

  注意: 要以SYS用户登陆查询这个视图,否则返回空.

  ROLE_ROLE_PRIVS: 当前角色被赋予的角色

  SESSION_ROLES: 当前用户被激活的角色

  USER_ROLE_PRIVS: 当前用户被授予的角色

  另外还有针对表的访问权限的视图:

  TABLE_PRIVILEGES

  ALL_TAB_PRIVS

  ROLE_TAB_PRIVS: 某个角色被赋予的相关表的权限

  ...

  二.Examples

  1.查询当前用户所拥有的权限

  Select * from session_privs;

  2.查询某个用户被赋予的系统权限:

  可以有多种方式

  Select * from user_sys_privs;

  或者: select * from DBA_SYS_PRIVS where grantee='XXX'

  (需要当前用户拥有DBA角色)

  3.查询当前用户被授予的角色:

  Select * from SESSION_ROLES order by ROLE

  说明: 这个查询会返回当前用户所被授予的全部角色, 其中包括

  嵌套授权的角色. 例如将DBA角色授予了一个用户,DBA角色

  已经被授予的角色(例如 exp_full_database 和 imp_full_database)

  也会被查询出来

  Select * from USER_ROLE_PRIVS

  4.查询某一角色被赋予的系统权限

  Select Privilege from ROLE_SYS_PRIVS where ROLE=&Role

  输入 role='CONNECT'

  输出:

  PRIVILEGE -------------------- ALTER SESSION CREATE CLUSTER CREATE DATABASE LINK CREATE SEQUENCE CREATE SESSION CREATE SYNONYM CREATE TABLE CREATE VIEW

  5. 查询当前角色被授予的角色

  Select GRANTED_ROLE from ROLE_ROLE_PRIVS where ROLE=&ROLE

  输入 role= 'DBA'

  输出:

  GRANTED_ROLE ---------------------- DELETE_CATALOG_ROLE EXECUTE_CATALOG_ROLE EXP_FULL_DATABASE IMP_FULL_DATABASE PLUSTRACE SELECT_CATALOG_ROLE

  说明: PLUSTRACE这个角色是用于执行SQL AUTO TRACE的, 通过执行

  $ORACLE_HOME/sqlplus/admin/plustrce.sql可以生成这个角色。


阅读(131) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~