oracle 12c一次性解锁所有锁定的用户

swvgeqrz  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(315)

嗨,我想从我的oracle 12c的dba\u用户中解锁一个用户列表。
我试着说:

ALTER USER (SELECT username FROM dba_users WHERE ACCOUNT_STATUS LIKE '%LOCKED%') ACCOUNT UNLOCK;

ERROR at line 1:
ORA-01935: missing user or role name

你知道吗?或者我必须为每个用户手动执行?

kgqe7b3p

kgqe7b3p1#

一个选项是编写一个查询,它将为您编写查询。例如:

SQL> select 'alter user ' || username || ' account unlock;' from dba_users;

'ALTERUSER'||USERNAME||'ACCOUNTUNLOCK;'
---------------------------------------------------------
alter user SUPERUSER account unlock;
alter user C##TEST account unlock;
alter user SYS account unlock;
alter user SYSTEM account unlock;
alter user ANONYMOUS account unlock;
alter user SUSHANT account unlock;
alter user SCOTT account unlock;
<snip>

现在,复制/粘贴上面的一组 ALTER USER 你就能解开所有人的锁。
另一个是一个简单的pl/sql块,它使用动态sql(我只解锁用户scott;你想解锁谁就解锁谁)。

SQL> begin
  2    for cur_r in (select username from dba_users where username in ('SCOTT')) loop
  3      execute immediate 'alter user ' || cur_r.username || ' account unlock';
  4    end loop;
  5  end;
  6  /

PL/SQL procedure successfully completed.

SQL>

相关问题