如何创建Oracle存储过程以锁定超过90天未登录数据库的用户帐户
如何创建Oracle存储过程来锁定超过90天未登录到数据库的用户帐户 我假设我可以创建一个Profile对象并在数据库中列出资源参数,但我使用的是oracle11g,而且该功能似乎不存在 这就是我迄今为止所尝试的:如何创建Oracle存储过程以锁定超过90天未登录数据库的用户帐户,oracle,plsql,procedure,Oracle,Plsql,Procedure,如何创建Oracle存储过程来锁定超过90天未登录到数据库的用户帐户 我假设我可以创建一个Profile对象并在数据库中列出资源参数,但我使用的是oracle11g,而且该功能似乎不存在 这就是我迄今为止所尝试的: select username from dba_audit_trail where action_name = 'LOGON' group by username having max(timestamp) < sysdate - 90 对于12c,它可以是: begi
select username from dba_audit_trail
where action_name = 'LOGON'
group by username
having max(timestamp) < sysdate - 90
对于12c,它可以是:
begin
for x in
(select username
from dba_users
where last_login < sysdate - 90)
loop
execute immediate 'alter user ' || x.username || ' account lock';
end loop;
end;
如果您使用的是11g,您可以尝试查询循环:
begin
for x in
(select username from dba_audit_trail
where action_name = 'LOGON'
group by username
having max(timestamp) < sysdate - 90)
loop
execute immediate 'alter user ' || x.username || ' account lock';
end loop;
end;
到目前为止你试过什么?请发布您的尝试,解释您遇到的问题。从dba_audit_trail中选择用户名,其中操作_name='LOGON'组,按maxtimestamp
begin
for x in
(select username from dba_audit_trail
where action_name = 'LOGON'
group by username
having max(timestamp) < sysdate - 90)
loop
execute immediate 'alter user ' || x.username || ' account lock';
end loop;
end;