我有一个有效的 Oracle 过程,它执行以下操作:
- 从源表中选择分区
- 将此分区中的记录插入到交换表中。 (交换表的设计/结构与源代码一致)
- 修改交换表中的记录。
- 执行“交换分区”以将交换表中的记录交换回源。
当过程和所有表都处于同一架构中时,这非常有效:(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/