微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ORACLE的exp和expdp何时需要特权"豁免访问策略(Exempt Access Policy)"进行导出?

使用数据泵导出或旧版导出时,日志输出中会显示警告,例如

数据泵导出:

ORA-39181:由于细粒度访问控制,只能导出部分表数据

旧版导出:

EXP-00079:表“ TAB”中的数据受到保护。常规路径只能是导出部分表。


如果将EXEMPT ACCESS POLICY授予执行导出的用户,则不会收到此类警告。如何预测在导出发生之前是否需要EXEMPT ACCESS POLICY特权?


当表数据上有行级安全性策略,该策略限制用户可以在表上选择的内容并启用该策略时,需要EXEMPT ACCESS POLICY来导出表数据。

如果DBA_POLICIES.SEL = YES和DBA_POLICIES.ENABLE = YES,则没有EXEMPT ACCESS POLICY特权,数据将保留在转储文件之外。但是,如果正在导出的表上定义了任何种类的策略,则无论该策略不适用于selects还是禁用该策略,都将在旧版导出或Data Pump中发出警告。这只是一个警告,警告数据*可能*由于表上存在策略而丢失,但是不会检查该策略是否适用于SELECT特权或该策略是否被禁用。

因此,如果DBA_POLICIES.SEL = NO或DBA_POLICIES.ENABLE = NO,如果未授予EXEMPT ACCESS POLICY,我们仍然会收到此警告。

为了确保所有数据都已导出,需要在DBA_POLICIES中进行检查,以查看是否有使用SEL = YES和ENABLE = YES定义的策略。
如果是这样,则将需要EXEMPT ACCESS POLICY来导出所有数据。如果没有满足这两个条件的此类策略,则不需要EXECPT ACCESS POLICY,但如果未授予该权限,则在导出会话期间仍会出现警告。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