Oracle中的系统权限和对象权限

                                         Oracle中的系统权限和对象权限

系统权限的定义:


             系统权限(system privilege):指在系统级控制数据库的存取和使用的机制,即执行某种SQL语句的能力。如,是否能启动、停止数据库,是否能修改数据库参数,是否能连接到数据库,是否能创建、删除、更改方案对象(如表、索引、视图、过程)等。它一般是针对某一类方案对象或非方案对象的某种操作的全局性能力。


             提 示没有系统权限的用户实际上是个连登录能力都没有的、有名无实的用户在Oracle数据库中,SYSTEM是数据库管理员,他具有DBA角色,即具有DBA角色的所有系统权限,包括SELECT  ANY  DICTIONARY,所以,他可以查询数据字典中的、以“DBA_”开头的数据字典视图,如DBA_USERS。


系统权限的分类:


               每种系统权限都为用户提供了执行某一种或某一类系统级的数据库操作的权力,即系统级的DDL(Data Definition Language)语句、DML(Data Manipulation Language)语句的权力。数据字典视图system_privilege_map中包括了Oracle数据库中的所有系统权限。查询该视图可以了解系统权限的信息,


查询系统权限的个数:


select  coiunt(*) from system_privilege_map;


查询具体的系统权限


select  *  from system_privilege_map;


系统权限的类型、名称、说明

类型/系统权限

说明

群集权限

CREATE CLUSTER

在自己的方案中创建、更改和删除群集

CREATE ANY CLUSTER

在任何方案中创建群集

ALTER ANY CLUSTER

在任何方案中更改群集

DROP ANY CLUSTER

在任何方案中删除群集

数据库权限

ALTER DATABASE

运行ALTER DATABASE语句,更改数据库的配置

ALTER SYSTEM

运行ALTER SYSTEM语句,更改系统的初始化参数

AUDIT SYSTEM

运行AUDIT SYSTEM和NOAUDIT SYSTEM语句,审计SQL

AUDIT ANY

运行AUDIT和NOAUDIT语句,对任何方案的对象进行审计

索引权限

CREATE ANY INDEX

在任何方案中创建索引

注意:没有CREATE INDEX权限,CREATE TABLE权限包含了CREATE INDEX权限

ALTER ANY INDEX

在任何方案中更改索引

DROP ANY INDEX

任何方案中删除索引

过程权限

CREATE PROCEDURE

在自己的方案中创建、更改或删除过程、函数和包

CREATE ANY PROCEDURE

在任何方案中创建过程、函数和包

ALTER ANY PROCEDURE

在任何方案中更改过程、函数和包

DROP ANY PROCEDURE

在任何方案中删除过程、函数或包

EXECUTE ANY PROCEDURE

在任何方案中执行或者引用过程

概要文件权限

CREATE PROFILE

创建概要文件

ALTER PROFILE

更改概要文件

DROP PROFILE

删除概要文件

角色权限

CREATE ROLE

创建角色

ALTER ANY ROLE

更改任何角色

DROP ANY ROLE

删除任何角色

GRANT ANY ROLE

向其他角色或用户授予任何角色

注意:没有对应的REVOKE ANY ROLE权限

回退段权限

CREATE ROLLBACK SEGMENT

创建回退段

注意:没有对撤销段的权限

ALTER ROLLBACK SEGMENT

更改回退段

DROP ROLLBACK SEGMENT

删除回退段

序列权限

CREATE SEQLENCE

在自己的方案中创建、更改、删除和选择序列

CREATE ANY SEQUENCE

在任何方案中创建序列

ALTER ANY SEQUENCE

在任何方案中更改序列

DROP ANY SEQUENCE

在任何方案中删除序列

SELECT ANY SEQUENCE

在任何方案中从任何序列中进行选择

会话权限

CREATE SESSION

创建会话,登录进入(连接到)数据库

ALTER SESSION

运行ALTER SESSION语句,更改会话的属性

ALTER RESOURCE COST

更改概要文件中的计算资源消耗的方式

RESTRICTED SESSION

在数据库处于受限会话模式下连接到数据

同义词权限

CREATE SYNONYM

在自己的方案中创建、删除同义词

CREATE ANY SYNONYM

在任何方案中创建专用同义词

CREATE PUBLIC SYNONYM

创建公共同义词

DROP ANY SYNONYM

在任何方案中删除同义词

DROP PUBLIC SYNONYM

删除公共同义词

表权限

CREATE TABLE

在自己的方案中创建、更改和删除表

CREATE ANY TABLE

在任何方案中创建表

ALTER ANY-TABLE

在任何方案中更改表

DROP ANY TABLE

在任何方案中删除表

COMMENT ANY TABLE

在任何方案中为任何表、视图或者列添加注释

SELECT ANY TABLE

在任何方案中选择任何表中的记录

INSERT ANY TABLE

