IMP後,報錯ORA-28100————之解決。

wei-xh發表於2010-05-08
我想把ncsi使用者下的表匯入到另一臺機器上的ncsi_exc使用者下。

IMP後,查詢表資料,報錯。
ORA-28100,策略函式方案NCSI無效。

上網查詢後,原來是之前表所在的使用者啟用了VPD許可權。
預設IMP後,表的VPD許可權也會匯入進去,而匯入表的VPD許可權是隻能讓NCSI使用者訪問,當前的使用者ncsi_exc沒訪問許可權。
在刪除VPD許可權後,可以正常訪問了。
查詢當前使用者的VPD許可權,可以透過資料字典檢視USER_POLICIES獲得。
透過如下方式可以刪除當前使用者下的所有VPD許可權。
declare
  -- Local variables here
  i integer;
  str_schema varchar2(20) := '方案名';
  str_obj_name varchar2(20) ;
  str_group_name varchar2(20);
  str_policy_name varchar2(30);
begin
  -- Test statements here
  for item in (select * from user_policies) loop
     str_obj_name := item.object_name;
     str_group_name := item.policy_group;
     str_policy_name := item.policy_name;
     
     dbms_rls.drop_grouped_policy(object_schema => str_schema,object_name => str_obj_name,
                                policy_group => str_group_name,policy_name => str_policy_name);     
  end loop;
  
  for item in (select * from USER_POLICY_GROUPS) loop
     str_obj_name := item.object_name;
     str_group_name := item.policy_group;
     str_policy_name := str_schema;
     
     dbms_rls.delete_policy_group('方案名',str_obj_name,str_group_name);     
  end loop;
end;

[ 本帖最後由 wei-xh 於 2010-4-30 11:01 編輯 ]

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22034023/viewspace-662237/,如需轉載,請註明出處,否則將追究法律責任。

相關文章