技术开发 频道

Oracle数据库的备份与恢复方案

    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

     如果是非归档模式,也可以运用以上方法,
    前提是:输入记录所占空间的大小不超过所有联机日志文件的大小
    即:用联机日志文件来恢复

0
相关文章