1.2 如何使用归档日志进行完全恢复?
系统环境:
1、操作系统:Windows 2000 Server,机器内存128M
2、数据库: Oracle 8i R2 (8.1.6) for NT 企业版
3、安装路径:C:ORACLE
模拟现象:
先将数据库设置为归档模式
SQL*Plus
--创建实验表空间
create tablespace test datafile
'c:test.ora' size 5M
AUTOEXTEND ON NEXT 1M MAXSIZE UNLIMITED
default storage (initial 128K next 1M pctincrease 0)
/
--创建实验用户
drop user test cascade;
create user test identified by test default tablespace test;
grant connect,resource to test;
conn test/test
![]()
create table a(a number);
insert into a values(1);
insert into a select * from a; --反复插入,达到10万条
commit;
![]()
拷贝test.ora为test1.ora文件
insert into a select * from a; --20万条
commit;
关闭数据库
shutdown
删除test.ora文件,把test1.ora拷贝为test.ora。
重新启动数据库
这时,可以mount上,但无法打开,因为现在使用的数据文件是旧的
只有10万条记录,与控制文件中记载的log number不一样
startup mount
需要recover database,使数据库记录重新恢复到当前的20万条
C:>svrmgrl
svrmgrl>connect internal
svrmgrl>shutdown
svrmgrl>startup mount
svrmgrl>set autorecovery on
svrmgrl>recover database;
svrmgrl>alter database open;
![]()
conn test/test
select count(*) from a; --数据又恢复到20万条
![]()
conn system/manager
--删除实验表空间
alter tablespace test offline;
drop tablespace test INCLUDING CONTENTS;
1.3 没有备份、只有归档日志,如何恢复数据文件?
系统环境:
1、操作系统:Windows 2000 Server,机器内存128M
2、数据库: Oracle 8i R2 (8.1.6) for NT 企业版
3、安装路径:C:ORACLE
模拟现象:
可通过重建数据文件来恢复,前提是归档日志文件保存完整
先将数据库设置为归档模式
C:>svrmgrl
svrmgrl>connect internal
svrmgrl>alter tablespace 表空间名 begin backup;
![]()
--表空间热备模式没结束就强行关闭数据库,造成错误
svrmgrl>shutdown abort
![]()
svrmgrl>startup mount
![]()
--将此表空间的数据文件在没打开数据库时置成end backup模式
svrmgrl>alter database datafile '表空间的数据文件名' end backup;
![]()
--或执行表空间介质恢复
svrmgrl>recover tablespace 表空间名;
![]()
svrmgrl>alter database open
如果是非归档模式,也可以运用以上方法,
前提是:输入记录所占空间的大小不超过所有联机日志文件的大小
即:用联机日志文件来恢复
