夏日,天气热。
进入7月后,这几天分外的燥热。
公司的用电负荷也随着这份热一步步走向高峰。于是断电跳闸的情况出现了,而且连续出现了。
数据库服务器也不堪连续的意外关闭,出现启动异常了。错误代码ORA-01033。
操作步骤如下,因为数据库服务器有多个实例,所以一开始先设置的当前数据库实例名。
数据库实例关闭后的第一次启动目的是查看是什么原因引起不能正常启动,提示出那个数据文件有问题。
明确那个文件后,使用startup mount启动,进行处理。
使用recover datafile进行处理时,一般都可以恢复成功。
若不成功,则比较复杂,如果有数据备份则可通过备份恢复,否则无法进行恢复,可使用alter database datafile 文件名 offline drop语句,将文件设置为离线。此文件中的数据则不能被加载。
通过alter database open语句启动数据库,若无错误数据库恢复正常,若还存在不能加载的文件则继续按照上述方式进行处理,直至完成。
C:\>set ORACLE_SID=ORCL1
C:\>sqlplus "/ as sysdba"
SQL*Plus: Release 10.2.0.4.0 - Production on 星期五 7月 9 09:17:36 2010
Copyright (c) 1982, 2007, Oracle. All Rights Reserved.
连接到:
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL> shutdown immediate
ORA-01109: 数据库未打开
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup
ORACLE 例程已经启动。
Total System Global Area 1258291200 bytes
Fixed Size 2065408 bytes
Variable Size 385879040 bytes
Database Buffers 855638016 bytes
Redo Buffers 14708736 bytes
数据库装载完毕。
ORA-01115: 从文件 10 读取块时出现 IO 错误 (块 # 2338895)
ORA-01110: 数据文件 10:
'G:\ORACLE\ORACLE_TABLESPACE\HBCENTADM\HBCENTADM_DATA.DBS'
ORA-27070: 异步读取/写入失败
OSD-04016: 异步 I/O 请求排队时出错。
O/S-Error: (OS 23) 数据错误(循环冗余检查)。
SQL> shutdown immediate
ORA-01109: 数据库未打开
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup mount
ORACLE 例程已经启动。
Total System Global Area 1258291200 bytes
Fixed Size 2065408 bytes
Variable Size 385879040 bytes
Database Buffers 855638016 bytes
Redo Buffers 14708736 bytes
数据库装载完毕。
SQL> recover datafile 10
ORA-00283: 恢复会话因错误而取消
ORA-12801: 并行查询服务器 P000 中发出错误信号
ORA-01115: 从文件 10 读取块时出现 IO 错误 (块 # 2338895)
ORA-01110: 数据文件 10:
'G:\ORACLE\ORACLE_TABLESPACE\HBCENTADM\HBCENTADM_DATA.DBS'
ORA-27
SQL> select name, log_mode from v$database;
NAME LOG_MODE
--------- ------------
ORCL1 NOARCHIVELOG
SQL> alter database datafile 'G:\ORACLE\ORACLE_TABLESPACE\HBCENTADM\HBCENTADM_DATA.DBS' offline drop;
数据库已更改。
SQL> alter database open;
数据库已更改。