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,但如果未授予该权限,则在导出会话期间仍会出现警告。

相关文章

Java Oracle 结果集是Java语言中处理数据库查询结果的一种方...
Java AES和Oracle AES是现代加密技术中最常使用的两种AES加密...
Java是一种广泛应用的编程语言,具备可靠性、安全性、跨平台...
随着移动互联网的发展,抽奖活动成为了营销活动中不可或缺的...
Java和Oracle都是在计算机领域应用非常广泛的技术,他们经常...
Java 是一门非常流行的编程语言,它可以运行于各种操作系统上...