仅仅丢失一个普通用户数据文件的恢复A(联机恢复)
(例如,丢失D:\BACKUPDB\USERS01.DBF)
准备工作, 通过下面的工作,如果完全恢复,应该可以看到;insert into test1 values(2);
SQL> conn lunar/lunar
SQL> select * from tab;
TESTBACKUP3 TABLE
SQL> create table test1 (a number);
SQL> insert into test1 values(1);
SQL> alter system switch logfile;
SQL> commit;
SQL> alter system switch logfile;
SQL> insert into test1 values(2);
SQL> commit;
SQL> alter system switch logfile;
SQL> conn internal
SQL> archive log list
数据库日志模式存档模式
自动存档启用
存档终点d:\BACKUPDB\archive
最早的概要信息日志序列  3
下一个存档日志序列5
当前日志序列  5
shutdown abort关闭例程,模拟数据文件丢失
SQL> shutdown abort
ORACLE 例程已经关闭。
Mount数据库
SQL> startup mount
数据库装载完毕。
truncate的数据如何恢复使损坏的数据文件脱机
SQL> alter database datafile 'D:\BACKUPDB\USERS01.DBF' offline;
打开数据库
SQL> alter database open;
拷贝刚才热备的数据文件(USERS01.DBF)
恢复损坏的数据文件
SQL> recover datafile 'D:\BACKUPDB\USERS01.DBF';
ORA-00279: ?? 424116 (? 10/20/2002 20:42:04 ??) ???? 1 ????
ORA-00289: ??: D:\BACKUPDB\ARCHIVE\BACKUPT001S00001.ARC
ORA-00280: ?? 424116 ???? 1 ???? # 1 ???
指定日志: {<RET>=suggested | filename | AUTO | CANCEL}
auto
ORA-00279: ?? 424125 (? 10/20/2002 20:44:14 ??) ???? 1 ????
ORA-00289: ??: D:\BACKUPDB\ARCHIVE\BACKUPT001S00002.ARC
ORA-00280: ?? 424125 ???? 1 ???? # 2 ???
ORA-00278: ??????????? 'D:\BACKUPDB\ARCHIVE\BACKUPT001S00001.ARC' ……………………..
已应用的日志。
完成介质恢复。
使恢复完成的数据文件联机
SQL> alter database datafile 'D:\BACKUPDB\USERS01.DBF' online;
验证恢复的结果:完全恢复
SQL> select * from tab;
TNAME TABTYPE CLUSTERID
SQL> select * from test1;
说明:
1. shutdown abort关闭例程,模拟数据文件丢失
2. Mount数据库
3. 使损坏的数据文件脱机
4. 打开数据库
5. 拷贝刚才热备的数据文件(USERS01.DBF)
6. 恢复损坏的数据文件
7.使恢复完成的数据文件联机
shutdown immedate,恢复全部数据文件(不包括control 和redo)
(把热备的数据文件拷贝回来,不包括control和redo)
SQL> conn internal
SQL> shutdown immediate;
复制全部热备的数据文件过来(完全恢复成功!)
mount数据库
SQL> startup mount
完全恢复数据库
SQL> recover database;
ORA-00279: change 424112 generated at 10/20/2002 20:40:52 needed for thread 1
ORA-00289: suggestion : D:\BACKUPDB\ARCHIVE\BACKUPT001S00001.ARC
ORA-00280: change 424112 for thread 1 is in sequence #1
Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
auto
ORA-00279: change 424125 generated at 10/20/2002 20:44:14 needed for thread 1
ORA-00289: suggestion : D:\BACKUPDB\ARCHIVE\BACKUPT001S00002.ARC
ORA-00280: change 424125 for thread 1 is in sequence #2
ORA-00278: log file 'D:\BACKUPDB\ARCHIVE\BACKUPT001S00001.ARC' no longer needed for this recovery
……………………………………………..
Log applied.
Media recovery complete.
打开数据库
SQL> alter database open;
验证恢复结果:完全恢复
SQL> conn lunar/lunar
SQL> select * from test1;
完全恢复成功!
说明:
1.  复制全部热备的数据文件过来
2.  mount数据库
3.  完全恢复数据库
4.  打开数据库
shutdown abort的情况,恢复全部控制文件和数据文件(不包括redo)
准备工作(这样,insert into test1 values(13);就是没有提交的数据了,如果完全恢复,应该一直可以看到insert into test1 values(12);)
SQL> conn lunar/lunar
SQL> select * from test1;
SQL> insert into test1 values(12);
commit;
SQL> insert into test1 values(13);
单开一个session,用来shutdow abort
E:\>sqlplus internal
SQL> shutdown abort
ORACLE 例程已经关闭。
拷贝所有的控制文件和数据文件(不包括redo)
mount数据库,按照提示重建口令文件
SQL> startup mount
ORACLE instance started.
ORA-01991: invalid password file 'd:\oracle1\ora81\DATABASE\PWDbackup.ORA'
SQL> host
E:\>cd d:\oracle1\ora81\DATABASE
D:\oracle1\ora81\database>del PWDbackup.ORA
D:\oracle1\ora81\database>orapwd file=d:\oracle1\ora81\DATABASE\PWDbackup.ORA pa ssword=oracle entries=10
/* orapwd Usage: orapwd file=<fname> password=<password> entries=<users>
where
file - name of password file (mand),
password - password for SYS and INTERNAL (mand),
entries - maximum number of distinct DBAs and OPERs (opt),
There are no spaces around the equal-to (=) character. */
D:\oracle1\ora81\database>exit
这时,试图完全恢复数据库是不成功的
SQL> recover database;
ORA-00283: recovery session canceled due to errors
ORA-01610: recovery using the BACKUP CONTROLFILE option must be done
用to trace备份控制文件
SQL>alter database backup controlfile to trace;
SQL>shutdown immediate;
ORA-01109: database not open
Database dismounted.
ORACLE instance shut down.
到并且编辑控制文件
STARTUP NOMOUNT
CREATE CONTROLFILE REUSE DATABASE "BACKUP" NORESETLOGS ARCHIVELOG    MAXLOGFILES 32
MAXLOGMEMBERS 2
MAXDATAFILES 254
MAXINSTANCES 1
MAXLOGHISTORY 453
LOGFILE
GROUP 1 'D:\BACKUPDB\REDO01.LOG' SIZE 1M,
GROUP 2 'D:\BACKUPDB\REDO02.LOG' SIZE 1M,
GROUP 3 'D:\BACKUPDB\REDO03.LOG' SIZE 1M
DATAFILE
'D:\BACKUPDB\SYSTEM01.DBF',
'D:\BACKUPDB\RBS01.DBF',
'D:\BACKUPDB\USERS01.DBF',
'D:\BACKUPDB\TEMP01.DBF',
'D:\BACKUPDB\TOOLS01.DBF',
'D:\BACKUPDB\INDX01.DBF'
CHARACTER SET ZHS16GBK;
RECOVER DATABASE
ALTER SYSTEM ARCHIVE LOG ALL;
ALTER DATABASE OPEN;
重建控制文件
SQL> startup nomount
SQL> @D:\BACKUPDB\udump\ORA01532.sql
ORA-01081: cannot start already-running ORACLE - shut it down first
Control file created.
ORA-00279: change 424112 generated at 10/20/2002 20:40:52 needed for thread 1 ORA-00289: suggestion : D:\BACKUPDB\ARCHIVE\BACKUPT001S00001.ARC
ORA-00280: change 424112 for thread 1 is in sequence #1
ORA-00308: cannot open archived log 'ALTER'
ORA-27041: unable to open file
OSD-04002: 无法打开文件
O/S-Error: (OS 2) 系统不到指定的文件。
ALTER DATABASE OPEN
*
ERROR at line 1:
ORA-01113: file 1 needs media recovery
ORA-01110: data file 1: 'D:\BACKUPDB\SYSTEM01.DBF'
shutdown immediate,然后重新恢复数据库
SQL> shutdown immediate;

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。