北大青鸟佳音旗舰中心网站:ACCP校区(软件工程师)  BENET校区(网络工程师)  综合站 招聘网  
 
首 页  学校简介  学校新闻  课程详解  师资力量  招生问答  就业广场  网上报名  学习园地  就业明星  网上学院  人才测评  证书查询
免费课程咨询电话: 010-68345688 点击这里给我发消息 杨老师 点击这里给我发消息 李老师 点击这里给我发消息 齐老师 点击这里给我发消息 刘老师 点击这里给我发消息 张老师
 
你所在的位置:首页>> 首页- 学习园地-Oracle联机恢复手记



Oracle联机恢复手记

编辑:北大青鸟 发布时间:2006-11-22 14:06:39阅读:4579


*仅仅丢失一个普通用户数据文件的恢复A(联机恢复)
(例如,丢失D:\BACKUPDB\USERS01.DBF)
准备工作
通过下面的工作,如果完全恢复,应该可以看到;insert into test1 values(2);
SQL> conn lunar/lunar
已连接。
SQL> select * from tab;
TESTBACKUP3 TABLE
已选择 1 行。
SQL> create table test1
2 (a number);
表已创建。
SQL> insert into test1 values(1);
已创建 1 行。
SQL> alter system switch logfile;
系统已更改。
SQL> commit;
提交完成。
SQL> alter system switch logfile;
系统已更改。
SQL> insert into test1 values(2);
已创建 1 行。
SQL> commit;
提交完成。
SQL> alter system switch logfile;
系统已更改。
SQL> conn internal
已连接。
SQL> archive log list
数据库日志模式 存档模式
自动存档 启用
存档终点 d:\BACKUPDB\archive
最早的概要信息日志序列 3
下一个存档日志序列 5
当前日志序列 5
SQL>
shutdown abort关闭例程,模拟数据文件丢失
SQL> shutdown abort
ORACLE 例程已经关闭。
Mount数据库
SQL> startup mount
ORACLE 例程已经启动。
Total System Global Area 25856028 bytes
Fixed Size 75804 bytes
Variable Size 8925184 bytes
Database Buffers 16777216 bytes
Redo Buffers 77824 bytes
数据库装载完毕。
使损坏的数据文件脱机
SQL> alter database datafile 'D:\BACKUPDB\USERS01.DBF' offline;
数据库已更改。
打开数据库
SQL> alter database open;
数据库已更改。
SQL>
拷贝刚才热备的数据文件(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 ???
指定日志: {=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'
ORA-00279: ?? 424135 (? 10/20/2002 21:55:35 ??) ???? 1 ????
ORA-00289: ??: D:\BACKUPDB\ARCHIVE\BACKUPT001S00003.ARC
ORA-00280: ?? 424135 ???? 1 ???? # 3 ???
ORA-00278: ??????????? 'D:\BACKUPDB\ARCHIVE\BACKUPT001S00002.ARC'
已应用的日志。
完成介质恢复。
SQL>
使恢复完成的数据文件联机
SQL> alter database datafile 'D:\BACKUPDB\USERS01.DBF' online;
Database altered.
验证恢复的结果:完全恢复
SQL> select * from tab;
TNAME TABTYPE CLUSTERID
------------------------------ ------- ----------
TEST1 TABLE
TESTBACKUP3 TABLE
SQL> select * from test1;
A
----------
1
2
说明:
1. shutdown abort关闭例程,模拟数据文件丢失
2. Mount数据库
3. 使损坏的数据文件脱机
4. 打开数据库
5. 拷贝刚才热备的数据文件(USERS01.DBF)
6. 恢复损坏的数据文件
7. 使恢复完成的数据文件联机
shutdown immedate,恢复全部数据文件(不包括control和redo)
(把热备的数据文件拷贝回来,不包括control和redo)
SQL> conn internal
Connected.
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL>
复制全部热备的数据文件过来(完全恢复成功!)
mount数据库
SQL> startup mount
ORACLE instance started.
Total System Global Area 25856028 bytes
Fixed Size 75804 bytes
Variable Size 8925184 bytes
Database Buffers 16777216 bytes
Redo Buffers 77824 bytes
Database mounted.
SQL>
完全恢复数据库
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: {=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
ORA-00279: change 424135 generated at 10/20/2002 21:55:35 needed for thread 1
ORA-00289: suggestion : D:\BACKUPDB\ARCHIVE\BACKUPT001S00003.ARC
ORA-00280: change 424135 for thread 1 is in sequence #3
ORA-00278: log file 'D:\BACKUPDB\ARCHIVE\BACKUPT001S00002.ARC' no longer needed
for this recovery
ORA-00279: change 424139 generated at 10/20/2002 21:57:42 needed for thread 1
ORA-00289: suggestion : D:\BACKUPDB\ARCHIVE\BACKUPT001S00004.ARC
ORA-00280: change 424139 for thread 1 is in sequence #4
ORA-00278: log file 'D:\BACKUPDB\ARCHIVE\BACKUPT001S00003.ARC' no longer needed
for this recovery
Log applied.
Media recovery complete.
SQL>
打开数据库
SQL> alter database open;
Database altered.
验证恢复结果:完全恢复
SQL> conn lunar/lunar
Connected.
SQL> select * from test1;
A
----------
1
2
SQL>
完全恢复成功!
说明:
1. 复制全部热备的数据文件过来
2. mount数据库
3. 完全恢复数据库
4. 打开数据库
*shutdown abort的情况,恢复全部数据文件(不包括control和redo)
用热备的数据文件恢复(把热备的数据文件拷贝回来,不包括control和redo)
SQL> conn internal
Connected.
SQL> shutdown abort
ORACLE instance shut down.
SQL>
复制全部热备的数据文件过来(完全恢复成功!)
mount数据库
SQL> startup mount
ORACLE instance started.
Total System Global Area 25856028 bytes
Fixed Size 75804 bytes
Variable Size 8925184 bytes
Database Buffers 16777216 bytes
Redo Buffers 77824 bytes
Database mounted.

完全恢复数据库
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: {=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
ORA-00279: change 424135 generated at 10/20/2002 21:55:35 needed for thread 1
ORA-00289: suggestion : D:\BACKUPDB\ARCHIVE\BACKUPT001S00003.ARC
ORA-00280: change 424135 for thread 1 is in sequence #3
ORA-00278: log file 'D:\BACKUPDB\ARCHIVE\BACKUPT001S00002.ARC' no longer needed
for this recovery
ORA-00279: change 424139 generated at 10/20/2002 21:57:42 needed for thread 1
ORA-00289: suggestion : D:\BACKUPDB\ARCHIVE\BACKUPT001S00004.ARC
ORA-00280: change 424139 for thread 1 is in sequence #4
ORA-00278: log file 'D:\BACKUPDB\ARCHIVE\BACKUPT001S00003.ARC' no longer needed
for this recovery
Log applied.
Media recovery complete.
打开数据库
SQL> alter database open;
Database altered.
验证恢复结果:完全恢复
SQL> conn lunar/lunar
Connected.
SQL> select * from test1;
A
----------
1
2
SQL>
完全恢复成功!
说明:
1. 复制全部热备的数据文件过来
2. mount数据库
3. 完全恢复数据库
4. 打开数据库

*shutdown immediate,丢失全部控制文件(不包括数据文件和redo),A(完全恢复)
SQL> conn internal
Connected.
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL>
用热备的控制文件恢复(把热备的控制文件拷贝回来)
mount数据库
SQL> startup mount
ORACLE instance started.
Total System Global Area 25856028 bytes
Fixed Size 75804 bytes
Variable Size 8925184 bytes
Database Buffers 16777216 bytes
Redo Buffers 77824 bytes
Database mounted.
完全恢复和until cancel using backup controlfile都失败
SQL> recover database;
ORA-00283: recovery session canceled due to errors
ORA-01610: recovery using the BACKUP CONTROLFILE option must be done
SQL> recover database until cancel using backup controlfile;
ORA-00279: change 424123 generated at 10/20/2002 20:44:12 needed for thread 1
Specify log: {=suggested | filename | AUTO | CANCEL}
auto
ORA-00266: name of archived log file needed

ORA-01547: warning: RECOVER succeeded but OPEN RESETLOGS would get error below
ORA-01152: file 1 was not restored from a sufficiently old backup
ORA-01110: data file 1: 'D:\BACKUPDB\SYSTEM01.DBF'
SQL>
重建控制文件
SQL> alter database backup controlfile to trace;
Database altered.
SQL>
找到那个控制文件,然后编辑
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> shutdown immediate;
ORA-01109: database not open
Database dismounted.
ORACLE instance shut down.
SQL> startup nomount;
ORACLE instance started.
Total System Global Area 25856028 bytes
Fixed Size 75804 bytes
Variable Size 8925184 bytes
Database Buffers 16777216 bytes
Redo Buffers 77824 bytes
SQL> @D:\BACKUPDB\udump\ORA02120.sql
ORA-01081: cannot start already-running ORACLE - shut it down first
Cluster altered.
ORA-00283: recovery session canceled due to errors
ORA-00264: no recovery required
System altered.
Database altered.
验证恢复结果:完全恢复
SQL> conn lunar/lunar
Connected.
SQL> select * from test1;
A
----------
1
2

SQL>
完全恢复成功!
说明:
当shutdown immediate的以后,如果丢失全部控制文件(不包括数据文件和redo),需要用热备的控制文件恢复数据库的时候,要想完全恢复(一直恢复到redo中commit的数据),必须执行以下步骤:
1. mount数据库,
2. backup controlfile to trace
3. 修改这个生成的控制文件
4. nomount
5. 重建控制文件,
*shutdown abort的情况,恢复全部控制文件(不包括数据文件和redo)
准备工作
以下说明,如果完全恢复数据库,应该可以看到insert into test1 values(7);
SQL> insert into test1 values(3);
1 row created.
SQL> commit
2 ;
Commit complete.
SQL> insert into test1 values(4);
1 row created.
SQL> commit;
Commit complete.
SQL>
SQL> alter system switch logfile;

System altered.

SQL> conn internal
Connected.
SQL> archive log list;
Database log mode Archive Mode
Automatic archival Enabled
Archive destination d:\BACKUPDB\archive
Oldest online log sequence 8
Next log sequence to archive 10
Current log sequence 10
SQL>
SQL> select * from test1;
A
----------
1
2
3
4
SQL> insert into test1 values(5);
1 row created.
SQL> commit;
Commit complete.
SQL> insert into test1 values(6);
1 row created.
SQL> alter system switch logfile;
System altered.
SQL>
SQL> conn internal
Connected.
SQL> conn lunar/lunar
Connected.
SQL> insert into test1 values(7);
1 row created.
SQL> shutdown abort;
ORA-01031: insufficient privileges
SQL> conn internal
Connected.
SQL> shutdown abort;
ORACLE instance shut down.
SQL>
删除那个控制文件,把热备的控制文件拷贝过来
mount数据库
SQL> startup mount
ORACLE instance started.
Total System Global Area 25856028 bytes
Fixed Size 75804 bytes
Variable Size 8925184 bytes
Database Buffers 16777216 bytes
Redo Buffers 77824 bytes
ORA-01991: invalid password file 'd:\oracle1\ora81\DATABASE\PWDbackup.ORA'
根据提示,重建口令文件
SQL> host
Microsoft Windows 2000 [Version 5.00.2195]
(C) 版权所有 1985-2000 Microsoft Corp.
E:\>cd d:\oracle1\ora81\DATABASE
E:\>d:
D:\oracle1\ora81\database>del PWDbackup.ORA
D:\oracle1\ora81\database>dir
驱动器 D 中的卷是 Program
卷的序列号是 D0E6-FA1C
D:\oracle1\ora81\database 的目录
2002-10-21 00:42

.
2002-10-21 00:42 ..
2002-10-05 15:36 archive
2002-10-17 13:39 40 initBACKUP.ora
2002-10-05 16:09 50 inittest.ora
2002-10-05 15:36 31,744 oradba.exe
2002-10-07 23:39 206 oradim.log
2002-10-16 18:21 1,536 PWDtest.ora
5 个文件 33,576 字节
3 个目录 2,775,724,032 可用字节
D:\oracle1\ora81\database>
D:\oracle1\ora81\database>orapwd file=d:\oracle1\ora81\DATABASE\PWDbackup.ORA password=oracle entries=10;
D:\oracle1\ora81\database>exit
用to trace;备份控制文件
SQL> alter database backup controlfile to trace;
Database altered.
SQL> shutdown immediate
ORA-01109: database not open
Database dismounted.
ORACLE instance shut down.
SQL>
找到那个控制文件,然后编辑
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> @D:\BACKUPDB\udump\ORA02092.sql
ORA-01081: cannot start already-running ORACLE - shut it down first
Cluster altered.
Media recovery complete.
System altered.
Database altered.
SQL>
SQL> conn lunar/lunar
Connected.
SQL> select * from test1;
A
----------
1
2
3
4
5
6
7
7 rows selected.
SQL>
完全恢复成功!
说明:
当shutdown abort的以后,如果丢失全部控制文件(不包括数据文件和redo),需要用热备的控制文件恢复数据库的时候,要想完全恢复(一直恢复到redo中commit的数据),必须执行以下步骤:
1. mount数据库,
2. backup controlfile to trace
3. 修改这个生成的控制文件
4. nomount
5. 重建控制文件,
shutdown immediate的情况,丢失全部控制文件和数据文件(不包括redo),方法1
准备工作
下面的操作,说明如果完全恢复,可以看到insert into test1 values(11);,因为11是redo中已经commit的,12是redo中没有commit的
SQL> insert into test1 values(8);
1 row created.
SQL> commit;
Commit complete.
SQL> insert into test1 values(9);
1 row created.
SQL> alter system switch logfile;
System altered.
SQL> conn internal
Connected.
SQL> archive log list;
Database log mode Archive Mode
Automatic archival Enabled
Archive destination d:\BACKUPDB\archive
Oldest online log sequence 11
Next log sequence to archive 13
Current log sequence 13
SQL>
SQL> conn lunar/lunar
Connected.
SQL> insert into test1 values(10);
1 row created.
SQL> commit;
Commit complete.
SQL> insert into test1 values(11);
1 row created.
SQL> conn internal
Connected.
SQL> conn lunar/lunar
Connected.
SQL> insert into test1 values(12);
1 row created.
SQL>
然后单独开启一个实例,再shutdown immediate
(这样,insert into test1 values(12);就是没有提交的数据了,如果完全恢复应该一直可以看到insert into test1 values(11);)
Microsoft Windows 2000 [Version 5.00.2195]
(C) 版权所有 1985-2000 Microsoft Corp.
E:\>sqlplus internal
SQL*Plus: Release 8.1.7.0.0 - Production on 星期一 10月 21 00:58:38 2002
(c) Copyright 2000 Oracle Corporation. All rights reserved.
连接到:
Oracle8i Enterprise Edition Release 8.1.7.0.0 - Production
With the Partitioning option
JServer Release 8.1.7.0.0 - Production
SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL>
拷贝热备的所有控制文件和数据文件
mount数据库
SQL> startup mount
ORACLE 例程已经启动。
Total System Global Area 25856028 bytes
Fixed Size 75804 bytes
Variable Size 8925184 bytes
Database Buffers 16777216 bytes
Redo Buffers 77824 bytes
ORA-01991: ???????'d:\oracle1\ora81\DATABASE\PWDbackup.ORA'
根据提示,重建口令文件
SQL> host
Microsoft Windows 2000 [Version 5.00.2195]
(C) 版权所有 1985-2000 Microsoft Corp.
E:\>cd d:\oracle1\ora81\DATABASE\PWDbackup
系统找不到指定的路径。
E:\>cd d:\oracle1\ora81\DATABASE
E:\>d:
D:\oracle1\ora81\database>del PWDbackup.ORA
D:\oracle1\ora81\database>dir PWDbackup.ORA
驱动器 D 中的卷是 Program
卷的序列号是 D0E6-FA1C
D:\oracle1\ora81\database 的目录
找不到文件
D:\oracle1\ora81\database>orapwd file=d:\oracle1\ora81\DATABASE\PWDbackup.ORA pa
ssword=oracle entries=10;
D:\oracle1\ora81\database>exit
用to trace备份控制文件
SQL> alter database backup controlfile to trace;
数据库已更改。
shutdown immediate关闭数据库
SQL> shutdown immediate;
ORA-01109: ??????
已经卸载数据库。
ORACLE 例程已经关闭。
SQL>
找到那个控制文件,然后编辑:
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
ORACLE 例程已经启动。
Total System Global Area 25856028 bytes
Fixed Size 75804 bytes
Variable Size 8925184 bytes
Database Buffers 16777216 bytes
Redo Buffers 77824 bytes
SQL>
SQL> @D:\BACKUPDB\udump\ORA01904.sql
ORA-01081: cannot start already-running ORACLE - shut it down first
Cluster altered.
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'
SQL>
关闭数据库
除了redo log file中没有提交的数据,其他都可以找回来
SQL> shutdown immediate;
ORA-01109: database not open
Database dismounted.
ORACLE instance shut down.
重新mount,作完全恢复(recover database;)
SQL> startup mount
ORACLE instance started.
Total System Global Area 25856028 bytes
Fixed Size 75804 bytes
Variable Size 8925184 bytes
Database Buffers 16777216 bytes
Redo Buffers 77824 bytes
Database mounted.
SQL>
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: {=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
ORA-00279: change 424135 generated at 10/20/2002 21:55:35 needed for thread 1
ORA-00289: suggestion : D:\BACKUPDB\ARCHIVE\BACKUPT001S00003.ARC
ORA-00280: change 424135 for thread 1 is in sequence #3
ORA-00278: log file 'D:\BACKUPDB\ARCHIVE\BACKUPT001S00002.ARC' no longer needed
for this recovery
ORA-00279: change 424139 generated at 10/20/2002 21:57:42 needed for thread 1
ORA-00289: suggestion : D:\BACKUPDB\ARCHIVE\BACKUPT001S00004.ARC
ORA-00280: change 424139 for thread 1 is in sequence #4
ORA-00278: log file 'D:\BACKUPDB\ARCHIVE\BACKUPT001S00003.ARC' no longer needed
for this recovery
ORA-00279: change 424143 generated at 10/20/2002 21:57:54 needed for thread 1
ORA-00289: suggestion : D:\BACKUPDB\ARCHIVE\BACKUPT001S00005.ARC
ORA-00280: change 424143 for thread 1 is in sequence #5
ORA-00278: log file 'D:\BACKUPDB\ARCHIVE\BACKUPT001S00004.ARC' no longer needed
for this recovery
ORA-00279: change 444145 generated at 10/20/2002 22:01:23 needed for thread 1
ORA-00289: suggestion : D:\BACKUPDB\ARCHIVE\BACKUPT001S00006.ARC
ORA-00280: change 444145 for thread 1 is in sequence #6
ORA-00278: log file 'D:\BACKUPDB\ARCHIVE\BACKUPT001S00005.ARC' no longer needed
for this recovery
ORA-00279: change 464194 generated at 10/20/2002 22:24:10 needed for thread 1
ORA-00289: suggestion : D:\BACKUPDB\ARCHIVE\BACKUPT001S00007.ARC
ORA-00280: change 464194 for thread 1 is in sequence #7
ORA-00278: log file 'D:\BACKUPDB\ARCHIVE\BACKUPT001S00006.ARC' no longer needed
for this recovery

ORA-00279: change 484347 generated at 10/21/2002 00:16:14 needed for thread 1
ORA-00289: suggestion : D:\BACKUPDB\ARCHIVE\BACKUPT001S00008.ARC
ORA-00280: change 484347 for thread 1 is in sequence #8
ORA-00278: log file 'D:\BACKUPDB\ARCHIVE\BACKUPT001S00007.ARC' no longer needed
for this recovery

ORA-00279: change 484401 generated at 10/21/2002 00:30:27 needed for thread 1
ORA-00289: suggestion : D:\BACKUPDB\ARCHIVE\BACKUPT001S00009.ARC
ORA-00280: change 484401 for thread 1 is in sequence #9
ORA-00278: log file 'D:\BACKUPDB\ARCHIVE\BACKUPT001S00008.ARC' no longer needed
for this recovery

ORA-00279: change 484453 generated at 10/21/2002 00:33:51 needed for thread 1
ORA-00289: suggestion : D:\BACKUPDB\ARCHIVE\BACKUPT001S00010.ARC
ORA-00280: change 484453 for thread 1 is in sequence #10
ORA-00278: log file 'D:\BACKUPDB\ARCHIVE\BACKUPT001S00009.ARC' no longer needed
for this recovery

Log applied.
Media recovery complete.
SQL>

打开数据库
SQL> alter database open;

Database altered.

验证恢复结果:完全恢复
SQL> conn lunar/lunar
Connected.
SQL> select * from test1;

A
----------
1
2
3
4
5
6
7
8
9
10
11

11 rows selected.

SQL>
SQL> conn internal
Connected.
SQL> archive log list;
Database log mode Archive Mode
Automatic archival Enabled
Archive destination d:\BACKUPDB\archive
Oldest online log sequence 12
Next log sequence to archive 14
Current log sequence 14
SQL>
说明:
1. 把热备的控制文件和数据文件拷贝过来
2. mount数据库
3. 根据提示,重建口令文件
4. 用to trace备份控制文件
5. shutdown immediate关闭数据库
6. 找到那个控制文件,然后编辑:
7. 重建控制文件,并且恢复数据库
8. 关闭数据库
9. 重新mount,作完全恢复(recover database;)
10. 打开数据库
*shutdown immediate的情况,丢失全部控制文件和数据文件(不包括redo),方法2
准备工作
如果数据不丢是,应该可以恢复到insert into test1 values(14);,因为14是redo中commit的,15是redo中没有commit的
SQL> conn lunar/lunar
Connected.
SQL> select * from test1;

A
----------
1
2
3
4
5
6
7
8
9
10
11

A
----------
12
13

13 rows selected.

SQL> insert into test1 values(14);

1 row created.

SQL> commit;

Commit complete.

SQL> insert into test1 values(15);

1 row created.

把热备的控制文件和数据文件拷贝过来
mount数据库
SQL> startup mount
ORACLE instance started.

Total System Global Area 25856028 bytes
Fixed Size 75804 bytes
Variable Size 8925184 bytes
Database Buffers 16777216 bytes
Redo Buffers 77824 bytes
ORA-01991: invalid password file 'd:\oracle1\ora81\DATABASE\PWDbackup.ORA'

根据提示,重建口令文件
SQL> host
Microsoft Windows 2000 [Version 5.00.2195]
(C) 版权所有 1985-2000 Microsoft Corp.

E:\>del d:\oracle1\ora81\DATABASE\PWDbackup.ORA

E:\>orapwd file=d:\oracle1\ora81\DATABASE\PWDbackup.ORA password=oracle entries=
10

E:\>exit

尝试恢复数据库(现在恢复是不可以的)
SQL> recover database;
ORA-00283: recovery session canceled due to errors
ORA-01610: recovery using the BACKUP CONTROLFILE option must be done

SQL> recover database using BACKUP CONTROLFILE;
ORA-00279: change 424123 generated at 10/20/2002 20:44:12 needed for thread 1

Specify log: {=suggested | filename | AUTO | CANCEL}
auto
ORA-00266: name of archived log file needed

SQL> recover database until cancel using backup controlfile;
ORA-00279: change 424123 generated at 10/20/2002 20:44:12 needed for thread 1

Specify log: {=suggested | filename | AUTO | CANCEL}
auto
ORA-00266: name of archived log file needed

ORA-01547: warning: RECOVER succeeded but OPEN RESETLOGS would get error below
ORA-01152: file 1 was not restored from a sufficiently old backup
ORA-01110: data file 1: 'D:\BACKUPDB\SYSTEM01.DBF'
可见这样恢复是不行的

试图打开数据库(现在打开是不可以的)
SQL> alter database open;
alter database open
*
ERROR at line 1:
ORA-01589: must use RESETLOGS or NORESETLOGS option for database open

SQL> alter database open resetlogs;
alter database open resetlogs
*
ERROR at line 1:
ORA-01152: file 1 was not restored from a sufficiently old backup
ORA-01110: data file 1: 'D:\BACKUPDB\SYSTEM01.DBF'
可见现在打开是不行的

重新mount数据库
SQL> shutdown immediate;
ORA-01109: database not open

Database dismounted.
ORACLE instance shut down.
SQL> startup mount;
ORACLE instance started.

Total System Global Area 25856028 bytes
Fixed Size 75804 bytes
Variable Size 8925184 bytes
Database Buffers 16777216 bytes
Redo Buffers 77824 bytes
Database mounted.

备份控制文件
SQL> alter database backup controlfile to trace;

Database altered.

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
ORACLE instance started.

Total System Global Area 25856028 bytes
Fixed Size 75804 bytes
Variable Size 8925184 bytes
Database Buffers 16777216 bytes
Redo Buffers 77824 bytes
SQL> @D:\BACKUPDB\udump\ORA02020.sql
ORA-01081: cannot start already-running ORACLE - shut it down first

Control file created.

ORA-00283: recovery session canceled due to errors
ORA-00264: no recovery required

System altered.

Database altered.
SQL>

验证恢复结果:完全恢复
SQL> conn lunar/lunar
Connected.
SQL> select * from test1
2 where a>10;

A
----------
11
12
13
14

SQL>

说明:
1. 把热备的控制文件和数据文件拷贝过来
2. mount数据库
3. 根据提示,重建口令文件
4. 尝试恢复数据库(现在恢复是不可以的)
如,这三个,都不能恢复数据库:
recover database;
recover database using BACKUP CONTROLFILE;
recover database until cancel using backup controlfile;
5. 试图打开数据库(现在打开是不可以的)
如,这两个,都不能打开数据库
alter database open;
alter database open resetlogs;
6. 重新mount数据库
7. 备份控制文件
8. 找到那个控制文件,并且编辑它
9. 重建控制文件,并自动完全恢复数据库

*shutdown abort的情况,恢复全部控制文件和数据文件(不包括redo)
准备工作
(这样,insert into test1 values(13);就是没有提交的数据了,如果完全恢复,应该一直可以看到insert into test1 values(12);)

SQL> conn lunar/lunar
Connected.
SQL> select * from test1;

A
----------
1
2
3
4
5
6
7
8
9
10
11

11 rows selected.

SQL> insert into test1 values(12);

1 row created.

SQL> commit;

Commit complete.

SQL> insert into test1 values(13);

1 row created.

SQL>

单开一个session,用来shutdow abort
Microsoft Windows 2000 [Version 5.00.2195]
(C) 版权所有 1985-2000 Microsoft Corp.

E:\>sqlplus internal

SQL*Plus: Release 8.1.7.0.0 - Production on 星期一 10月 21 01:53:09 2002

(c) Copyright 2000 Oracle Corporation. All rights reserved.

连接到:
Oracle8i Enterprise Edition Release 8.1.7.0.0 - Production
With the Partitioning option
JServer Release 8.1.7.0.0 - Production

SQL> shutdown abort
ORACLE 例程已经关闭。
SQL>
拷贝所有的控制文件和数据文件(不包括redo)
mount数据库,按照提示重建口令文件
SQL> startup mount
ORACLE instance started.

Total System Global Area 25856028 bytes
Fixed Size 75804 bytes
Variable Size 8925184 bytes
Database Buffers 16777216 bytes
Redo Buffers 77824 bytes
ORA-01991: invalid password file 'd:\oracle1\ora81\DATABASE\PWDbackup.ORA'

SQL> host
Microsoft Windows 2000 [Version 5.00.2195]
(C) 版权所有 1985-2000 Microsoft Corp.

E:\>cd d:\oracle1\ora81\DATABASE
E:\>d:

D:\oracle1\ora81\database>del PWDbackup.ORA

D:\oracle1\ora81\database>orapwd file=d:\oracle1\ora81\DATABASE\PWDbackup.ORA pa
ssword=oracle entries=10

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;

Database altered.

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
ORACLE instance started.

Total System Global Area 25856028 bytes
Fixed Size 75804 bytes
Variable Size 8925184 bytes
Database Buffers 16777216 bytes
Redo Buffers 77824 bytes
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;
ORA-01109: database not open

Database dismounted.
ORACLE instance shut down.
SQL> startup mount
ORACLE instance started.

Total System Global Area 25856028 bytes
Fixed Size 75804 bytes
Variable Size 8925184 bytes
Database Buffers 16777216 bytes
Redo Buffers 77824 bytes
Database mounted.

完全恢复数据库
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: {=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

ORA-00279: change 424135 generated at 10/20/2002 21:55:35 needed for thread 1
ORA-00289: suggestion : D:\BACKUPDB\ARCHIVE\BACKUPT001S00003.ARC
ORA-00280: change 424135 for thread 1 is in sequence #3
ORA-00278: log file 'D:\BACKUPDB\ARCHIVE\BACKUPT001S00002.ARC' no longer needed
for this recovery

ORA-00279: change 424139 generated at 10/20/2002 21:57:42 needed for thread 1
ORA-00289: suggestion : D:\BACKUPDB\ARCHIVE\BACKUPT001S00004.ARC
ORA-00280: change 424139 for thread 1 is in sequence #4
ORA-00278: log file 'D:\BACKUPDB\ARCHIVE\BACKUPT001S00003.ARC' no longer needed
for this recovery

ORA-00279: change 424143 generated at 10/20/2002 21:57:54 needed for thread 1
ORA-00289: suggestion : D:\BACKUPDB\ARCHIVE\BACKUPT001S00005.ARC
ORA-00280: change 424143 for thread 1 is in sequence #5
ORA-00278: log file 'D:\BACKUPDB\ARCHIVE\BACKUPT001S00004.ARC' no longer needed
for this recovery

ORA-00279: change 444145 generated at 10/20/2002 22:01:23 needed for thread 1
ORA-00289: suggestion : D:\BACKUPDB\ARCHIVE\BACKUPT001S00006.ARC
ORA-00280: change 444145 for thread 1 is in sequence #6
ORA-00278: log file 'D:\BACKUPDB\ARCHIVE\BACKUPT001S00005.ARC' no longer needed
for this recovery

ORA-00279: change 464194 generated at 10/20/2002 22:24:10 needed for thread 1
ORA-00289: suggestion : D:\BACKUPDB\ARCHIVE\BACKUPT001S00007.ARC
ORA-00280: change 464194 for thread 1 is in sequence #7
ORA-00278: log file 'D:\BACKUPDB\ARCHIVE\BACKUPT001S00006.ARC' no longer needed
for this recovery

ORA-00279: change 484347 generated at 10/21/2002 00:16:14 needed for thread 1
ORA-00289: suggestion : D:\BACKUPDB\ARCHIVE\BACKUPT001S00008.ARC
ORA-00280: change 484347 for thread 1 is in sequence #8
ORA-00278: log file 'D:\BACKUPDB\ARCHIVE\BACKUPT001S00007.ARC' no longer needed
for this recovery

ORA-00279: change 484401 generated at 10/21/2002 00:30:27 needed for thread 1
ORA-00289: suggestion : D:\BACKUPDB\ARCHIVE\BACKUPT001S00009.ARC
ORA-00280: change 484401 for thread 1 is in sequence #9
ORA-00278: log file 'D:\BACKUPDB\ARCHIVE\BACKUPT001S00008.ARC' no longer needed
for this recovery

ORA-00279: change 484453 generated at 10/21/2002 00:33:51 needed for thread 1
ORA-00289: suggestion : D:\BACKUPDB\ARCHIVE\BACKUPT001S00010.ARC
ORA-00280: change 484453 for thread 1 is in sequence #10
ORA-00278: log file 'D:\BACKUPDB\ARCHIVE\BACKUPT001S00009.ARC' no longer needed
for this recovery

ORA-00279: change 484508 generated at 10/21/2002 00:38:40 needed for thread 1
ORA-00289: suggestion : D:\BACKUPDB\ARCHIVE\BACKUPT001S00011.ARC
ORA-00280: change 484508 for thread 1 is in sequence #11
ORA-00278: log file 'D:\BACKUPDB\ARCHIVE\BACKUPT001S00010.ARC' no longer needed
for this recovery

Log applied.
Media recovery complete.
SQL>

打开数据库
SQL> alter database open;

Database altered.
SQL> conn lunar/lunar
Connected.
SQL> select * from test1;

A
----------
1
2
3
4
5
6
7
8
9
10
11

A
----------
12

12 rows selected.

SQL>

说明:
1. 拷贝所有的控制文件和数据文件(不包括redo)
2. mount数据库,按照提示重建口令文件
3. 这时,试图完全恢复数据库是不成功的
4. 用to trace备份控制文件
5. 找到并且编辑控制文件
6. 重建控制文件
7. shutdown immediate,然后重新恢复数据库
8. 完全恢复数据库
9. 打开数据库

*丢失非系统非当前活动回滚段表空间中的一个数据文件
首先是做一次热备(因为上次已经做了不完全恢复resetlogs)
Microsoft Windows 2000 [Version 5.00.2195]
(C) 版权所有 1985-2000 Microsoft Corp.

E:\>sqlplus internal

SQL*Plus: Release 8.1.7.0.0 - Production on 星期一 10月 21 08:05:20 2002

(c) Copyright 2000 Oracle Corporation. All rights reserved.

连接到:
Oracle8i Enterprise Edition Release 8.1.7.0.0 - Production
With the Partitioning option
JServer Release 8.1.7.0.0 - Production

SQL> archive log list;
数据库日志模式 存档模式
自动存档 启用
存档终点 d:\BACKUPDB\archive
最早的概要信息日志序列 0
下一个存档日志序列 1
当前日志序列 1
SQL> @e:\backupdb\other\aa

TO_CHAR(SYSDATE,'''YY
---------------------
'2002-10-21 08:10:22'

SQL>
SQL> @e:\backupdb\other\backup_ts.sql
SQL> --set termout off;
SQL> set echo off head off feedback off pagesize 0;
21-10月-02

BEGINING ARCHIVE LOG NUMBER IS :
数据库日志模式 存档模式
自动存档 启用
存档终点 d:\BACKUPDB\archive
最早的概要信息日志序列 0
下一个存档日志序列 1
当前日志序列 1

Begin Backup Tablespace SYSTEM.'D:\BACKUPDB\SYSTEM01.DBF' ...
已复制 1 个文件。

Successed End Backup This File .

Begin Backup Tablespace RBS.'D:\BACKUPDB\RBS01.DBF' ...
已复制 1 个文件。

Successed End Backup This File .

Begin Backup Tablespace USERS.'D:\BACKUPDB\USERS01.DBF' ...
已复制 1 个文件。

Successed End Backup This File .

Begin Backup Tablespace TEMP.'D:\BACKUPDB\TEMP01.DBF' ...
已复制 1 个文件。

Successed End Backup This File .

Begin Backup Tablespace TOOLS.'D:\BACKUPDB\TOOLS01.DBF' ...
已复制 1 个文件。

Successed End Backup This File .

Begin Backup Tablespace INDX.'D:\BACKUPDB\INDX01.DBF' ...
已复制 1 个文件。

Successed End Backup This File .

Begin Backup CONTROLFILE 'D:\BACKUPDB\CONTROL01.CTL' ...
Successed End Backup The CONTROLFILE .

Begin Backup CONTROLFILE To Trace ...
Successed End Backup The CONTROLFILE .

Before Switch Log, The Current Log is:
数据库日志模式 存档模式
自动存档 启用
存档终点 d:\BACKUPDB\archive
最早的概要信息日志序列 0
下一个存档日志序列 1
当前日志序列 1

Begin Backup Switch Current Log ...
Successed End Switch Log .

After Switch Log, The Ending Archive Log Number Is :
数据库日志模式 存档模式
自动存档 启用
存档终点 d:\BACKUPDB\archive
最早的概要信息日志序列 1
下一个存档日志序列 2
当前日志序列 2

21-10月-02

SQL> --set termout on;
SQL>
SQL> select to_char(sysdate,'''yyyy-mm-dd hh:mm:ss''') from dual;
'2002-10-21 08:10:54'

已选择 1 行。

SQL>

数据准备工作1
从下面的情况看,因为改变了数据库的结构,所以,首先需要一个热备或者冷备才能进行恢复。如果已经备份,可以找回数据insert into test2 values(2);,因为2是几经commit;的,3是没有commit的,所以能找会到2。3则会丢失。

SQL> alter tablespace system add datafile 'D:\BACKUPDB\SYSTEM02.DBF' size 10M;

表空间已更改。

SQL> alter tablespace users add datafile 'D:\BACKUPDB\USERS02.DBF' size 10M;

表空间已更改。

SQL>
SQL> create tablespace test datafile 'D:\BACKUPDB\test01.dbf' size 10M;

表空间已创建。

SQL>
SQL> archive log list;
数据库日志模式 存档模式
自动存档 启用
存档终点 d:\BACKUPDB\archive
最早的概要信息日志序列 1
下一个存档日志序列 2
当前日志序列 2
SQL> alter user lunar quota 10m on test;

用户已更改。

SQL>
SQL> create table test2(a number) tablespace test;

表已创建。

SQL> insert into test2 values(1);

已创建 1 行。

SQL> commit;

提交完成。
SQL> alter system switch logfile;

系统已更改。

SQL>
SQL> conn lunar/lunar
Connected.
SQL> select * from tab;

TNAME TABTYPE CLUSTERID
------------------------------ ------- ----------
TEST1 TABLE
TEST2 TABLE
TESTBACKUP3 TABLE

SQL> insert into test2 values(2);

1 row created.

SQL> commit;

Commit complete.

SQL> insert into test2 values(3);

1 row created.

以上改动后需要作一次热备或者冷备,否则数据文件丢失后不能恢复(增加表空间,数据文件都要备份数据库)
SQL> conn internal
Connected.
SQL> @e:\backupdb\other\aa
SQL> select to_char(sysdate,'''yyyy-mm-dd hh:mm:ss''') from dual;
'2002-10-21 08:10:05'

1 row selected.

SQL> set termout off
SQL>
SQL> @e:\backupdb\other\backup_ts.sql
SQL> --set termout off;
SQL> set echo off head off feedback off pagesize 0;
21-OCT-02

BEGINING ARCHIVE LOG NUMBER IS :
Database log mode Archive Mode
Automatic archival Enabled
Archive destination d:\BACKUPDB\archive
Oldest online log sequence 3
Next log sequence to archive 5
Current log sequence 5

Begin Backup Tablespace SYSTEM.'D:\BACKUPDB\SYSTEM01.DBF' ...
已复制 1 个文件。

Successed End Backup This File .

Begin Backup Tablespace RBS.'D:\BACKUPDB\RBS01.DBF' ...
已复制 1 个文件。

Successed End Backup This File .

Begin Backup Tablespace USERS.'D:\BACKUPDB\USERS01.DBF' ...
已复制 1 个文件。

Successed End Backup This File .

Begin Backup Tablespace TEMP.'D:\BACKUPDB\TEMP01.DBF' ...
已复制 1 个文件。

Successed End Backup This File .

Begin Backup Tablespace TOOLS.'D:\BACKUPDB\TOOLS01.DBF' ...
已复制 1 个文件。

Successed End Backup This File .

Begin Backup Tablespace INDX.'D:\BACKUPDB\INDX01.DBF' ...
已复制 1 个文件。

Successed End Backup This File .

Begin Backup Tablespace SYSTEM.'D:\BACKUPDB\SYSTEM02.DBF' ...
已复制 1 个文件。

Successed End Backup This File .

Begin Backup Tablespace USERS.'D:\BACKUPDB\USERS02.DBF' ...
已复制 1 个文件。

Successed End Backup This File .

Begin Backup Tablespace TEST.'D:\BACKUPDB\TEST01.DBF' ...
已复制 1 个文件。

Successed End Backup This File .

Begin Backup CONTROLFILE 'D:\BACKUPDB\CONTROL01.CTL' ...
Successed End Backup The CONTROLFILE .

Begin Backup CONTROLFILE To Trace ...
Successed End Backup The CONTROLFILE .

Before Switch Log, The Current Log is:
Database log mode Archive Mode
Automatic archival Enabled
Archive destination d:\BACKUPDB\archive
Oldest online log sequence 3
Next log sequence to archive 5
Current log sequence 5

Begin Backup Switch Current Log ...
Successed End Switch Log .

After Switch Log, The Ending Archive Log Number Is :
Database log mode Archive Mode
Automatic archival Enabled
Archive destination d:\BACKUPDB\archive
Oldest online log sequence 4
Next log sequence to archive 6
Current log sequence 6

21-OCT-02

SQL> --set termout on;
SQL>
SQL> select to_char(sysdate,'''yyyy-mm-dd hh:mm:ss''') from dual;
'2002-10-21 08:10:31'

1 row selected.

SQL>

数据准备工作2
可以找回数据insert into test2 values(4);,因为4是几经commit;的,5是没有commit的,所以能找会到2。3则会丢失。
SQL> conn lunar/lunar
Connected.
SQL> insert into test2 values(4);

1 row created.

SQL> commit;

Commit complete.

SQL> insert into test2 values(5);

1 row created.

SQL>

Shutdow abort,然后删除test01.dbf,模拟数据文件丢失
SQL> conn internal
Connected.
SQL> shutdown abort
ORACLE instance shut down.
SQL>

删除test01.dbf,把备份的数据文件test01.dbf拷贝过来
Mount数据库
SQL> startup mount;
ORACLE instance started.
Total System Global Area 25856028 bytes
Fixed Size 75804 bytes
Variable Size 8925184 bytes
Database Buffers 16777216 bytes
Redo Buffers 77824 bytes
Database mounted.
SQL> alter database open;
alter database open
*
ERROR at line 1:
ORA-01113: file 9 needs media recovery
ORA-01110: data file 9: 'D:\BACKUPDB\TEST01.DBF'

SQL>
在打开数据库的时候,提示'D:\BACKUPDB\TEST01.DBF'需要介质恢复,因为他和其他的文件时间点不一致。

恢复数据文件(把最近的热备的文件拷贝过来)
SQL> recover datafile 'D:\BACKUPDB\TEST01.DBF';
Media recovery complete.

打开数据库
SQL> alter database open;

Database altered.

SQL>
验证恢复结果:完全恢复
SQL> conn lunar/lunar
Connected.
SQL> select * from test2;
1
2
3
4
5

5 rows selected.

SQL>

说明:
Ÿ 首先是做一次热备(因为上次已经做了不完全恢复resetlogs)
Ÿ 以上改动后需要作一次热备或者冷备,否则数据文件丢失后不能恢复(增加表空间,数据文件都要备份数据库)

1. Shutdow abort,然后删除test01.dbf,模拟数据文件丢失
2. 删除test01.dbf,把备份的数据文件test01.dbf拷贝过来
3. Mount数据库
4. 恢复数据文件(把最近的热备的文件拷贝过来)
5. 打开数据库
*shutdown abort后,丢失全部文件(除了archive log和init.ora)
即,丢失了全部:数据文件、控制文件和redo log file

准备工作
下面的信息说明了如果是完全恢复,可以看到insert into test1 values(16);,否则可以看到15,就是被归档的那个。17因为没有提交,是不会被恢复的。

SQL> conn internal
Connected.
SQL> archive log list;
Database log mode Archive Mode
Automatic archival Enabled
Archive destination d:\BACKUPDB\archive
Oldest online log sequence 14
Next log sequence to archive 16
Current log sequence 16
SQL> conn lunar/lunar
Connected.
SQL> select * from test1 where a>10;

A
----------
11
12
13
14

SQL>
SQL> insert into test1 values(15);

1 row created.

SQL> commit;

Commit complete.
SQL> alter system switch logfile;

System altered.

SQL>
SQL> insert into test1 values(16);

1 row created.

SQL> commit;

Commit complete.

SQL> insert into test1 values(17);

1 row created.

SQL>
新开一个session,进行shutdown abort
Microsoft Windows 2000 [Version 5.00.2195]
(C) 版权所有 1985-2000 Microsoft Corp.

E:\>sqlplus internal

SQL*Plus: Release 8.1.7.0.0 - Production on 星期一 10月 21 04:54:57 2002

(c) Copyright 2000 Oracle Corporation. All rights reserved.

连接到:
Oracle8i Enterprise Edition Release 8.1.7.0.0 - Production
With the Partitioning option
JServer Release 8.1.7.0.0 - Production

SQL> shutdown abort
ORACLE 例程已经关闭。
SQL>

把热备的数据文件和控制文件拷贝过来
mount数据库
E:\>sqlplus internal

SQL*Plus: Release 8.1.7.0.0 - Production on Mon Oct 21 05:02:29 2002

(c) Copyright 2000 Oracle Corporation. All rights reserved.

Connected to an idle instance.
SQL> startup mount
ORACLE instance started.

Total System Global Area 25856028 bytes
Fixed Size 75804 bytes
Variable Size 8925184 bytes
Database Buffers 16777216 bytes
Redo Buffers 77824 bytes
ORA-01991: invalid password file 'd:\oracle1\ora81\DATABASE\PWDbackup.ORA'

SQL>

根据提示重建口令文件
SQL> host
Microsoft Windows 2000 [Version 5.00.2195]
(C) 版权所有 1985-2000 Microsoft Corp.

E:\>del d:\oracle1\ora81\DATABASE\PWDbackup.ORA

E:\>orapwd file=d:\oracle1\ora81\DATABASE\PWDbackup.ORA password=oracle entries=
10

E:\>exit

SQL>

用to trace备份控制文件
SQL> alter database backup controlfile to trace;

Database altered.

SQL>

找到这个跟踪文件并编辑它

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> shutdown immediate
ORA-01109: database not open

Database dismounted.
ORACLE instance shut down.
SQL> startup nomount
ORACLE instance started.

Total System Global Area 25856028 bytes
Fixed Size 75804 bytes
Variable Size 8925184 bytes
Database Buffers 16777216 bytes
Redo Buffers 77824 bytes
SQL>
SQL> @D:\BACKUPDB\udump\ORA02176.sql
ORA-01081: cannot start already-running ORACLE - shut it down first
CREATE CONTROLFILE REUSE DATABASE "BACKUP" NORESETLOGS ARCHIVELOG
*
ERROR at line 1:
ORA-01503: CREATE CONTROLFILE failed
ORA-01565: error in identifying file 'D:\BACKUPDB\REDO01.LOG'
ORA-27041: unable to open file
OSD-04002: 无法打开文件
O/S-Error: (OS 2) 系统找不到指定的文件。

ORA-01507: database not mounted

ALTER SYSTEM ARCHIVE LOG ALL
*
ERROR at line 1:
ORA-01507: database not mounted

ALTER DATABASE OPEN
*
ERROR at line 1:
ORA-01507: database not mounted

可见,因为缺少所有的redo,重建控制文件是行不通的。

Mount数据库
SQL> alter database mount;

Database altered.

SQL>

用using backup controlfile进行恢复
SQL> alter database mount;

Database altered.

SQL> recover database until cancel using backup controlfile;
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: {=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

ORA-00279: change 424135 generated at 10/20/2002 21:55:35 needed for thread 1
ORA-00289: suggestion : D:\BACKUPDB\ARCHIVE\BACKUPT001S00003.ARC
ORA-00280: change 424135 for thread 1 is in sequence , #3
ORA-00278: log file 'D:\BACKUPDB\ARCHIVE\BACKUPT001S00002.ARC' no longer needed
for this recovery

ORA-00279: change 424139 generated at 10/20/2002 21:57:42 needed for thread 1
ORA-00289: suggestion : D:\BACKUPDB\ARCHIVE\BACKUPT001S00004.ARC
ORA-00280: change 424139 for thread 1 is in sequence #4
ORA-00278: log file 'D:\BACKUPDB\ARCHIVE\BACKUPT001S00003.ARC' no longer needed
for this recovery

ORA-00279: change 424143 generated at 10/20/2002 21:57:54 needed for thread 1
ORA-00289: suggestion : D:\BACKUPDB\ARCHIVE\BACKUPT001S00005.ARC
ORA-00280: change 424143 for thread 1 is in sequence #5
ORA-00278: log file 'D:\BACKUPDB\ARCHIVE\BACKUPT001S00004.ARC' no longer needed
for this recovery

ORA-00279: change 444145 generated at 10/20/2002 22:01:23 needed for thread 1
ORA-00289: suggestion : D:\BACKUPDB\ARCHIVE\BACKUPT001S00006.ARC
ORA-00280: change 444145 for thread 1 is in sequence #6
ORA-00278: log file 'D:\BACKUPDB\ARCHIVE\BACKUPT001S00005.ARC' no longer needed
for this recovery

ORA-00279: change 464194 generated at 10/20/2002 22:24:10 needed for thread 1
ORA-00289: suggestion : D:\BACKUPDB\ARCHIVE\BACKUPT001S00007.ARC
ORA-00280: change 464194 for thread 1 is in sequence #7
ORA-00278: log file 'D:\BACKUPDB\ARCHIVE\BACKUPT001S00006.ARC' no longer needed
for this recovery

ORA-00279: change 484347 generated at 10/21/2002 00:16:14 needed for thread 1
ORA-00289: suggestion : D:\BACKUPDB\ARCHIVE\BACKUPT001S00008.ARC
ORA-00280: change 484347 for thread 1 is in sequence #8
ORA-00278: log file 'D:\BACKUPDB\ARCHIVE\BACKUPT001S00007.ARC' no longer needed
for this recovery

ORA-00279: change 484401 generated at 10/21/2002 00:30:27 needed for thread 1
ORA-00289: suggestion : D:\BACKUPDB\ARCHIVE\BACKUPT001S00009.ARC
ORA-00280: change 484401 for thread 1 is in sequence #9
ORA-00278: log file 'D:\BACKUPDB\ARCHIVE\BACKUPT001S00008.ARC' no longer needed
for this recovery

ORA-00279: change 484453 generated at 10/21/2002 00:33:51 needed for thread 1
ORA-00289: suggestion : D:\BACKUPDB\ARCHIVE\BACKUPT001S00010.ARC
ORA-00280: change 484453 for thread 1 is in sequence #10
ORA-00278: log file 'D:\BACKUPDB\ARCHIVE\BACKUPT001S00009.ARC' no longer needed
for this recovery

ORA-00279: change 484508 generated at 10/21/2002 00:38:40 needed for thread 1
ORA-00289: suggestion : D:\BACKUPDB\ARCHIVE\BACKUPT001S00011.ARC
ORA-00280: change 484508 for thread 1 is in sequence #11
ORA-00278: log file 'D:\BACKUPDB\ARCHIVE\BACKUPT001S00010.ARC' no longer needed
for this recovery

ORA-00279: change 504514 generated at 10/21/2002 00:51:00 needed for thread 1
ORA-00289: suggestion : D:\BACKUPDB\ARCHIVE\BACKUPT001S00012.ARC
ORA-00280: change 504514 for thread 1 is in sequence #12
ORA-00278: log file 'D:\BACKUPDB\ARCHIVE\BACKUPT001S00011.ARC' no longer needed
for this recovery

ORA-00279: change 504569 generated at 10/21/2002 00:55:34 needed for thread 1
ORA-00289: suggestion : D:\BACKUPDB\ARCHIVE\BACKUPT001S00013.ARC
ORA-00280: change 504569 for thread 1 is in sequence #13
ORA-00278: log file 'D:\BACKUPDB\ARCHIVE\BACKUPT001S00012.ARC' no longer needed
for this recovery

ORA-00279: change 504585 generated at 10/21/2002 01:14:32 needed for thread 1
ORA-00289: suggestion : D:\BACKUPDB\ARCHIVE\BACKUPT001S00014.ARC
ORA-00280: change 504585 for thread 1 is in sequence #14
ORA-00278: log file 'D:\BACKUPDB\ARCHIVE\BACKUPT001S00013.ARC' no longer needed
for this recovery

ORA-00279: change 524636 generated at 10/21/2002 02:13:50 needed for thread 1
ORA-00289: suggestion : D:\BACKUPDB\ARCHIVE\BACKUPT001S00015.ARC
ORA-00280: change 524636 for thread 1 is in sequence #15
ORA-00278: log file 'D:\BACKUPDB\ARCHIVE\BACKUPT001S00014.ARC' no longer needed
for this recovery

ORA-00279: change 524805 generated at 10/21/2002 03:41:53 needed for thread 1
ORA-00289: suggestion : D:\BACKUPDB\ARCHIVE\BACKUPT001S00016.ARC
ORA-00280: change 524805 for thread 1 is in sequence #16
ORA-00278: log file 'D:\BACKUPDB\ARCHIVE\BACKUPT001S00015.ARC' no longer needed
for this recovery

ORA-00279: change 524854 generated at 10/21/2002 04:50:37 needed for thread 1
ORA-00289: suggestion : D:\BACKUPDB\ARCHIVE\BACKUPT001S00017.ARC
ORA-00280: change 524854 for thread 1 is in sequence #17
ORA-00278: log file 'D:\BACKUPDB\ARCHIVE\BACKUPT001S00016.ARC' no longer needed
for this recovery

ORA-00308: cannot open archived log 'D:\BACKUPDB\ARCHIVE\BACKUPT001S00017.ARC'
ORA-27041: unable to open file
OSD-04002: 无法打开文件
O/S-Error: (OS 2) 系统找不到指定的文件。

用Open Resetlog 打开数据库
SQL> alter database open;
alter database open
*
ERROR at line 1:
ORA-01589: must use RESETLOGS or NORESETLOGS option for database open

SQL> alter database open RESETLOGS;

Database altered.

SQL>

验证恢复结果:不完全恢复,redo里面的数据丢失了
SQL> conn lunar/lunar
Connected.
SQL> select * from test1 where a>10;

A
----------
11
12
13
14
15

SQL>

SQL> conn internal
Connected.
SQL> archive log list;
Database log mode Archive Mode
Automatic archival Enabled
Archive destination d:\BACKUPDB\archive
Oldest online log sequence 0
Next log sequence to archive 1
Current log sequence 1
SQL>

说明:
1. 把热备的数据文件和控制文件拷贝过来
2. mount数据库
3. 根据提示重建口令文件
4. 用using backup controlfile进行恢复
5. 用Open Resetlog 打开数据库
上面的例子是以前做的,呵呵,虽然恢复了,可是现在觉得,不地道,呵呵,今天,在AIX 5.1 上重新做了一遍,目前觉得还满意,呵呵:

丢失全部数据文件,控制文件,redo log file的恢复过程
注意本文是用最近的冷备恢复的

AIX Version 5
(C) Copyrights by IBM and by others 1982, 2000.
login: oracle
oracle's Password:
*******************************************************************************
* *
* *
* Welcome to AIX Version 5.1! *
* *
* *
* Please see the README file in /usr/lpp/bos for information pertinent to *
* this release of the AIX Operating System. *
* *
* *
*******************************************************************************
3 unsuccessful login attempts since last login.
Last unsuccessful login: Wed Nov 13 09:42:47 2002 on 192_168_2_89_0 from 192.168.2.89:0
Last login: Tue Nov 19 11:22:39 2002 on /dev/pts/0 from 192.168.2.89

[YOU HAVE NEW MAIL]
$ ls
createdb.htm oraInventory smit.log smit.script test
$ sqlplus /nolog

SQL*Plus: Release 9.2.0.1.0 - Production on Wed Nov 20 17:30:55 2002

Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.

SQL> conn / as sysdba
Connected.
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> exit
Disconnected from Oracle9i Enterprise Edition Release 9.2.0.1.0 - 64bit Production
With the Partitioning and Oracle Data Mining options
JServer Release 9.2.0.1.0 - Production
$ cd $ORACLE_HOME/oradata/ORA92
$ ls
control01.ctl drsys01.dbf odm01.dbf redo02.log temp01.dbf undotbs01.dbf
control02.ctl example01.dbf perfstat01.dbf redo03.log test01.dbf users01.dbf
control03.ctl indx01.dbf redo01.log system01.dbf tools01.dbf xdb01.dbf
$ cp * /oracle92/backup
$ ls /oracle92/backup
control01.ctl drsys01.dbf odm01.dbf redo02.log temp01.dbf undotbs01.dbf
control02.ctl example01.dbf perfstat01.dbf redo03.log test01.dbf users01.dbf
control03.ctl indx01.dbf redo01.log system01.dbf tools01.dbf xdb01.dbf
$ exit

SQL> startup
ORACLE instance started.

Total System Global Area 303530016 bytes
Fixed Size 741408 bytes
Variable Size 268435456 bytes
Database Buffers 33554432 bytes
Redo Buffers 798720 bytes
Database mounted.
Database opened.
SQL>

SQL> archive log list
Database log mode Archive Mode
Automatic archival Enabled
Archive destination /oracle92/product/9.2/dbs/arch
Oldest online log sequence 9
Next log sequence to archive 11
Current log sequence 11

SQL> alter system archive log current;

System altered.

SQL> grant connect,resource to aa identified by aa;

Grant succeeded.

SQL> alter user aa
2 default tablespace users
3 temporary tablespace temp;

User altered.

SQL> conn aa/aa
Connected.
SQL> create table test(a number);

Table created.

SQL> insert into test values(1);

1 row created.

SQL> c/1/2
1* insert into test values(2)
SQL> /

1 row created.

SQL> commit;

Commit complete.

SQL> insert into test values(3);

1 row created.

SQL>

现在,单开一个session,switch log:
AIX Version 5
(C) Copyrights by IBM and by others 1982, 2000.
login: oracle
oracle's Password:
*******************************************************************************
* *
* *
* Welcome to AIX Version 5.1! *
* *
* *
* Please see the README file in /usr/lpp/bos for information pertinent to *
* this release of the AIX Operating System. *
* *
* *
*******************************************************************************
1 unsuccessful login attempt since last login.
Last unsuccessful login: Wed Nov 20 18:46:39 2002 on /dev/pts/1 from 192.168.2.89
Last login: Wed Nov 20 17:44:15 2002 on /dev/pts/0 from 192.168.2.89

[YOU HAVE NEW MAIL]
$ sqlplus /nolog

SQL*Plus: Release 9.2.0.1.0 - Production on Wed Nov 20 18:46:53 2002

Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.

SQL> conn / as sysdba
Connected.
SQL> alter system archive log current;

System altered.

SQL> archive log list;
Database log mode Archive Mode
Automatic archival Enabled
Archive destination /oracle92/product/9.2/dbs/arch
Oldest online log sequence 11
Next log sequence to archive 13
Current log sequence 13
SQL>

可见,这个时候如果数据crash了,那么我们首先做所有文件都丢失的情况。
为了模拟crash,我们先shutdown abort,然后删除所有数据文件。
这是我们应该可以用刚才的备份恢复到test表中的1和2两条数据,3因为没有commit,
又丢失了redo,因此不能恢复了,呵呵:

SQL> shutdown abort
ORACLE instance shut down.
SQL> exit
Disconnected from Oracle9i Enterprise Edition Release 9.2.0.1.0 - 64bit Production
With the Partitioning and Oracle Data Mining options
JServer Release 9.2.0.1.0 - Production

$ cd $ORACLE_HOME/oradata/ORA92
$ ls
control01.ctl drsys01.dbf odm01.dbf redo02.log temp01.dbf undotbs01.dbf
control02.ctl example01.dbf perfstat01.dbf redo03.log test01.dbf users01.dbf
control03.ctl indx01.dbf redo01.log system01.dbf tools01.dbf xdb01.dbf
$ rm *
$ ls
$

所有的文件都没了(datafiles, controlfiles, redo log files),只有备份集和archive了,呵呵。

现在,把备份cp回来吧,呵呵:
$ cp /oracle92/backup/* $ORACLE_HOME/oradata/ORA92
$ ls
control01.ctl drsys01.dbf odm01.dbf redo02.log temp01.dbf undotbs01.dbf
control02.ctl example01.dbf perfstat01.dbf redo03.log test01.dbf users01.dbf
control03.ctl indx01.dbf redo01.log system01.dbf tools01.dbf xdb01.dbf
$ pwd
/oracle92/product/9.2/oradata/ORA92
$
$ startup mount
ksh: startup: not found
$ sqlplus /nolog

SQL*Plus: Release 9.2.0.1.0 - Production on Wed Nov 20 19:14:19 2002

Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.

SQL> conn / as sysdba
Connected to an idle instance.
SQL> startup mount
ORACLE instance started.

Total System Global Area 303530016 bytes
Fixed Size 741408 bytes
Variable Size 268435456 bytes
Database Buffers 33554432 bytes
Redo Buffers 798720 bytes
Database mounted.
SQL> recover database using backup controlfile;
ORA-00279: change 801329 generated at 11/20/2002 17:31:59 needed for thread 1
ORA-00289: suggestion : /oracle92/product/9.2/dbs/arch1_11.dbf
ORA-00280: change 801329 for thread 1 is in sequence #11

Specify log: {=suggested | filename | AUTO | CANCEL}
auto
ORA-00279: change 801757 generated at 11/20/2002 18:41:32 needed for thread 1
ORA-00289: suggestion : /oracle92/product/9.2/dbs/arch1_12.dbf
ORA-00280: change 801757 for thread 1 is in sequence #12
ORA-00278: log file '/oracle92/product/9.2/dbs/arch1_11.dbf' no longer needed
for this recovery

ORA-00279: change 802142 generated at 11/20/2002 18:47:26 needed for thread 1
ORA-00289: suggestion : /oracle92/product/9.2/dbs/arch1_13.dbf
ORA-00280: change 802142 for thread 1 is in sequence #13
ORA-00278: log file '/oracle92/product/9.2/dbs/arch1_12.dbf' no longer needed
for this recovery

ORA-00308: cannot open archived log '/oracle92/product/9.2/dbs/arch1_13.dbf'
ORA-27037: unable to obtain file status
IBM AIX RISC System/6000 Error: 2: No such file or directory
Additional information: 3

SQL>
看看,刚才crash之前的“Current log sequence 13”,现在已经恢复到arch1_13.dbf了,表示archive都用上了,
好了,我们可以open,resetlogs,
SQL> alter database open resetlogs;
alter database open resetlogs
*
ERROR at line 1:
ORA-01113: file 1 needs media recovery
ORA-01110: data file 1: '/oracle92/product/9.2/oradata/ORA92/system01.dbf'

SQL>

呵呵,重新mount吧:
SQL> shutdown immediate
ORA-01109: database not open

Database dismounted.
ORACLE instance shut down.
SQL> startup mount
ORACLE instance started.

Total System Global Area 303530016 bytes
Fixed Size 741408 bytes
Variable Size 268435456 bytes
Database Buffers 33554432 bytes
Redo Buffers 798720 bytes
Database mounted.
SQL> recover database;
ORA-00283: recovery session canceled due to errors
ORA-01610: recovery using the BACKUP CONTROLFILE option must be done

SQL> recover database until cancel using backup controlfile;
ORA-00279: change 802142 generated at 11/20/2002 18:47:26 needed for thread 1
ORA-00289: suggestion : /oracle92/product/9.2/dbs/arch1_13.dbf
ORA-00280: change 802142 for thread 1 is in sequence #13

Specify log: {=suggested | filename | AUTO | CANCEL}
cancel
Media recovery cancelled.
SQL> alter database open;
alter database open
*
ERROR at line 1:
ORA-01589: must use RESETLOGS or NORESETLOGS option for database open

SQL> alter database open resetlogs;

Database altered.

SQL>

ok,现在校验恢复的数据是否正确,呵呵
SQL> conn aa/aa
Connected.
SQL> select * from test;

A
----------
1
2

SQL>

呵呵,现在没问题了吧,不要急,shutdown immediate,做一个全备份,呵呵
注意:
SQL> conn / as sysdba
Connected.
SQL> archive log list
Database log mode Archive Mode
Automatic archival Enabled
Archive destination /oracle92/product/9.2/dbs/arch
Oldest online log sequence 0
Next log sequence to archive 1
Current log sequence 1
SQL>

所以,以前的archive 也没用了,呵呵,除非和以前的(没有resetlog的)备份集一起使用了

备份不用说了吧,呵呵,随便你冷备还是热备,推荐冷备。
*仅仅丢失一个普通用户数据文件的恢复B(脱机恢复)
准备工作
按照下面的输入,如果全部恢复,应该可以看到insert into test1 values(13),因为insert into test1 values(14)没提交。
SQL> conn lunar/lunar
Connected.
SQL> insert into test1 values(13);

1 row created.

SQL> commit;

Commit complete.

SQL> insert into test1 values(14);

1 row created.

Shutdown immediate,然后模拟数据文件丢失
单开一个session,执行shutdown immediate(保证insert into test1 values(14);没有被隐士提交)

Microsoft Windows 2000 [Version 5.00.2195]
(C) 版权所有 1985-2000 Microsoft Corp.

E:\>sqlplus internal

SQL*Plus: Release 8.1.7.0.0 - Production on 星期一 10月 21 02:36:07 2002

(c) Copyright 2000 Oracle Corporation. All rights reserved.

连接到:
Oracle8i Enterprise Edition Release 8.1.7.0.0 - Production
With the Partitioning option
JServer Release 8.1.7.0.0 - Production

SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL>
模拟数据文件丢失,然后用热备覆盖这个文件
mount数据库
E:\>sqlplus internal

SQL*Plus: Release 8.1.7.0.0 - Production on Mon Oct 21 02:42:47 2002

(c) Copyright 2000 Oracle Corporation. All rights reserved.

Connected to an idle instance.

SQL> shutdown immediate
ORA-01034: ORACLE not available
ORA-27101: shared memory realm does not exist
SQL> startup mount
ORACLE instance started.

Total System Global Area 25856028 bytes
Fixed Size 75804 bytes
Variable Size 8925184 bytes
Database Buffers 16777216 bytes
Redo Buffers 77824 bytes
Database mounted.
SQL>
使损坏的数据文件脱机
SQL> alter database datafile 'D:\BACKUPDB\USERS01.DBF' offline;

Database altered.

恢复数据文件
SQL> recover datafile 'D:\BACKUPDB\USERS01.DBF';
ORA-00279: change 424116 generated at 10/20/2002 20:42:04 needed for thread 1
ORA-00289: suggestion : D:\BACKUPDB\ARCHIVE\BACKUPT001S00001.ARC
ORA-00280: change 424116 for thread 1 is in sequence #1

Specify log: {=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

ORA-00279: change 424135 generated at 10/20/2002 21:55:35 needed for thread 1
ORA-00289: suggestion : D:\BACKUPDB\ARCHIVE\BACKUPT001S00003.ARC
ORA-00280: change 424135 for thread 1 is in sequence #3
ORA-00278: log file 'D:\BACKUPDB\ARCHIVE\BACKUPT001S00002.ARC' no longer needed
for this recovery

ORA-00279: change 424139 generated at 10/20/2002 21:57:42 needed for thread 1
ORA-00289: suggestion : D:\BACKUPDB\ARCHIVE\BACKUPT001S00004.ARC
ORA-00280: change 424139 for thread 1 is in sequence #4
ORA-00278: log file 'D:\BACKUPDB\ARCHIVE\BACKUPT001S00003.ARC' no longer needed
for this recovery

ORA-00279: change 424143 generated at 10/20/2002 21:57:54 needed for thread 1
ORA-00289: suggestion : D:\BACKUPDB\ARCHIVE\BACKUPT001S00005.ARC
ORA-00280: change 424143 for thread 1 is in sequence #5
ORA-00278: log file 'D:\BACKUPDB\ARCHIVE\BACKUPT001S00004.ARC' no longer needed
for this recovery

ORA-00279: change 444145 generated at 10/20/2002 22:01:23 needed for thread 1
ORA-00289: suggestion : D:\BACKUPDB\ARCHIVE\BACKUPT001S00006.ARC
ORA-00280: change 444145 for thread 1 is in sequence #6
ORA-00278: log file 'D:\BACKUPDB\ARCHIVE\BACKUPT001S00005.ARC' no longer needed
for this recovery

ORA-00279: change 464194 generated at 10/20/2002 22:24:10 needed for thread 1
ORA-00289: suggestion : D:\BACKUPDB\ARCHIVE\BACKUPT001S00007.ARC
ORA-00280: change 464194 for thread 1 is in sequence #7
ORA-00278: log file 'D:\BACKUPDB\ARCHIVE\BACKUPT001S00006.ARC' no longer needed
for this recovery

ORA-00279: change 484347 generated at 10/21/2002 00:16:14 needed for thread 1
ORA-00289: suggestion : D:\BACKUPDB\ARCHIVE\BACKUPT001S00008.ARC
ORA-00280: change 484347 for thread 1 is in sequence #8
ORA-00278: log file 'D:\BACKUPDB\ARCHIVE\BACKUPT001S00007.ARC' no longer needed
for this recovery

ORA-00279: change 484401 generated at 10/21/2002 00:30:27 needed for thread 1
ORA-00289: suggestion : D:\BACKUPDB\ARCHIVE\BACKUPT001S00009.ARC
ORA-00280: change 484401 for thread 1 is in sequence #9
ORA-00278: log file 'D:\BACKUPDB\ARCHIVE\BACKUPT001S00008.ARC' no longer needed
for this recovery

ORA-00279: change 484453 generated at 10/21/2002 00:33:51 needed for thread 1
ORA-00289: suggestion : D:\BACKUPDB\ARCHIVE\BACKUPT001S00010.ARC
ORA-00280: change 484453 for thread 1 is in sequence #10
ORA-00278: log file 'D:\BACKUPDB\ARCHIVE\BACKUPT001S00009.ARC' no longer needed
for this recovery

ORA-00279: change 484508 generated at 10/21/2002 00:38:40 needed for thread 1
ORA-00289: suggestion : D:\BACKUPDB\ARCHIVE\BACKUPT001S00011.ARC
ORA-00280: change 484508 for thread 1 is in sequence #11
ORA-00278: log file 'D:\BACKUPDB\ARCHIVE\BACKUPT001S00010.ARC' no longer needed
for this recovery

ORA-00279: change 504514 generated at 10/21/2002 00:51:00 needed for thread 1
ORA-00289: suggestion : D:\BACKUPDB\ARCHIVE\BACKUPT001S00012.ARC
ORA-00280: change 504514 for thread 1 is in sequence #12
ORA-00278: log file 'D:\BACKUPDB\ARCHIVE\BACKUPT001S00011.ARC' no longer needed
for this recovery

Log applied.
Media recovery complete.
SQL>

使恢复的数据文件联机
SQL> alter database datafile 'D:\BACKUPDB\USERS01.DBF' online;

Database altered.

打开数据库
SQL> alter database open;

Database altered.

SQL>

这时需要重新启动数据库,并完全恢复数据库
SQL> conn lunar/lunar
Connected.
SQL> select count(*) from test;
select count(*) from test
*
ERROR at line 1:
ORA-00942: table or view does not exist
SQL> conn internal
Connected.
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
重新启动数据库,
SQL> startup
ORACLE instance started.

Total System Global Area 25856028 bytes
Fixed Size 75804 bytes
Variable Size 8925184 bytes
Database Buffers 16777216 bytes
Redo Buffers 77824 bytes
Database mounted.
Database opened.
SQL>
用recover database再次恢复数据库
SQL> conn internal
Connected.
SQL> recover database;
ORA-00283: recovery session canceled due to errors
ORA-01124: cannot recover data file 1 - file is in use or recovery
ORA-01110: data file 1: 'D:\BACKUPDB\SYSTEM01.DBF'

重新使恢复的表空间联机
SQL> alter database datafile 'D:\BACKUPDB\USERS01.DBF' online;

Database altered.

SQL> conn lunar/lunar
Connected.
SQL> select * from test1;

A
----------
1
2
3
4
5
6
7
8
9
10
11

A
----------
12
13

13 rows selected.

SQL>
验证恢复结果:完全恢复
说明:
1. 用热备覆盖这个文件
2. mount数据库
3. 使损坏的数据文件脱机
4. 恢复数据文件
5. 使恢复的数据文件联机
6. 打开数据库
7. 这时需要重新启动数据库,并完全恢复数据库
8. 重新启动数据库,
9. 用recover database再次恢复数据库
10. 重新使恢复的表空间联机

打印本页 回顶部 返回前一页
上一篇: Loopback口的作用汇总
下一篇: 校园网实现(VLAN及策略路由的实现)(BENET)


热烈庆贺我中心蝉联2008年度十大杰出中心奖
热烈庆贺我中心蝉联2
BS1104班香山游
BS1104班香山游
BS258班模拟面试
BS258班模拟面试
BS1103班香山游
BS1103班香山游
 图片新闻


 开班报名截止时间
班 次
时间
状 态
报 名
10月13日  BS1102  脱产班 已 满
10月17日  BS1100  就业班 已 满
10月25日  BS1103  就业班 已 满
11月27日  BS1104  脱产班 已 满
12月10日  BS1105  脱产班 已 满
12月28日  BS1106  脱产班 已 满
1月 7日  BS1107  脱产班 余 6座

 免费IT讲座报名
BENET网络工程师讲座
时间:本周六、日下午 1:30
地点:北大青鸟网络校区
讲座内容:
木马程序系列
VIP课程:VIP会员在周六早上9点半到11点,持VIP会员卡到网络校区参加VIP课程
课程内容:商务办公
主讲:北大青鸟金牌讲师
咨询:010-68341988
订座:010-68345688
点击进入网上订座>>
 免费IT专家讲座报名
姓名
*
性别
年龄
学历
联系地址
联系电话 *
QQ
我是从 知道我们网站的
留言
  
 相关新闻

· S254—S261篮球对抗赛
· S255班级学员香山游
· 经典java教程(清华版)
· Java初学者都必须理解的七大问题
· 连接SQLserver数据库注意
· Java琐碎笔记
· GRUB安装,配置及使用汇总
· 校园网实现(VLAN及策略路由的实现.
· Oracle联机恢复手记
· Loopback口的作用汇总
· C#中StringBuilder类的.
· Java编码规范
· 网络工程师专业术语大集合之路由器 (.
· 提高Linux系统安全性十种招数(B.
· Linux中文件查找技术大全(BEN.
 热门文章

· 经典java教程(清华版)
· 华为交换机经典配置
· Java初学者都必须理解的七大问题
· C#中StringBuilder类的.
· JAVA软件工程师就业前景
· CONFIG.SYS文件的命令与配置
· 连接SQLserver数据库注意
· 学习感想---我在学习编程中遇到的困.
· 网络工程师专业术语大集合之路由器 (.
· Java琐碎笔记
· S165开学典礼
· Oracle联机恢复手记
· S218学员结业典礼
· 2007年网站招聘IT类职位需求量最大
· Java编码规范

   北大青鸟就业名企 更多 >>
招聘信息 | 联系我们 | 中心地图 | 在线报名 | 招生问答 | 在线留言
版权所有 © 北大青鸟 Copyright edujy.com All Rights Reserved
北大青鸟APTECH( 北京佳音旗舰 ) 授权培训中心 京ICP备06064588号
地址:北京西城区车公庄大街丙3号(彩印大厦四五层,官园批发市场正对面)
全国统一报名电话:010-68341988 010-68345688 邮编:100044