Oracle
Oracle 11g - 關於使用者鎖的數據庫作業
我有一個 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
.