服务器断电,数据库mount失败
SQL> startup mount pfile='d:/pfile.txt'
ORACLE 例程已经启动。
Total System Global Area 1185853440 bytes
Fixed Size 2175168 bytes
Variable Size 335548224 bytes
Database Buffers 838860800 bytes
Redo Buffers 9269248 bytes
ORA-00205: ?????????, ??????, ???????
alert日志报错信息
Sun Mar 19 20:18:29 2023
ALTER DATABASE MOUNT
Errors in file d:\app\xifenfei\diag\rdbms\orcl\orcl\trace\orcl_ckpt_15064.trc (incident=3697):
ORA-00227: ????????????: (? 1, # ? 1)
ORA-00202: ????: ''D:\BAIDUNETDISKDOWNLOAD\ORCL\CONTROL01.CTL''
Incident details in: d:\app\xifenfei\diag\rdbms\orcl\orcl\incident\incdir_3697\orcl_ckpt_15064_i3697.trc
Sun Mar 19 20:18:30 2023
Errors in file d:\app\xifenfei\diag\rdbms\orcl\orcl\trace\orcl_m000_18084.trc (incident=3761):
ORA-00227: ????????????: (? 1, # ? 1)
ORA-00202: ????: ''D:\BAIDUNETDISKDOWNLOAD\ORCL\CONTROL01.CTL''
Incident details in: d:\app\xifenfei\diag\rdbms\orcl\orcl\incident\incdir_3761\orcl_m000_18084_i3761.trc
Sun Mar 19 20:18:29 2023
MMNL started with pid=16, OS id=9404
ORA-00227: ????????????: (? 1, # ? 1)
ORA-00202: ????: ''D:\BAIDUNETDISKDOWNLOAD\ORCL\CONTROL01.CTL''
Checker run found 1 new persistent data failures
Trace dumping is performing id=[cdmp_20230319201831]
ORA-205 signalled during: ALTER DATABASE MOUNT...
错误比较明显由于控制文件的block损坏导致数据库在mount的时候提示ORA-00205,重试重建ctl
SQL> CREATE CONTROLFILE REUSE DATABASE "orcl" NORESETLOGS NOARCHIVELOG
2 MAXLOGFILES 50
3 MAXLOGMEMBERS 5
4 MAXDATAFILES 100
5 MAXINSTANCES 8
6 MAXLOGHISTORY 226
7 LOGFILE
8 GROUP 1 'D:\BaiduNetdiskDownload\orcl/redo01.log' SIZE 50M,
9 GROUP 2 'D:\BaiduNetdiskDownload\orcl/redo02.log' SIZE 50M,
10 GROUP 3 'D:\BaiduNetdiskDownload\orcl/redo03.log' SIZE 50M
11 DATAFILE
12 'D:\BaiduNetdiskDownload\orcl\EXAMPLE01.DBF',
13 'D:\BaiduNetdiskDownload\orcl\GHZN.DBF',
14 'D:\BaiduNetdiskDownload\orcl\GHZN2.DBF',
15 'D:\BaiduNetdiskDownload\orcl\SYSAUX01.DBF',
16 'D:\BaiduNetdiskDownload\orcl\SYSTEM01.DBF',
17 'D:\BaiduNetdiskDownload\orcl\UNDOTBS01.DBF',
18 'D:\BaiduNetdiskDownload\orcl\USERS01.DBF'
19 CHARACTER SET ZHS16GBK
20 ;
CREATE CONTROLFILE REUSE DATABASE "orcl" NORESETLOGS NOARCHIVELOG
*
ERROR at line 1:
ORA-01503: CREATE CONTROLFILE failed
ORA-01565: error in identifying file
'D:\BaiduNetdiskDownload\orcl\UNDOTBS01.DBF'
ORA-27041: unable to open file
OSD-04001: 逻辑块大小无效 (OS 2613931212)
由于undo文件异常(大小不是block size的整数倍),因此报OSD-04001: 逻辑块大小无效错误.对undo文件及其其他文件进行检查发现数据库文件有不少坏块,而且undo文件的文件头损坏

通过抛弃undo文件并进行一些处理,重建ctl成功,并且recover 数据库成功,顺利open数据库
SQL> CREATE CONTROLFILE REUSE DATABASE "orcl" NORESETLOGS NOARCHIVELOG
2 MAXLOGFILES 50
3 MAXLOGMEMBERS 5
4 MAXDATAFILES 100
5 MAXINSTANCES 8
6 MAXLOGHISTORY 226
7 LOGFILE
8 GROUP 1 'D:\BaiduNetdiskDownload\orcl/redo01.log' SIZE 50M,
9 GROUP 2 'D:\BaiduNetdiskDownload\orcl/redo02.log' SIZE 50M,
10 GROUP 3 'D:\BaiduNetdiskDownload\orcl/redo03.log' SIZE 50M
11 DATAFILE
12 'D:\BaiduNetdiskDownload\orcl\EXAMPLE01.DBF',
13 'D:\BaiduNetdiskDownload\orcl\GHZN.DBF',
14 'D:\BaiduNetdiskDownload\orcl\GHZN2.DBF',
15 'D:\BaiduNetdiskDownload\orcl\SYSAUX01.DBF',
16 'D:\BaiduNetdiskDownload\orcl\SYSTEM01.DBF',
17 'D:\BaiduNetdiskDownload\orcl\USERS01.DBF'
18 CHARACTER SET ZHS16GBK
19 ;
Control file created.
SQL> recover database;
Media recovery complete.
SQL> shutdown immediate;
ORA-01109: database not open
Database dismounted.
ORACLE instance shut down.
SQL> startup mount pfile='d:/pfile.txt'
ORACLE instance started.
Total System Global Area 1185853440 bytes
Fixed Size 2175168 bytes
Variable Size 335548224 bytes
Database Buffers 838860800 bytes
Redo Buffers 9269248 bytes
Database mounted.
SQL> alter database open;
Database altered.
然后使用逻辑方式导出数据,运气不错业务文件没有任何坏块,system坏块在aud$上,无任何业务数据丢失.