权限用于确定用户有权对数据和数据库执行何种操作。应根据人员在组织中所执行的工作类型来分配权限。该人员是否为地理数据库的管理员? 他/她是否需要编辑或创建数据? 或者该人员是否仅需查询数据?
必须根据用户需要在 Oracle 数据库中执行的操作来为用户授予特定权限。可以为角色授予一些权限,但有些权限必须直接授予用户。可在不同级别设置用户权限。
本主题中的第一部分列出了所有用户都需要的包权限。必须为公共角色授予这些权限,以便创建或升级地理数据库。但是,如果您想撤消公共角色的这些权限,可以在创建或升级完地理数据库后为所有单独的用户授予这些权限。
第二部分列出了普通用户类型所需的最低数据库权限:数据查看人员、数据编辑人员、数据创建人员和地理数据库管理员。除了第一部分中所列出的权限外,这些用户还需要本部分所列出的各种权限。
第三部分列出的是地理数据库管理员创建或升级地理数据库所需的权限。除了第一部分所列出的权限外,地理数据库管理员还需要这些权限才能执行相关操作。
最后一部分列出的是通常可选择性地分配给 Oracle 地理数据库中各用户的权限。
您可以使用 Oracle 的企业管理器管理用户的权限。也可以使用 SQL 语句来授予和撤消权限。
包权限
需要对以下包授予执行权限:
- dbms_lob
- dbms_lock
- dbms_pipe
- dbms_utility
- dbms_sql
- utl_raw
要创建或升级地理数据库,您必须为公共角色授予对这些包的执行权限。
GRANT EXECUTE ON dbms_pipe TO public;
GRANT EXECUTE ON dbms_lock TO public;
GRANT EXECUTE ON dbms_lob TO public;
GRANT EXECUTE ON dbms_utility TO public;
GRANT EXECUTE ON dbms_sql TO public;
GRANT EXECUTE ON utl_raw TO public;
提示:
在 Oracle 中,默认情况下,将自动为公共角色授予对 dbms_utility、dbms_sql 和 utl_raw 的执行权限。因此,如果已经从公共角色中明确撤消了执行权限,则只需授予这些包的执行权限。
创建或升级地理数据库后,您可以限制这些包的权限,方法是:将这些执行权限从公共角色中撤消,然后为登录地理数据库的每个单独的用户(包括地理数据库管理员)授予这些执行权限。
警告:
您不能对某一自定义角色授予执行权限并将这一角色赋予所有用户,原因在于通过自定义用户角色所授予的权限在执行 Oracle 包的过程中是不可用的。
在向各用户授予执行权限后,重新编译 sde 方案:EXEC dbms_utility.compile_schema( 'SDE' );
最低权限
除了前一部分中所述的权限之外,列出的每种类型的用户需要以下权限:
Oracle 中的最低权限
用户类型 | 数据库权限 | 数据集权限 | 备注 |
---|---|---|---|
数据查看人员 |
| 对数据库对象的 SELECT 权限 | |
数据编辑人员 |
| 针对其他用户所拥有的数据集的 SELECT、INSERT、UPDATE 和 DELETE 权限。 | 如果使用 ArcGIS 为注册为传统版本化的要素类或表授予 SELECT、INSERT、UPDATE 和 DELETE 权限,则这些权限会自动授予到与之相关联的版本化视图中。用户使用 SQL 和版本化视图进行编辑时将需要这些权限。 |
数据创建人员 |
| ||
地理数据库管理员 |
|
使用 ArcGIS 客户端授予地理数据库中数据集的权限和与之相关的撤消操作必须由数据所有者完成。
创建或升级地理数据库所需要的权限
下表列出的是为使地理数据库管理员能够在 Oracle 中创建或升级地理数据库而必须为其授予的权限。还列出了之所以需要这些权限或权限组的原因。这些权限有些可在创建或升级完成后撤消,如“权限用途”字段中所强调的以及上表中所示的最低地理数据库管理员权限。
第一张表列出了 sde 用户创建地理数据库所需的权限。
第二个表列出了 sde 用户升级地理数据库所需的权限。
权限按创建和升级地理数据库过程中各权限的用途进行分组。
用于创建地理数据库的 Oracle sde 用户权限
权限 | 用途 |
---|---|
| 连接到 Oracle。 |
| 创建地理数据库资料档案库。 |
| 创建序列以生成 ID。创建地理数据库后可撤消此权限。 |
| 创建用于维护地理数据库系统表内容的包。 |
| 允许创建 ST_Geometry 类型的地图成员函数,可在执行空间合并或相交时随时调用该函数。 |
| 创建 ST_Geometry 数据类型以及用于查询优化的类型。创建以下系统视图时需要使用 CREATE VIEW:GDB_Items_vw 和 GDB_ItemRelationships_vw。创建地理数据库后可撤消这些权限。 |
| 通过 SQL 删除、更改或重命名包含 ST_Geometry 列的表时,创建修改 ST_GEOMETRY_COLUMNS 和 ST_GEOMETRY_INDEX 表所需的数据库事件触发器。创建地理数据库后可撤消此权限。 |
用于升级地理数据库的 Oracle sde 用户权限
权限 | 用途 |
---|---|
| 连接到 Oracle。 |
| 升级地理数据库资料档案库。升级后可撤消 CREATE VIEW 权限。 |
| 升级用于维护地理数据库系统表内容的数据包。 |
| 升级序列以生成 ID。升级后可撤消此权限。 |
| 升级 ST_Geometry 类型的地图成员函数,可在执行空间合并或相交时随时调用该函数。 |
| 升级 ST_Geometry 数据类型以及用于查询优化的类型。升级后可撤消这些权限。 |
| 升级地理数据库内容。 |
| 通过 SQL 删除、更改或重命名包含 ST_Geometry 的表时,创建修改 ST_GEOMETRY_COLUMNS 和 ST_GEOMETRY_INDEX 表所需的数据库事件触发器。升级后可撤消此权限。 |
常用的可选权限
很多组织机构选择使用其他 Oracle 功能来进一步增强其地理数据库的功能。下表列出了地理数据库管理员常用的多个可选权限及权限的用途。权限按其用途进行分组。
地理数据库管理员的 Oracle 可选权限
权限 | 授予 | 用途 |
---|---|---|
| 地理数据库管理员 | 可启用 SQL 追踪、SQL*Plus AUTOTRACE 功能以及对会话特定的初始化参数进行修改以实现性能调整和故障排除;通过运行 ORACLE_HOME/sqlplus/admin/plustrce.sql 创建 PLUSTRACE 角色。 |
| 地理数据库管理员 | 授予地理数据库管理员,以允许该用户监视 Oracle 并执行基本的维护任务。 这适用于地理数据库管理员不是 Oracle 数据库管理员的组织机构。 |
| 地理数据库管理员 | 这适用于在企业中将地理数据库与其他非空间数据库集成的情况。 |
| 地理数据库管理员 | 数据库入网但终端用户不可访问时,该权限可让地理数据库管理员执行维护。 |
| 地理数据库管理员 | 对地理数据库管理员授予此权限以进行创建和升级,确保数据库中的地理数据库管理员表空间内具有足够的存储空间能够完成地理数据库创建或升级;如果已对空间管理设置了配额,则创建或升级地理数据库后可撤消此权限。 |
| 地理数据库管理员 | sde 用户必须拥有这些权限才能从地理数据库中移除连接。创建企业级地理数据库地理处理工具会将这些权限授予 sde 用户。可在运行此工具后撤消 sde 用户的这些权限,但撤消权限后 sde 用户不能将用户与数据库断开连接。 此外,也可将 sde 用户添加到数据库管理员角色,以允许 sde 用户从数据库断开用户。 |
SELECT ON DBA_ROLES | 数据创建人员 | 如果您希望数据创建人员使用权限对话框将他们数据集的权限授予数据库角色,则他们必须具有 DBA_ROLES 选择权限才能获得数据库中的角色列表。 |
INHERIT PRIVILEGES ON <用户> 或 INHERIT ANY PRIVILEGES ON <用户> | sde | 此可选权限仅适用于 Oracle 12c 或更高版本。必须向 sde 用户授予此权限才能由另一用户(例如 Oracle sys 或系统用户)执行 sde 用户方案的 Data Pump 导入。 此权限不适用于用户方案地理数据库所有者。 |