日期:2014-05-16  浏览次数:20404 次

ORA-28001和ORA-12505 的Oracle错误。

今天一早接到电话,应用启动不了,火速赶往。。

问题一:ORA-28001: the password has expired 

密码过期后,业务进程连接数据库异常。

1)、使用sqlplus / as sysdba;命令进入系统,然后查询下用户状态

          select username,account_status from dba_users;  

看到我使用的用户密码过期了,状态显示EXPIRED 也有的用户状态是EXPIRED&LOCKED,正常的应该是OPEN的。

2)、使用alter user ink identified by  <原来的密码>  ,把密码重置下就可以。如果用户状态是EXPIRED&LOCKED,需要使用下面SQL解除下LOCKED状态

          alter user db_user account unlock;无需重启数据库

3)、再使用下面的SQL查看用户密码过去时间,11G版本的过期密码都是180天。

         SELECT * FROM dba_profiles WHERE profile='DEFAULT' AND resource_name='PASSWORD_LIFE_TIME'

4)、破解密码为无限制过期

         Alter PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;


问题二:ORA-12505,SID注册出现问题,修改如下

1.在oracle目录下查找listener.ora文件,修改成如下格式的:
# listener.ora Network Configuration File: D:\app\oracle11g\network\admin\listener.ora
# Generated by Oracle configuration tools.


SID_LIST_LISTENER =
(SID_LIST =
    (SID_DESC =
      (SID_NAME = PLSExtProc)
      (ORACLE_HOME = D:\app\oracle11g)
      (PROGRAM = extproc)
    )
    (SID_DESC =
      (GLOBAL_DBNAME = ORA11G)
      (ORACLE_HOME = D:\app\oracle11g)
      (SID_NAME = ora11g)
    )

)


LISTENER =
(DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
      (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    )
)