Oracle 12c 用户权限分配与管理全解析
1. 权限概述
在 Oracle 12c 中,权限分为系统权限和对象权限两种类型,它们允许用户执行特定的 SQL 语句。系统权限主要用于访问数据库并执行 DDL 操作,而对象权限则用于对数据库对象中的数据执行 DML 操作。
1.1 系统权限
Oracle 12c 中大约有 200 种系统权限,例如创建、修改和删除数据库对象(如表和序列)的权限。此外,还有一些系统权限与数据库访问和用户账户相关,如连接到 Oracle 12c 需要 CREATE SESSION 权限,创建新用户账户需要 CREATE USER 权限。
当授予系统权限时,可以使用可选的 ANY 关键字,允许用户在系统范围内执行该权限。例如,DROP ANY TABLE 命令允许用户删除或截断数据库中的任何表,而不仅仅是用户自己模式中的表。可以通过数据字典视图 SYSTEM_PRIVILEGE_MAP 查看所有可用的系统权限。
需要注意的是,DML 操作通常被视为对象权限,但如果为权限分配了 ANY 关键字,则会被重新分类为系统权限。例如,INSERT ANY TABLE 命令允许用户向任何表中添加行,而无需考虑是否拥有该表或是否有明确的访问权限。
系统权限影响所有对象,因此不会通过指定数据库对象(如表名)来分配。而对象权限则是分配给特定的数据库对象。
1.2 授予系统权限
系统权限使用 GRANT 命令分配给用户,其语法如下:
GRANT system_privilege [, syst