Oracle 12c解锁口令之谜(oracle12c 口令)

Oracle 12c解锁口令之谜

在日常数据库管理中,遇到口令被锁定的情况并不罕见。当然,解锁口令也是比较容易的一种操作。然而,在Oracle 12c中,有些人遇到了不同寻常的问题——口令被锁定,但无法解锁。这就是Oracle 12c解锁口令之谜。

在Oracle 12c中,口令被锁定的情况并不稀奇,这通常是由于密码错误次数过多而导致的。出于安全考虑,Oracle会自动将该用户的口令锁定一段时间,以尽可能地防止黑客入侵。然而,在解锁口令的时候,有些用户却受到了困扰。

一些用户在尝试解锁口令时,遇到了以下错误信息:

ORA-28002: 无法解锁账户

ORA-00054: 资源正忙

虽然这个错误信息看起来很简单,但情况却不容乐观。用户发现,无论如何尝试,都无法将锁定的口令解锁。这些用户纷纷寻求帮助,寻找解决方法。

经过一番研究,我们发现这个问题的根源在于Oracle的一个bug。这个bug会导致Oracle内部的锁定进程出现错误,并始终占用资源,导致口令无法解锁。虽然Oracle已经发布了一些修补程序,但并不能完全解决这个问题。

针对这个问题,我们需要手动杀掉导致错误的进程,以释放资源并解锁口令。具体来说,我们需要进行以下步骤:

1. 通过以下语句确认被锁定的账户:

select USERNAME ,ACCOUNT_STATUS ,LOCK_DATE

from DBA_USERS

where ACCOUNT_STATUS=’LOCKED(TIMED)’ or ACCOUNT_STATUS=’LOCKED’;

2. 找到导致问题的进程:

select substr(oracle_username,1,10),substr(program,1,20),LOGON_TIME,SID,serial#,p.spid,s.status

from v$session s, v$process p

where s.paddr = p.addr

and s.status = ‘ACTIVE’

and p.spid not in (select distinct spid from v$process where lower(program) like ‘%oracle%’)

and oracle_username='[被锁定账户]’;

3. 杀掉进程:

alter system kill session ‘[SID],[serial#]’;

其中,[SID]和[serial#]分别为第二步中查询到的SID和serial#。

4. 确认口令已经解锁:

select USERNAME ,ACCOUNT_STATUS ,LOCK_DATE

from DBA_USERS

where USERNAME='[被锁定账户]’;

这个步骤可以验证口令是否已经解锁成功。

Oracle 12c解锁口令之谜是一个比较棘手的问题。虽然Oracle已经发布了修补程序,但问题并没有完全得到解决。针对这个问题,我们需要手动杀掉导致错误的进程,以释放资源并解锁口令。当然,最好的方式是通过不断地加强口令安全性,尽可能地避免口令被锁定的情况。


数据运维技术 » Oracle 12c解锁口令之谜(oracle12c 口令)