问题现象:
这边有个用户的职责突然丢失了,不见了。
正常来说,职责只可以失效,怎么可能会突然没有了呢?
问题寻找:
通过找对应的查询直接责任的视图:
SELECT DESCRIPTION
,START_DATE
,END_DATE
,RESPONSIBILITY_APPLICATION_ID
,RESPONSIBILITY_ID
,SECURITY_GROUP_ID
,LAST_UPDATE_DATE
,LAST_UPDATED_BY
,CREATED_BY
,CREATION_DATE
,LAST_UPDATE_LOGIN
,USER_ID
FROM FND_USER_RESP_GROUPS_DIRECT
WHERE 1=1
AND (USER_ID = 65997)
ORDER BY responsibility_application_id, responsibility_id, security_group_id
确实没数据。
拆解视图,发现基本是搜索这2个表格:
SELECT * FROM wf_user_role_assignments WHERE user_name = 'JS000497'
SELECT * FROM wf_all_user_roles WHERE user_name = 'JS000497'
它俩没数据,就是工作流角色主表和分配表。
为什么没?还好我对wf_user_role_assignments表格的删除数据有做了一个触发器,会记录删除的时间点和用户:
然后,跟踪是谁,在啥时候删掉了数据。
接着,就挺好处理了,找对应的用户沟通做了啥操作即可。
一问,原来是这边的一个同事为了解决用户登录报错的问题,跑了一个请求叫<工作流目录服务用户/职责验证>的,而这个请求就将这个用户的工作流角色表和工作流分配表的数据给删除了。
为什么这个标准的请求会有这个删除数据的动作?我就不深究了,再继续找原因,估计得找Oracle官方提个SR问问了。
所以,结论是,让用户以后跑这个请求得通知一下。
知道问题的原因之后,这边让实施组将这个用户丢失的职责重新加回来,就算处理了。