在任何方案中向任何表插入新记录

UPDATE ANY TABLE

在任何方案中更改任何表中的记录

DELETE ANY TABLE

在任何方案中删除任何表中的记录

LOCK ANY TABLE

在任何方案中锁定任何表

FLASHBACK ANY TABLE

允许使用AS OF子句对任何方案中的表、视图执行一个SQL语句的闪回查询

表空间权限

CREATE TABLESPACE

创建表空间

ALTER TABLESPACE

更改表空间

DROP TABLESPACE

删除表空间,包括表、索引和表空间的群集

MANAGE TABLESPACE

管理表空间,使表空间处于ONLINE(联机)、OFFLINE(脱机)、BEGIN BACKUP(开始备份)、END BACKUP(结束备份)状态

UNLIMITED TABLESPACE

不受配额限制地使用表空间

注意:只能将UNLIMITED TABLESPACE授予账户而不能授予角色

用户权限

CREATE USER

创建用户

ALTER USER

更改用户

BECOME USER

当执行完全装入时,成为另一个用户

DROP USER

删除用户

视图权限

CREATE VIEW

在自己的方案中创建、更改和删除视图

CREATE ANY VIEW

在任何方案中创建视图

DROP ANY VIEW

在任何方案中删除视图

COMMENT ANY TABLE

在任何方案中为任何表、视图或者列添加注释

FLASHBACK ANY TABLE

允许使用AS OF子句对任何方案中的表、视图执行一个SQL语句的闪回查询

触发器权限

CREATE TRIGGER

在自己的方案中创建、更改和删除触发器

CREATE ANY TRIGGER

在任何方案中创建触发器

ALTER ANY TRIGGER

在任何方案中更改触发器

DROP ANY TRIGGER

在任何方案中删除触发器

ADMINISTER DATABASE TRIGGER

允许创建ON DATABASE触发器。在能够创建ON DATABASE触发器之前,还必须先拥有CREATE TRIGGER或CREATE ANY TRIGGER权限

专用权限

SYSOPER

(系统操作员权限)

STARTUP

SHUTDOWN

ALTER DATABASE MOUNT/OPEN

ALTER DATABASE BACKUP CONTROLFILE

ALTER DATABASE BEGIN/END BACKUP

ALTER DATABASE ARCHIVELOG

RECOVER DATABASE

RESTRICTED SESSION

CREATE SPFILE/PFILE

SYSDBA

(系统管理员权限)

SYSOPER的所有权限,并带有WITH ADMIN OPTION子句

CREATE DATABASE

RECOVER DATABASE UNTIL

其他权限

ANALYZE ANY

对任何方案中的任何表、群集或者索引执行ANALYZE语句

GRANT ANY OBJECT PRIVILEGE

授予任何方案上的任何对象上的对象权限

注意:没有对应的REVOKE ANY OBJECT PRIVILEGE

GRANT ANY PRIVILEGE

授予任何系统权限

注意:没有对应的REVOKE ANY PRIVILEGE

SELECT ANY DICTIONARY

允许从sys用户所拥有的数据字典表中进行选择


对象权限的定义:


              对象权限(object privilege):指在对象级控制数据库的存取和使用的机制,即访问其他用户的方案对象的能力。如,用户可以存取哪个用户的方案中的哪个对象,是否能对该对象进行查询、插入、更新等。对象权限一般是针对其他用户的某个特定的方案对象的某种操作的局部性能力。


提示”一个用户可以访问自己方案中的任何对象,并对其进行任何操作,即对自己的任何对象有任何对象权限。


对象权限的分类:


            Oracle数据库的方案对象主要是指:表、索引、视图、序列、同义词、过程、函数、包、触发器。

创建对象的用户拥有该对象的所有对象权限,不需要授予。所以,对象权限的设置实际上是为对象的所有者给其他用户提供操作该对象的某种权力的一种方法。


               Oracle数据库中总共有9种不同的对象权限。不同类型的对象有不同的对象权限。有些对象(如集群、索引、触发器、数据库连接)没有对应的对象权限,即他们是通过系统权限来控制的,例如,如要修改集群,用户必须要具有ALTER ANY CLUSTER系统权限。


对象、对象权限的对应关系如表所示。能够在该对象上授予的对象权限用“√”表示。

对象

对象权限

Alter

更改

Delete

删除

Execute

运行

Index

索引

Insert

插入

Read

Reference

引用

Select

选择

Update

更新

Directory

目录

Function

函数

Procedure

子程序

Package

DB Object

数据库对象

Library

Operator

操作符

Sequence

序列

Table

Type

类型

View

视图

对象权限及说明


对象权限

说明

Alter

更改

表上的ALTER权限保证在相关的表上执行ALTER TABLE或LOCK TABLE语句。可以重命名表、添加列、删除列、更改数据类型和列的长度,以及把表转换成一个分区(partitioned)表。

