oracle - 无法在 Oracle 模式之间交换分区。 ALTER TABLE EXCHANGE 受到细粒度安全性的限制。领域违规...豁免访问政策

标签 oracle database-partitioning database-permissions

我有一个有效的 Oracle 过程,它执行以下操作:

  1. 从源表中选择分区
  2. 将此分区中的记录插入到交换表中。 (交换表的设计/结构与源代码一致)
  3. 修改交换表中的记录。
  4. 执行“交换分区”以将交换表中的记录交换回源。

当过程和所有表都处于同一架构中时,这非常有效:(INBOUND)

但是...下一步是让它使用另一个架构中存在的源表:WAREHOUSE

现在在 Exchange 分区步骤上失败:

Alter Table WAREHOUSE.ITEM_FCT Exchange Partition SYS_ABCD WITH TABLE INBOUND.ITEM_SWP Including     
Indexes Without Validation;

SQL 错误:ORA-14136:ALTER TABLE EXCHANGE 受细粒度安全性限制 14136. 00000 - “ALTER TABLE EXCHANGE 受细粒度安全性限制” *原因:由于 VPD,进行交换的用户没有全表访问权限 政策。 *操作:向该用户授予豁免权限。

我尝试根据谷歌研究添加所需的权限:

grant ALL on INBOUND.ITEM_SWP TO WAREHOUSE;
grant EXEMPT ACCESS POLICY to INBOUND;

当我尝试授予豁免访问策略时,它显示:

grant EXEMPT ACCESS POLICY to INBOUND
Error report -
SQL Error: ORA-47410: Realm violation for GRANT on EXEMPT ACCESS POLICY

我将非常感谢任何指导。将所有内容都放在 WAREHOUSE 模式中绝对是最后的手段。

谢谢!

最佳答案

您无法对启用了 FGAC 策略的表应用交换分区操作。 Oracle 引用中描述了此限制。您需要禁用策略,应用操作并再次重新启用它。然而,这并不是理想的选择,因为在短时间内您的数据将不受策略保护。

关于oracle - 无法在 Oracle 模式之间交换分区。 ALTER TABLE EXCHANGE 受到细粒度安全性的限制。领域违规...豁免访问政策,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25999389/

相关文章:

mysql - Mysql表分区

oracle - SQL 错误 : ORA-14006: invalid partition name

c# - SQL 添加数据的权限以及如何验证?

mysql - 授予对子网上所有机器的 mysql 访问权限

java - java中Json到CLOB

mysql - 直接访问数据库的开发人员工具

MySQL 变量分区修剪

sql - REGEXP_LIKE 用于 5 个字符的子字符串内任意位置的字符

java - 使用 Java 检查数据库是否正在运行

sql-server - 防止对某些表执行 SQL Server 表操作(INSERT 和 DELETE)