在执行exp导出全库时候,遇到如下错误
EXP-00079: 表 "PURCHASEORDER" 中的数据是被保护的。常规路径只能导出部分表。
原因:这个警告出现是因为这张表启用了FGA(fine-grained access control policy)精细化访问控制策略。如果FGA在select上启用,那么exp可能不会导出整张表,因为FGA可能会重写查询。
只有sys用户和任何拥有exempt access policy权限的用户,才能select all rows。如果某个非sys用户没有exempt access policy权限,即使这张表是该用户的,也无法全表导出。
确认该表是否启用了FGA控制策略
解决这个问题的方法有两种
1. 授权该用户exempt access policy 权限
(1) 在SQLPLUS 下以SYSDBA用户登录,授权在执行exp命令的用户 exempt access policy权限
SQL > conn / as sysdba
(2) 授权执行exp命令用户 exempt access policy 权限
SQL > grant exempt access policy to exp_user;
(3) 确认exp_user已经被成功授权
SQL >select grantee from dba_role_privs where granted_role in
(select grantee from dba_role_privs where granted_role=’EXP_FULL_DATABASE’)
好了,现在再次执行exp导出就不会报错了。
2. 以sys用户执行exp命令导出目标表(linux环境为例)
exp \‘/ as sysdba\‘ file=/app/dmp/full.dmp \
log=/app/dmp/full_exp.log \
tables=OE.PURCHASEORDER
解决EXP-00079: 表 "PURCHASEORDER" 中的数据是被保护的。常规路径只能导出部分表。
最新推荐文章于 2021-12-22 16:43:21 发布