Oracle数据库 — DCL:数据控制语言

数据控制语言设置或者更改数据库用户或角色权限的语句

其中包括:

GRANTDENYREVOKE等语句,在默认状态下,只有sysadmindbcreatordb_ownerdb_securityadmin等角色的成员才有权利执行数据控制语言。

 

GRANT:授予访问权限

GRANT语句是授权语句,它可以把语句权限或者对象权限授予给其他用户和角色。

 

例:分配表 EMPLOYEES 的查询权限。

Oracle数据库 — DCL:数据控制语言

DENY:拒绝授予权限

DENY语句用于拒绝给当前数据库内的用户或者角色授予权限,并防止用户或角色通过其组或角色成员继承权限。

 

REVOKE:撤销访问权限

REVOKE语句是与GRANT语句相反的语句,它能够将以前在当前数据库内的用户或者角色上授予或拒绝的权限删除,但是该语句并不影响用户或者角色从其他角色中作为成员继承过来的权限。

 

例:撤销departments表的查询和新增权限。

Oracle数据库 — DCL:数据控制语言

COMMIT:提交事务处理

数据提交:提交后数据改变

例:改变数据

Oracle数据库 — DCL:数据控制语言

提交改变

Oracle数据库 — DCL:数据控制语言

 

ROLLBACK:事务处理回退

数据回滚:可使数据变化失效;修改前的数据状态被恢复;锁被释放。

例:数据改变被取消。

Oracle数据库 — DCL:数据控制语言

使用COMMIT 和 ROLLBACK语句的优点:

  • 确保数据完整性。
  • 数据改变被提交之前预览。
  • 将逻辑上相关的操作分组。

 

语句自动提交:不使用 COMMIT 或 ROLLBACK 语句提交或回滚,正常结束会话。

会话异常结束或系统异常会导致自动回滚。

 

提交或回滚前的数据状态:

  • 改变前的数据状态是可以恢复的
  • 执行 DML 操作的用户可以通过 SELECT 语句查询之前的修正
  • 其他用户不能看到当前用户所做的改变,直到当前用户结束事务。
  • DML语句所涉及到的行被锁定, 其他用户不能操作

提交后的数据状态:

  • 数据的改变已经被保存到数据库中。
  • 改变前的数据已经丢失。
  • 所有用户可以看到结果。
  • 锁被释放,其他用户可以操作涉及到的数据。
  • 所有保存点被释放。

 

  • SAVEPOINT:设置保存点;

保存点:使用 SAVEPOINT 语句在当前事务中创建保存点。

Oracle数据库 — DCL:数据控制语言

回滚:使用 ROLLBACK TO SAVEPOINT 语句回滚到创建的保存点。

Oracle数据库 — DCL:数据控制语言

 

查询权限分配情况

可以通过访问数据字典来查看你所有的权限。下表中描述了各种数据字典视图。

Oracle数据库 — DCL:数据控制语言