oracle 的备份和恢复


Oracle 的备份与恢复两大类
  
  1. 物理备份与恢复
  
  2. 逻辑备份与恢复(导入与导出)
  
根据数据库的工作模式划分
  
  1 . 非归档模式(No Archivelog)       叫 冷备份
  
  2. 归档模式(Archivelog)     叫热备份
  
1. 逻辑备份的导入 和 导出(Import 和 Export)
    
  1. 全库方式(Full) 将数据库中的所有对象导出 需要有DBA 权限
    exp system/verecom1981@orcl file=20121120.dmp full=y
  
    imp system/verecom1981@orcl file=20121120.dmp full=y
  
  2. 用户方式(U)    将指定的用户相应的所有数据对象导出
    创建一个新的用户 test,然后测试 test,orcl_user两个用户中的一个
  
    先测一下同时导出 test,orcl_user两个用户,  然后测试只导出一个的情况
  
    exp system/verecom1981@orcl file=20121120.dmp owner=orcl_user,test
  
    imp system/verecom1981@orcl file=20121120.dmp full=y
  
  3. 表方式 (T)    将指定的表导出备份
    exp orcl_user/orcl_user@orcl file=20121120.dmp tables=category,emp
  
    imp orcl_userorcl_user@orcl file=20121120.dmp tables=category,emp
    
  4. 字段方式     将指定表的字段数据匹配的备份
    将工资<6000 的员工数据备份
    exp 'orcl_user/orcl_user@orcl file=20121120.dmp tables=emp query=\"where salary\<6000\"'
  
    imp orcl_userorcl_user@orcl file=20121120.dmp tables=emp
  
  5. 不同名用户之间的导入
    将 用户 orcl_user 的数据导入到 用户 test 中. 
    exp orcl_user/orcl_user@orcl file=20121120.dmp tables=category,emp
  
    imp orcl_user/orcl_user@orcl fromuser=orcl_user touser=test  file=20121120.dmp tables=category,emp
  
  
2. 导入导出备份中提供了, 增量导入/导出 , 但是它必须作为System来完成增量的导入导出,而且只能是对整个数据库进行实施。增量导出又可以分为三种类别:
  
    1. 完全增量导出/导入(Complete Export)     将整个数据库文件导出备份;
      exp orcl_user/orcl_user@orcl inctype=complete file=20081220.dmp
  
      imp orcl_user/orcl_user@orcl inctype=RESTORE FULL=y FILE=20081220.dmp
  
    2. 增量型增量导出(Incremental Export)    只会备份上一次备份后改变的结果
      exp orcl_user/orcl_user@orcl  inctype=incremental file=20081220.dmp
      例如
        1 . 增量型增量导出后 删除 emp 的数据
  
        2. 再增量型增量导出 这个时候只导出 emp 改变的结果  , category 没有变不导出
  
    3. 累积型增量导出(Cumulate Export)     只导出上一次完全增量导出后数据库变化的信息.
      exp orcl_user/orcl_user@orcl  inctype=cumulative file=20081220.dmp
  
        例如
        1 . 增量型增量导出后 向  category 插入的数据
  
        2. 再累积型增量导出这个时候只导出  相对于  1. 完全增量导出  emp 表 和 category 表都有改变所以  emp ,category 都导出
  
      
  
3. 物理备份 的 冷备份( No ArchiveLog)
  当数据库可以暂时处于关闭状态时,将数据相关文件备份到安全的区域,当数据库遭到破坏,
再从备份区域将备份的数据库相关文件拷贝回原来的位置,这样,就完成了一次冷备份。
  
  冷备份
    优点 : 快速,方便,以及高效。
    缺点 : 
      1.只能提供到“某一时间点上”的恢复。
      2. 在冷备份过程中,数据库必须是关闭状态。
      3. 不能按表或按用户恢复。
  
  一次完整的冷备份步骤应该是:
  1. 连接到数据库
    SQL> conn sys/verecom1981@orcl as sysdba
  
  2. 关闭数据库
    SQL> shutdown normal
    
  3. 拷贝相关文件到备份区域(利用操作系统命令拷贝数据库的所有的数据文件、日志文件、控制文件、参数文件、口令文件等(包括路径))。
    cp -r /home/oracle/oradata/orcl /home/oracle/backup/orcl_"`date +%Y%m%d%k%M%S`"
  
  4. 恢复的时候,停掉数据库,将文件拷贝回相应位置,重启数据库就可以了。
    cp -r '/home/oracle/backup/orcl_20121121111806/* /home/oracle/oradata/orcl'
  
  
4. 物理备份的热备份(ArchiveLog)
  当需要做一个精度比较高的备份,而且我们的数据库不可能停掉(少许访问量)时,这个情况下,我们就需要归档方式下的备份,就是热备份。
热备份可以非常精确的备份表空间级和用户级的数据,由于它是根据归档日志的时间轴来备份恢复的,理论上可以恢复到前一个操作,甚至就是前一秒的操作。具体步骤如下:
  
  以 sys dba 连接
  1. 查看数据库释放在 Archive归档模式
    SQL> SELECT name,log_mode FROM v$database;
  
  2. 如果不是归档模式, 设置数据库在归档模式下运行
    SQL> shutdown immediate
    SQL> startup mount
    SQL> alter database archivelog;
    SQL> alter database open;
    SQL> archive log list;
      
    如果Automaticarchival显示为 "Enabled",则数据库归档方式为自动归档。否则需要手工归档,或者将归档方式修改为自动归档
    SQL> alter system set log_archive_start=true scope=spfile;
    SQL> startup force;
    SQL> archive log list;
  
    自动归档模式下强制归档
    SQL> alter system switch logfile;
  
    查看归档日志
    SQL> SELECT * FROM v$log;
      
    注意:当数据库处在ARCHIVE模式下时,一定要保证指定的归档路径可写,否则数据库就会挂起,直到能够归档所有归档信息后才可以使用。
  
  3. 备份表空间
    1. 修改表空间文件为备份模式 
      SQL> ALTER tablespace orcl_space BEGIN BACKUP;
  
    2. 拷贝表空间文件到指定位置
      SQL> !cp /home/oracle/oradata/orcl/orcl_space.dbf /home/oracle/backup;
  
    3. 将表空间的备份模式关闭
      SQL> AlTER tablespace orcl_space END BACKUP;
  
  4. 备份归档日志文件
    1 .查看归档日志文件路径
    SQL> archive log list; 
  
    2. 强制归档
    SQL> alter system switch logfile;
    在 /home/oracle/product/9.2.0/dbs/arch 下将会产生归档日志文件
  
    3. 复制归档文件备份
    SQL> !cp -r '/home/oracle/product/9.2.0/dbs/arch /home/oracle/backup/arch'
  
  5. 备份控制文件
    SQL>  alter database backup controlfile to '/home/oracle/backup/control.ctl'
      
5. 热备份恢复
    1.shutdown数据库。
      SQL> shutdown
  
                2. 将全备份的数据文件放到原来系统的目录中。
      SQL> !cp /home/oracle/backup/orcl_space.dbf /home/oracle/oradata/orcl
  
                3. 将全备份到失败点的所有归档日志放到参数LOG_ARCHIVE_DEST_1所指定的位置。
      SQL> !cp /home/oracle/backup/arch/* /home/oracle/product/9.2.0/dbs/arch
  
                4. 利用sqlplus登陆到空实例。(connect / as sysdba)
  
                5. 然后  startup mount
  
    6. set autorecovery on
  
    7. recover database;
  
    8. alter database open;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值