|
还有几个问题
我做该实验的结果更奇怪,过了好长时间系统没有反应,也没生成control文件! 不知道为什么??
oracle@primary $ls -rlt
total 545412
-rw-r----- 1 oracle dba 557948928 May 6 19:16 ORACLE_04hidmus_4_1.dbf
oracle@primary $pwd
/home/oracle/orabak
DECLARE
devtype varchar2(256);
done boolean;
BEGIN
devtype:=sys.dbms_backup_restore.deviceAllocate(type=>'',ident=>'T1');
sys.dbms_backup_restore.restoreSetDatafile;
sys.dbms_backup_restore.restoreControlfileTo(cfname=>'/home/oracle/control01.ctl');
sys.dbms_backup_restore.restoreBackupPiece(done=>done,handle=>'/home/oracle/orabak/ORACLE_04hidmus_4_1.dbf', params=>null);
sys.dbms_backup_restore.deviceDeallocate;
END;
还有,我看了你们的操作步骤,我有几个疑问:
1)恢复完控制文件后,还要分别使用DBMS_BACKUP_RESTORE包来一个个单独恢复数据文件,这就必须记住备份时datafileno与datafilename之间的对应关系,可是很多人都不会保留list backup的输出或第一步全库备份的输出信息,这时候该怎么办呢?
2) sys.dbms_backup_restore.restoreDatafileTo(dfnumber=>01,toname=>'d racleoradatademoSYSTEM01.DBF')
这里是一个datafile对应一个一行吗?? 还是一个tablespace对应一行??
最初由 Fenng 发布
[B][php]SQL> DECLARE
2 devtype varchar2(256);
3 done boolean;
4 BEGIN
5 devtype:=sys.dbms_backup_restore.deviceAllocate (type=>'',ident=>'t1');
6 sys.dbms_backup_restore.restoreSetDatafile;
7 sys.dbms_backup_restore.restoreDatafileTo(dfnumber=>01,toname=>'d:\oracle\o
radata\demo\SYSTEM01.DBF');
8 sys.dbms_backup_restore.restoreDatafileTo(dfnumber=>02,toname=>'d:\oracle\o
radata\demo\UNDOTBS01.DBF');
9 sys.dbms_backup_restore.restoreDatafileTo(dfnumber=>03,toname=>'d:\oracle\o
radata\demo\DRSYS01.DBF');
10 sys.dbms_backup_restore.restoreDatafileTo(dfnumber=>04,toname=>'d:\oracle\o
radata\demo\EXAMPLE01.DBF');
11 sys.dbms_backup_restore.restoreDatafileTo(dfnumber=>05,toname=>'d:\oracle\o
radata\demo\INDX01.DBF');
12 sys.dbms_backup_restore.restoreDatafileTo(dfnumber=>06,toname=>'d:\oracle\o
radata\demo\ODM01.DBF');
13 sys.dbms_backup_restore.restoreDatafileTo(dfnumber=>07,toname=>'d:\oracle\o
radata\demo\TOOLS01.DBF');
14 sys.dbms_backup_restore.restoreDatafileTo(dfnumber=>08,toname=>'d:\oracle\o
radata\demo\USERS01.DBF');
15 sys.dbms_backup_restore.restoreDatafileTo(dfnumber=>09,toname=>'d:\oracle\o
radata\demo\XDB01.DBF');
16 sys.dbms_backup_restore.restoreBackupPiece(done=>done,handle=>'D:\KDE\DEMO_
01FR79OT_1_1.DBF', params=>null);
17 sys.dbms_backup_restore.deviceDeallocate;
18 END;
19 /
PL/SQL procedure successfully completed.
--我们的情形是所有的数据文件都丢失了,那就如法炮制 ...........
SQL> startup force mount;
ORACLE instance started.
Total System Global Area 152115804 bytes
Fixed Size 453212 bytes
Variable Size 100663296 bytes
Database Buffers 50331648 bytes
Redo Buffers 667648 bytes
Database mounted.
SQL> Recover database using backup controlfile until cancel ;
ORA-00279: change 243854 generated at 07/18/2004 20:57:03 needed for thread 1
ORA-00289: suggestion : D:\KDE\ARC00002.001
ORA-00280: change 243854 for thread 1 is in sequence #2
Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
D:\KDE\ARC00002.001
--手工指定
ORA-00279: change 244089 generated at 07/18/2004 20:58:18 needed for thread 1
ORA-00289: suggestion : D:\KDE\ARC00003.001
ORA-00280: change 244089 for thread 1 is in sequence #3
ORA-00278: log file 'D:\KDE\ARC00002.001' no longer needed for this recovery
Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
cancel
Media recovery cancelled.
SQL> alter database open resetlogs;
Database altered.
最后,不得不resetlogs
然后检查数据,用户可能不得不忍受一些数据的丢失。
[/php]
然后,打扫战场,马上进行数据库的全备份。和用户商议制定并完善备份计划。 [/B] |
|