C盘不小心被格式化了,Oracle在D盘,重装系统后,需要把数据库恢复起来
1.无法打开数据库,需要重建控制文件。
SQL> shutdown abort;
ORACLE 例程已经关闭。
SQL> startup nomount;
ORACLE 例程已经启动。
然后用旧得控制文件覆盖新的,一定要nomount状态才能覆盖,不然会提示文件在使用覆盖不了。
执行创建控制文件的语句:alter database backup controlfile to trace;
生成的.trc文件到D:\Oracle\diag\rdbms\test\test\trace\*.trc,路径可能会不一样,可在路径搜索trace根据时间找到刚才生成的.trc,打开文件根据其Create controlfile reuse database "TEST"的内容创建脚本文件temp.txt备用。
temp.txt脚本文件大致内容如下:
Create controlfile reuse database "TEST" RESETLOGS
MAXLOGFILES 192
MAXLOGMEMBERS 3
MAXDATAFILES 1024
MAXINSTANCES 32
MAXLOGHISTORY 292
Datafile
'D:\oracle\oradata\TEST\SYSTEM01.DBF',
'D:\oracle\oradata\TEST\SYSAUX01.DBF',
'D:\oracle\oradata\TEST\UNDOTBS01.DBF',
'D:\oracle\oradata\TEST\USERS01.DBF',
'D:\test\db\DAT.ORA',
'D:\test\db\LOG01.ORA',
'D:\test\db\LOG02.ORA',
'D:\test\db\LOG03.ORA',
'D:\test\db\LOG04.ORA',
'D:\test\db\LOG05.ORA',
'D:\test\db\LOG06.ORA',
'D:\test\db\LOG07.ORA',
'D:\test\db\LOG08.ORA',
'D:\test\db\LOG09.ORA',
'D:\test\db\LOG10.ORA'
LOGFILE GROUP 1 ('D:\oracle\oradata\TEST\redo01.log') SIZE 51200K,
GROUP 2 ('D:\oracle\oradata\TEST\redo02.log') SIZE 51200K,
GROUP 3 ('D:\oracle\oradata\TEST\redo03.log') SIZE 51200K
;
2.执行刚才创建的控制文件
SQL> @D:\temp.txt
Control file created.
3.以mount状态启动数据库:alter database mount;
4.SQL> recover database;
ORA-00283: 恢复会话因错误而取消
ORA-01610: 使用 BACKUP CONTROLFILE 选项的恢复必须已完成
5.因为采用的resetlogs方式恢复,所以出现以上错误,此时需要:
SQL> recover database using backup controlfile until cancel;
根据提示输入文件路径:D:\oracle\oradata\TEST\redo03.log
如还是报错提示输入文件路径,就换一个.log文件:D:\oracle\oradata\TEST\redo02.log,直到:
已应用的日志。
完成介质恢复。
6.SQL> alter database open resetlogs;
数据库已更改。
7.卸载数据库:SQL> shutdown immediate;
然后再启起来:SQL> startup;