处理ORA-01102错误
现在简单写一下处理过程:
1、我登陆操作系统
2、首先我查看数据库状态
select * from v$instanc;
3、查看数据库日志文件
tail -400 $ORACLE_BASE/admin/orcl/bdump/alert_orcl.log
4、关闭数据库
shutdown immediate
5、启动数据库报错ORA-01102 cannot mount database in EXCLUSIVE mode,找了一下ORA-01102资料
A、在HA系统中,已经有其他节点启动了实例,将双机共享的资源(如磁盘阵列上的裸设备)占用了;
B、说明Oracle被异常关闭时,有资源没有被释放,一般有以下几种可能,
a、 Oracle的共享内存段或信号量没有被释放;
b、 Oracle的后台进程(如SMON、PMON、DBWn等)没有被关闭;
c、 用于锁内存的文件lk<sid>和sgadef<sid>.dbf文件没有被删除。
遇到c的情况,我删除了$ORACLE_HOME/dbs/下的lk开头文件(其实b种情况也出现了。后来才意识到)
6、关闭数据库
7、启动数据库报ORA-00202 控制文件被占用
8、关闭数据库
9、再次删除了$ORACLE_HOME/dbs/下的lk开头文件
10、切换到root用户下查看oracle的后台进程都再运行,ORA-01102 错误的b中情况也出现了,强行kill -9 (ora_lgwr_orcl的进程号)
11、启动数据,正常
12、做个一个数据库全备
13、检查数据库用户状态,切换数据库用户 conn 用户/密码,提示用户已经被锁定。
解锁 : alter user 用户名 account unlock;
至此问题处理完毕。应用正常运行。
总结:
反复使用错误的密码尝试连接数据库,超过了数据库默认的10次的尝试次数,用户被锁定,加上数据库异常关闭,不排除有人恶意操作数据库。