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