序列上的ALTER权限可以保证能够在相关序列上执行ALTER SEQUENCE语句,可以重设授权序列对象的最小值、增量和缓冲区大小

Delete

删除

允许在授权对象上执行DELETE语句,以便从表或者视图中删除行。SELECT权限必须随同DELETE权限授予,否则被授权的人将不能够选择行,因此也就无法删除行。DELETE权限还允许被授权者锁定相应的表

Execute

运行

包上的EXECUTE权限允许被授权者执行或者使用在相应的包规定中声明的任何程序或者程序对象(如一个记录类型,即record type或者指针即cursor)。

操作符(operator)或者类型(type)上的EXECUTE权限允许在SQL或者PL/SQL中使用该操作符。

数据库对象上的EXECUTE权限允许被授权者使用相关的数据库对象并且调用其方法

Index

索引

允许被授权者在相关的表上创建索引或者锁定该表。

当一个方案(schema)拥有一个表而另一个方案拥有其索引的时候,会出现混乱。在授予这种权限时要小心

Insert

插入

允许被授权者在相关的表或视图中创建行。

如果该INSERT权限建立在相关表或者视图的特定列上,则只能在具有INSERT权限的列上插入数据。

INSERT权限还隐含地给被授权者以锁定该表的能力

Read

只能在目录上授予。

允许被授权者读取指定目录中的BFILE。

Read权限与SELECT权限有区别,后者允许用户读取一个表或者视图

Reference

引用

只能在表上授予用户,而不能授予角色。

允许被授权者创建引用该表的参照完整性约束。被授权者可以锁定该表

Select

选择

允许被授权者在表或者视图上执行SELECT语句。

允许被授权者读取表或者视图的内容。

序列上的SELECT权限允许被授权者获取当前值(CURRVAL)或者通过选择NEXTVAL增大该值。

SELECT权限只能授予整个表,不能授予表中的列。因此,如果希望用户只能查询表中的部分列,就需要在该表上创建视图,然后将该视图的SELECT权限授予用户。

Update

更新

允许被授权者更改表或者视图中的数据值。SELECT权限必须随同UPDATE权限一起授予,这样就使被授权者隐含具有了锁定表的能力

All

所有

对于可以具有多项权限的对象,可以授予或者撤消专门的权限ALL。

对于表而言,ALL中包含了SELECT、INSERT、UPDATE和DELETE以及INDEX、ALTER和REFERENCE。所以,在表上授予AIL权限时要小心,因为可能并不想授予INDEX、ALTER和REFERENCE权限


角色定义:


   我在前面的篇幅中说明权限和用户。慢慢的在使用中你会发现一个问题:如果有一组人,他们的所需的权限是一样的,当对他们的权限进行管理的时候会很不方便。因为你要对这组中的每个用户的权限都进行管理。


  有一个很好的解决办法就是:角色。角色是一组权限的集合,将角色赋给一个用户,这个用户就拥有了这个角色中的所有权限。那么上述问题就很好处理了,只要第一次将角色赋给这一组用户,接下来就只要针对角色进行管理就可以了。


  以上是角色的一个典型用途。其实,只要明白:角色就是一组权限的集合。下面分两个部门来对oracle角色进行说明。

二、系统预定义角色


  预定义角色是在数据库安装后,系统自动创建的一些常用的角色。下介简单的介绍一下这些预定角色。角色所包含的权限可以用以下语句查询:


sql>select * from role_sys_privs where role='角色名';

Eg: select * from role_sys_privs where role='DBA';


1.CONNECT, RESOURCE,  DBA
这些预定义角色主要是为了向后兼容。其主要是用于数据库管理。oracle建议用户自己设计数据库管理和安全的权限规划,而不要简单的使用这些预定角色。将来的版本中这些角色可能不会作为预定义角色。


2.DELETE_CATALOG_ROLE, EXECUTE_CATALOG_ROLE, SELECT_CATALOG_ROLE
这些角色主要用于访问数据字典视图和包。


3.EXP_FULL_DATABASE, IMP_FULL_DATABASE
这两个角色用于数据导入导出工具的使用。


4.AQ_USER_ROLE, AQ_ADMINISTRATOR_ROLE
AQ:Advanced Query。这两个角色用于oracle高级查询功能。


5.SNMPAGENT
用于oracle enterprise manager和Intelligent Agent


6.RECOVERY_CATALOG_OWNER
用于创建拥有恢复库的用户。关于恢复库的信息,参考oracle文档《Oracle9i User-Managed Backup and Recovery Guide》


7.HS_ADMIN_ROLE
A DBA using Oracle's heterogeneous services feature needs this role to access appropriate tables in the data dictionary. 

你可能感兴趣的:(Oracle,delete,insert,oracle,Oracle,ORACLE,reference,Reference,数据库)