Oracle

Oracle 11g - 關於使用者鎖的數據庫作業

  • July 1, 2020

我有一個 Oracle 數據庫 (Oracle 11gR2),我想創建一個工作。這項工作將觸發我的程序。

該程序必須符合我在下面指定的規則:

  • 如果使用者的 expiry_date 值為 EXPIRED(從 dba_users 中選擇 username、account_status、lock_date、expiry_date,其中 account_status=‘EXPIRED’;),它將鎖定該使用者。
  • 如果使用者的 expiry_date 值為 EXPIRED 並且已經處於鎖定狀態,則它不會做任何事情。
  • 排除此操作的內部模式。

我搜尋了它,但沒有找到任何明確的解決方案。

如何創建此程序?

最好的祝福,

create or replace procedure p1 as
begin
 for u in (select username from dba_users where account_status in ('EXPIRED', 'EXPIRED(GRACE)') and username not in ('SYS', 'SYSTEM', '...'))
 loop
   execute immediate 'alter user "' || u.username || '" account lock';
 end loop;
end;
/

對於 12c 及更高版本,您可以使用ORACLE_MAINTAINED='N'過濾內置使用者而不是IN-list.

引用自:https://dba.stackexchange.com/questions/270186