oracle support說這並不是一個bug,是一個問題,呵呵,bug和問題,都是你的錯,oracle!
工作中將某個使用者失效之後,有可能又需要重新將使用者重新啟用,在更改了使用者的失效時間之後,所有的職責都不見了,琢磨了好一陣子使用者相關的表,基本能夠確定問題是由於有效到期日並沒有同步導致,但是由於有可能需要手動update標準表,風險相當大,為此提了一個sr,support給我來了個owc,多番操作之後得出解決方案如下:
1. Go into the responsibility: System Administrator.
2. Navigate to Request > Run.
3. Submit request 'Synchronize WF LOCAL tables'
4. Submit request 'Workflow Directory Services User/Role Validation'
5. Check result in table wf_local_user_roles via:
select role_name, effective_end_date from wf_local_user_roles
where user_name='<>';
6. If still find some records haven't been changed to null, perform:
a.) backup the records:
create table wf_local_user_roles_bak as
select * from wf_local_user_roles
where user_name='<>' and effective_end_date <> to_date('<>','RRRR-MM-DD');
b.) update effective_end_date to null
update wf_local_user_roles
set effective_end_date=to_date('9999-01-01','RRRR-MM-DD')
where user_name='<>' and effective_end_date <> to_date('<>','RRRR-MM-DD');
7. Retest the issue.
8. Migrate the solution as appropriate to other environments.
他們自己都無法確定請求跑完之後是不是能解決這個問題,呵呵!挺諷刺!
值得注意的一點是,Synchronize WF LOCAL tablese 和Workflow Directory Services User/Role Validation請求是需要在有任何使用者變更之後提交的,這是避免問題出現的辦法。雖然不喜歡這種方式,但還只能每天定時運行。。。
來源:http://hutianci.iteye.com/blog/1422545