Oracle角色其实就是一组权限的集合,比如我们经常用的DBA、connect、resource等角色,都是Oracle系统为我们定义好的一些常用的角色,一般利用这些角色就可以控制好不同需求用户的权限。
Oracle中角色可以授予给多个用户,并且一个用户可以设置多个角色。因此,Oracle数据库也提供了自定义角色的功能,方便不同用户的权限授予。例如,可以自定义个一个角色,可以查询、更新特定几个关联表的权限。那么以后但凡有用户想用到这些表的操作权限时,可以直接给该用户设置定义好的角色。

oracle常见系统权限

ALTER DATABASE 对数据库进行改动,例如将数据库状态从 MOUNT改为OPEN,或
者是恢复数据库
ALTER SYSTEM 发布 ALTER SYSTEM语句:切换到下一个重做日志组,改变SPFILE中的系统初始参数
AUDIT SYSTEM 发布 ALTER SYSTEM语句:切换到下一个重做日志组,改变SPFILE中的系统初始参数
AUDIT SYSTEM 发布AUDI语句
CREATE DATABASE LINK 创建到远程数据库的数据库链接
CREATE ANY INDEX 在任意模式中创建索引;针对用户的模式,随同 CREATE TABLE一起授权 CREATE INDEX
CREATE PROFILE 创建资源/密码配置文件
CREATE ANY PROCEDURE 在任意模式中创建函数、过程或程序包
CREATE PROCEDURE 在自己的模式中创建函数、过程或程序包
CREATE SESSION 连接到数据库
CREATE SYNONYM 在自己的模式中创建私有同义词
CREATE ANY SYNONYM 在任意模式中创建私有同义词
CREATE PUBLIC SYNONYM 创建公有同义词
DROP ANY SYNONYM 在任意模式中删除私有同义词
DROP PUBLIC SYNONYM 删除公有同义词
CREATE TABLE 在自己的模式中创建表
CREATE ANY TABLE 在任意模式中创建表
CREATE TABLESPACE 在数据库中创建新的表空间
CREATE USER 创建用户账户/模式
ALTER USER 改动用户账户/模式
CREATE VIEW 在自己的模式中创建视图
SYSDBA 如果启用了外部密码文件,则在外部密码文件中创建一个条目:同
时,执行启动/关闭数据库,改变数据库,创建数据库,恢复数据
库,创建 SPFILE,以及当数据库处于 RESTRICTED SESSION模
式时连接数据库
SYSOPER 如果启用了外部密码文件,则在外部密码文件中创建一个条目;同
时,执行启动/关闭数据库,改变数据库,恢复数据库,创建 SPFILE,
以及当数据库处于 RESTRICTED

示例

给予c##test用户创建存储过程和登陆,建表权限

  1. SQL> grant create table,create session,create procedure to c##test;
  2. Grant succeeded.

撤销创建存储过程权限

  1. SQL> revoke create procedure from c##test;
  2. Revoke succeeded.

如果希望权限可传递,可以在授予权限语句后面加’with admin option’, 但收回系统权限时,不会从其它帐户级联取消曾被授予的相同权限

  1. SQL> grant create procedure to c##test with admin option ;
  2. Grant succeeded.

创建权限角色

  1. SQL> create role c##test1;
  2. Role created.

授予角色权限

  1. SQL> grant create database link to c##test1;
  2. Grant succeeded.

将角色授予用户

  1. SQL> grant c##test1 to c##test;
  2. Grant succeeded.

常见系统权限视图

dba_sys_privs 赋予角色和用户的系统权限
session_privs 该会话用户的所有系统权限,通过角色或者直接授权
role_sys_privs 通过角色授权给该用户当前会话的权限