1,安裝oracle 10g數據庫並創建一個要恢復的數據庫相同一的實例(注意:最好是新安裝的數據庫,並且安裝的數據庫盡量和要恢復的數據庫的版本一致,並且實例必須一致);
2,以sysdba身份登錄:對控制文件進行備份;
sqlplus /nolog;(此處不能加分號,否則黑屏窗口會一閃而過)
conn /as sysdba;登錄
2,備份控件文件到udmp目錄的trace文件 alter database backup controlfile to trace;

找到oracle的安裝目錄:..\oracle\product\10.2.0\db_1\admin\實例名\udump文件夾下(其中10.1的文件路徑為 E:\oracle\product\10.1.0\admin\orcl,此處可在oracle的文件夾下搜索.trc進行查找),按修改時間降序,找到最近的trace文件。備份好。
3,shutdown immediate停止數據庫實例;
4,備份..\oracle\product\10.2.0\oradata目錄下的該實例文件夾(例如:orcl),接着將該實例文件夾刪除(必須是全部刪除吧要恢復的實例文件夾放到此位置,不能只把要恢復的DBF直接替換原來orcl,否則創建控制文件時會報如下錯誤),把需恢復的數據庫的oradata目錄下所有文件拷到此目錄下。

5,以sysdba進入並執行startup nomount。把數據庫啟動到nomount狀態。
6,從第2步備份出來trace文件中拷貝CREATE CONTROLFILE部分語句來重建控制文件:
注意:1,改為ARCHIVELOG;2,增加你的DBF文件,只增加*_DATA.DBF,*_TEMP.DBF不能在這添加
此處應根據實際情況增刪表空間文件記錄,如以下黑體部分則為新增記錄。
CREATE CONTROLFILE REUSE DATABASE "ORCL" NORESETLOGS ARCHIVELOG
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 100
MAXINSTANCES 8
MAXLOGHISTORY 454
LOGFILE
GROUP 1 'D:\ORACLE\PRODUCT\10.1.0\ORADATA\ORCL\REDO01.LOG' SIZE 10M,
GROUP 2 'D:\ORACLE\PRODUCT\10.1.0\ORADATA\ORCL\REDO02.LOG' SIZE 10M,
GROUP 3 'D:\ORACLE\PRODUCT\10.1.0\ORADATA\ORCL\REDO03.LOG' SIZE 10M
-- STANDBY LOGFILE
DATAFILE
'D:\ORACLE\PRODUCT\10.1.0\ORADATA\ORCL\SYSTEM01.DBF',
'D:\ORACLE\PRODUCT\10.1.0\ORADATA\ORCL\UNDOTBS01.DBF',
'D:\ORACLE\PRODUCT\10.1.0\ORADATA\ORCL\SYSAUX01.DBF',
'D:\ORACLE\PRODUCT\10.1.0\ORADATA\ORCL\USERS01.DBF',
'D:\ORACLE\PRODUCT\10.1.0\ORADATA\ORCL\EXAMPLE01.DBF',
'D:\ORACLE\PRODUCT\10.1.0\ORADATA\ORCL\YC_DATA.DBF',
'D:\ORACLE\PRODUCT\10.1.0\ORADATA\ORCL\PE_DATA.DBF',
'D:\ORACLE\PRODUCT\10.1.0\ORADATA\ORCL\HS.ORA'
CHARACTER SET ZHS16GBK
;
7,RECOVER DATABASE;

(這個地方錯誤暫時不用理會。)
8ALTER DATABASE OPEN;

恢復完成,登錄數據庫進行測試。
