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用户创建存储过程和登陆,建表权限
SQL> grant create table,create session,create procedure to c##test;
Grant succeeded.
撤销创建存储过程权限
SQL> revoke create procedure from c##test;
Revoke succeeded.
如果希望权限可传递,可以在授予权限语句后面加’with admin option’, 但收回系统权限时,不会从其它帐户级联取消曾被授予的相同权限
SQL> grant create procedure to c##test with admin option ;
Grant succeeded.
创建权限角色
SQL> create role c##test1;
Role created.
授予角色权限
SQL> grant create database link to c##test1;
Grant succeeded.
将角色授予用户
SQL> grant c##test1 to c##test;
Grant succeeded.
常见系统权限视图
dba_sys_privs | 赋予角色和用户的系统权限 |
---|---|
session_privs | 该会话用户的所有系统权限,通过角色或者直接授权 |
role_sys_privs | 通过角色授权给该用户当前会话的权限 |