oracle 热备份与恢复是怎么实现的,不用exp和rman,用传统的方式,系统是windows xp,要求在备份,然后可以在它机上恢复,现在只有一台电脑,所以 创建一个数据库,然后创建表空间,进行备份,然后删除数据库,之后要求能完全恢复,模拟火灾导致数据完全丢失的情况,求高手解答!!!

解决方案 »

  1.   

    这里先给你一些概念,弄清楚之后,再研究具体的做法:
    一.数据库备份的分类
    1. 从物理和逻辑的角度
    物理备份:是将实际组成数据库的操作系统文件从一处复制到另一处的备份备份过程,通常是从磁盘备份到磁盘或磁带,可以使用RMAN或操作系统命令进行数据库的物理备份。
    逻辑备份:从数据库的备份策略
    全部数据库备份:一个全部数据备份包含所有的数据文件各至少一个控制文件。联机重做日志是不备份的,因为如果还原已备份的重做日志文件和替换当前的重做日志文件将会导致数据在介质恢复期间的丢失。
    部分数据库备份:2.从数据库的备份类型
    全集备份:这里全集表示在对数据文件进行备份时(全部数据库备份和部分数据库备份都可能)将数据文件的所有数据块全部备份出来。
    增量备份:3. 根据实施物理备份的数据库状态
    脱机备份
    联机备份/不一致备份/热备份:是数据库中可读写的数据库文件和控制文件的系统改变号SCN在不一致条件下的备份。对于一个7X24小时工作的数据库来说,由于不可能关机,而数据库数据是不断改变的,因此只能进行不一致备份。在SCN不一致的条件下,数据库必须通过应用重做日志使SCN一致后,才能启动数据库。因此如果进行不一致备份,数据库必须设计归档状态,并对重做日志归档,才能进行。二.恢复的分类
    1.完全恢复:将数据库恢复到数据库失败时数据库的状态。这种恢复是通过装载数据库备份和应用全部的重做日志做到的。
    2.不完全恢复:三. 备份与恢复的方法
    1.用户管理的备份与恢复:使用SQL命令结合操作系统命令进行备份和恢复。使用这种方法备份文件与原数据库的物理文件个数和大小完全一样。在恢复时,将备份文件转储到目标数据库,然后使用SQL命令进行恢复。
    2.RMAN管理工具的备份与恢复
    3.逻辑备份与恢复
    对于你的情况,会用到的进行了具体的描述,其它的请参阅有关文档或书籍。
      

  2.   

    给你一个热备的脚本吧
    set feedback off heading off verify off trimspool off
    set pagesize 0 linesize 200
    define ws='/opt/oracle/sql/obak.sql'
    !rm -rf /home/backup/`date +%Y%m%d`
    !mkdir /home/backup/`date +%Y%m%d`
    define dir='/home/backup/`date +%Y%m%d`'
    spool &ws
    select 'alter tablespace '||tablespace_name|| ' begin backup;','!cp '||file_name|| ' &dir;','alter tablespace '||tablespace_name|| ' end backup; ' from dba_data_files order by 1;spool off
    @&ws恢复的话比较麻烦可以给你一个步骤你按这个步骤就可以了SQL> alter database datafile 11 offline;
    SQL> !cp /home/backup/20110520/app01.dbf /home/dbdata/
    SQL> recover datafile 11;
    SQL> alter database datafile 11 online;
      

  3.   

    不好意思,脚本是用于LINUX,但在WINDOW下只要稍微修改一下就可以用了
      

  4.   

    我是将数据库设置为归档模式,然后用host  copy命令将数据库的dbf文件备份,然后备份控制文件,只是备份一个表空间就可以了,之后恢复试过很多次都不行,求高手帮助!2楼的可以将你的脚本改成windows的么,我没用过linux系统,不太明白!
      

  5.   

    在备份之前你要输入
    alter tablespace  xxxx begin backup;
    然后使用复制命令
    host copy xxx.dbf xxxx.dbf.bak
    然后你可以删除数据文件
    恢复之前先把这个表空间制于离线状态
    先看看表空间对应的数据文件是哪个编号
    select file_id,file_name,tablespace_name from dba_data_files;
    表空间制于离线状态
    alter database datafile xx offline;
    然后
    host copy xxx.dbf.bak xxx.dbf
    再恢复数据文件
    recover datafile xx;
    最后把表空间置于在线状态
    alter database datafile xx online;基本恩路就是这样了,细节就要你自己去实践了
      

  6.   

    chinac6iz,我知道你这种方法,但是需要控制文件和日志文件,否则这样会出错,我模拟的是所有文件备份,然后删除数据库,所有文件丢失的情况下恢复!求帮助!
      

  7.   


    你用的是冷备份的方法,需要正常 down 掉数据库,然后再 copy 文件。如果需要单位备份表空间,需要先用 alter tablespace begin backup将表空间置于备份状态,才能开始 copy。
      

  8.   

    7楼的,我备份的时候是先将数据库设置为归档模式,然后将表空间设置为备份状态然后开始host  copy的。之后又用命令备份控制文件,然后为了模拟火灾,删除整个数据库,求恢复的方法啊!每次恢复都有问题!是不是少备份了什么东西,还有恢复的方法是什么!
      

  9.   

    第一:我想说的是,数据库密码安全,能再最大程度防止数据丢失和被篡改,不要用是个人都能猜得到的密码如与用户名相同、如123、如人名或公司名等
    第二:防止灾难事件最好是数据库的异地备份,既能防止硬件灾难又能防止数据库被破坏。
    第三:我一直在做数据库备份工作就是用exp再加上一个定时调用bat文件,感觉很好用。
    第四:使用什么样的策略需要软硬件支持,更取决于客户的真实需求。
      

  10.   


    就是用热备份备份数据库,要求备份之后,上传到异地的其他机器上,不能用exp和imp的方式导入导出,又说rman太麻烦,所以用这个方法备份,求备份和还原的步骤,备份哪些,怎么还原,求助啊!