我有一个可以执行以下操作的Oracle过程:
当过程和所有表在同一模式中时,这非常有效:( INBOUND)
但是......下一步是让它使用另一个Schema中存在的Source表: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,用户进行交换没有完整的表访问权限 政策。 *行动:向该用户授予豁免权限。
我尝试根据Google研究添加所需的权限:
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模式中将是绝对的最后手段。
谢谢!
答案 0 :(得分:1)
您无法对启用了FGAC策略的表应用Exchange分区操作。 Oracle参考中描述了此限制。您需要禁用策略,应用操作并再次重新启用它。但是,这不是理想的原因,因为您的数据将在一段短时间内不受政策保护。
答案 1 :(得分:1)
如果您已授予EXEMPT_ACCESS_ROLE,则无需禁用该策略即可执行交换分区操作。上面的用户即使在授予角色后也可能会遇到问题,因为他试图在2个不同的架构之间交换分区,但仅将角色授予一个架构。
答案 2 :(得分:0)
我遇到了同样的问题,但是简单的拨款解决了我的问题。
-在分区表架构上
GRANT ALL ON <partition-table> TO <source-table-schema-name>;
-在源表架构上
GRANT ALL ON <source-table> TO <partition-table-schema-name>;
-关于分区表架构的最终查询
ALTER TABLE <partition-table> EXCHANGE PARTITION p_all WITH TABLE <source-table-schema-name>.<source-table> INCLUDING INDEXES WITHOUT VALIDATION;
我希望这对您也有帮助。干杯!