服务器断电导致的ORACLE异常 : ORA-00214 ORA-01033 ORA-01034 ORA-00172 ORA-27101

xwb 2020-07-19

工作环境中的集群迁移之后,oracle出了挺多问题,最开始一直没找到原因,后来发现做迁移的人是冷迁移的,且数据库节点是硬关机的,惊了(

表现症状有不能登陆,登录了不能操作等

第一个报的是

ORA-00214 : ??? ‘.../CONTROL01.CTL‘  ?? 8292532
‘.../CONTROL02.CTL‘ ?? 8292528 ???

这个是控制文件问题,手动用较新的备份文件(8292532)替换掉旧的在用的即可(8292528)

第二个是连接不上

ORA-01033:ORACLE正在初始化或关闭
ORA-00600:内部错误码

重启试试

SQL> shutdown normal
ORA-01109: 数据库未打开
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup mount
ORACLE 例程已经启动。
Total System Global Area  289406976 bytes
Fixed Size                  1248576 bytes
Variable Size              83886784 bytes
Database Buffers          197132288 bytes
Redo Buffers                7139328 bytes
数据库装载完毕。
SQL> alter database open;

到这边可能情况就不太一样了,我这边是

ORA-01172:线程1的恢复停止在块57(在文件2中)
ORA-01151:如需要,请使用介质恢复以…

就是需要用recover恢复一下就好啦

SQL> shutdown immediate
ORA-01109: 数据库未打开
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup mount
ORACLE 例程已经启动。
Total System Global Area  289406976 bytes
Fixed Size                  1248576 bytes
Variable Size              83886784 bytes
Database Buffers          197132288 bytes
Redo Buffers                7139328 bytes
数据库装载完毕。
SQL> recover database;
完成介质恢复。
SQL> alter database open;
数据库已更改。
SQL> exit

还有种问题就是

ORA-01034: ORACLE not available
ORA-27101: shared memory realm does not exist
Process ID: 0
Session ID: 0 Serial number: 0

重启就完事,shutdown - startup - alter open

这边用下 resetlogs,不完全恢复后可正常打开

SQL> alter database open resetlogs;
alter database open resetlogs
*
第 1 行出现错误:
ORA-01139: RESETLOGS 选项仅在不完全数据库恢复后有效
SQL>
SQL> recover database until time ‘2013-03-01 12:12:12‘;
完成介质恢复。
SQL> alter database open resetlogs;
数据库已更改。
SQL> shutdown
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup
ORACLE 例程已经启动。
Total System Global Area 6847938560 bytes
Fixed Size                  2188768 bytes
Variable Size            3422554656 bytes
Database Buffers         3405774848 bytes
Redo Buffers               17420288 bytes
数据库装载完毕。
数据库已经打开。

以上操作中,总要先sqlplus,一般来说直接sqlplus即可,如果用户出了问题,就用空闲进程

sqlplus system/manager11
sqlplus system/

可以使用nolog,如果数据库是带listener的,as sysdba时候 / 可以用 sys/sys

sqlplus /nolog
conn / as sysdba
conn sys/ as sysdba

顺便记录下,用户被锁的时候:

select username,account_status from dba_users;
alter user user_name account unlock;

可以看下密码错误次数限制登录的设置,并改成无限次

select * from dba_profiles where profile=‘DEFAULT‘ and resource_name=‘FAILED_LOGIN_ATTEMPTS‘;
alter profile default limit failed_login_attempts unlimited; 

相关推荐