Oracle备份恢复概要    

本站OCM会员 @guoyJoe 原创文章


一、备份和恢复概要
1、高可用性
   (1)HA(High Availability,HA)
   (2)RAC(Real Application Clusters)
   (3)DG(Data Guard)
   (4)Oracle Replication
   (5)RAID和镜像驱动器
2、备份和恢复。
   (1)收集备份与恢复策略需求
   (2)精心设计备份与恢复计划

二、Oracle备份
1、ORACLE各种备份
  (1)类型
     ①物理备份
     ②逻辑备份
  (2)数据库状态
     ①联机备份(热)和脱机备份(冷)
     ②不一致性备份和一致性备份
  (3)备份规模
     ①完全备份:归档模式、非模式模式
     ②表空间备份
     ③数据文件备份
     ④控制文件备份
     ⑤归档日志文件备份

三 、ORACLE恢复
  (1)错误的类型
    ①用户误操作导致错误
    ②系统进程导致的错误
    ③实例导致错误
    ④存储介质导致错误
  (2)恢复类型
    ①实例恢复:1缓存恢复(前滚),2事务恢复(后滚)
    ②介质恢复(数据文件或数据块)
  (3)恢复方式
    ①完全恢复
    ②不完全恢复
  (4)恢复操作
     ①restore --还原
     ②recover --恢复
  (5)resetlogs:alter database open resetlogs;
    incarnation:化身号

四、常见备份与恢复技术
   (1)用户管理的备份和恢复(User-Managed Backup&Recovery)
   (2)RMAN备份和恢复
   (3)闪回(flashback)
     ①闪回查询(Flashback Query):通过查询UNDO段,能够重现操作之前的数据
     ②闪回表(Flashback Table):通过recycle Bin回收drop的表
     ③闪回数据库(Flashback Database)
   (4)逻辑导入/导出(Export/Import和Data Pump)
   (5)数据卫士(Data Guard)

五、用户管理备份
(1)主要数据:oradata/*  dbs/*  arch/*
   相关视图:v$datafile,v$controlfile,v$logfile,v$archived_log,v$tablespace,v$tempfile
(2)冷备:关闭-->copy-->启动
    select name  from v$datafile;
    select name from v$controlfile;
    --select member from v$logfile;
    --select name from v$tempfile;
    shutdown immediate;
    df -hl
    mkdir /backup
    chown -R oracle:oinstall /backup
    chmod -R 755 /backup
    su - oracle
    cd /backup
    mkdir cold
    mkdir hot
    cd /backup/cold
    cp -rf /u01/app/oracle/oradata/ocp/* .
    startup
(3)热备:
   SQL> col file_name for a50;
   SQL> select tablespace_name, file_name from DBA_data_files;
   SQL> alter tablespace tp1 begin backup;
   SQL> !cp /oradata/bxdb/user01.dbf  /backup/
   SQL> alter tablespace users end backup;
   SQL> alter system switch logfile;
     
   --dd if=/u01/app/oracle/oradata/ocp/tp1.dbf skip=205 bs=8192 count=2|strings
   --alter system dump datafile block;

   *批量操作脚本:(v$backup,dba_data_files,dba_tablespaces)
   select
    'alter tablespace '||tablespace_name|| ' begin backup;' ||chr(10)||
    'host cp '||file_name||' /backup' ||chr(10)||
    'alter tablespace '||tablespace_name|| ' end backup;'
   from dba_data_files order by tablespace_name;
     
    begin
     for i in 1 .. 10000 loop
     insert into t1 values(i,'gyj'||i);
     commit;
     end loop;
     end;
     /

  (4)控制文件备份:
  alter database backup controlfile to '/backup/control.bin';
  alter database backup controlfile to  trace as '/backup/control.ctl';
  (5)初始化文件备份:create pfile='/backup/pfile.ora' from spfile;
  (6)口令文件备份:orapwd file=$ORACLE_HOME/dbs/orapw<sid> password=oracle;

六、RMAN配置与备份
1.RMAN连接
  (1)连接本地数据库
    rman target /
  (2)连接远程数据库
     rman sys/oracle@bxdb
  (3)辅助连接
     rman target sys/oracle@ocp auxiliary sys/oracle@ocm
     duplicate target database for standby dorecover nofilenamecheck;
(4)连接恢复目录(ppt-les_03_catalog)
     create tablespace rc_data datafile '/u01/app/oracle/oradata/ocp/rc_data01.dbf' size 100m;
     create user rc_admin identified by rc_admin default tablespace rc_data quota unlimited on rc_data;
     grant connect,resource,recovery_catalog_owner to rc_admin;
     rman catalog rc_admin/rc_admin
     create catalog tablespace rc_data;
     exit
     rman target / catalog rc_admin/rc_admin
     register database;
*******************************************************
虚拟专用目录:
   create user v_user1 identified by v_user1 default tablespace tp1 temporary tablespace temp quota unlimited on tp1;
   grant recovery_catalog_owner to v_user1;
   
   [oracle@ocm ~]$ rman catalog rc_admin/rc_admin
    grant catalog for database ocm to v_user1;
   [oracle@ocm ~]$ rman catalog v_user1/v_user1
    create virtual catalog;
(5)退出rman
     exit
2.RMAN基本操作
  (1)启动关闭数据库
     rman target /
     shutdown immeidate
     startup
  (2)执行sql语句
      sql 'alter system checkpoint';
      sql"create tablespace tp3 datafile ''/u01/app/oracle/oradata/ocp/tp3.dbf'' size 10M";
  (3) RMAN备份类型
     ①镜像复制(Image Copies)
     ②备份集(Backup sets)
(4)RMAN命令执行方式
    ①单个命令 backup database;
    ②批处理 run{ ...
           };
    ③运行脚本
     *命令行方式调用操作系统中保存的脚本
      rman target / @script.rman (或 cmdfile=script.rman)
     *在rman中执行操作系统保存的脚本文件
      @scrip.rman
     *运行储储在CATALOG中的脚本(需要首先为RMAN创建恢复目录)
      create script full_db{
      backup format='/back/rman/full_%U'
      database include current controlfile
      plus archivelog;
     sql 'alter system archive log current';
     }
    run{execute script full_db;}
    rman target sys/oracle@oca catalog rc_admin/rc_admin@oca script full_db
     list script names;
     print script full_db;
     replace script full_db{
       backup format='/backup/rman/full_%U'
       database;
      }
    delete script full_db;
    resync catalog;
    unregister database;
    upgrade catalog;
    drop catalog;
   --查恢复目录 sqlplus rc_admin/rc_admin
   select dbid,name,resetlogs_change# from rc_database;
   select ts#,name,creation_change# from rc_tablespace;
   select file#,name,bytes from rc_datafile;
   select script_name from rc_stored_script;
   select line,text from rc_stored_script_line;
3. RMAN备份
(1)备份数据库
    backup database;
    backup database format '/backup/rman_full_%U';
    list backup of database;
(2)备份一个数据文件
    report schema
    select file#,name from v$datafile;
    backup datafile 4 format '/backup/md_%U';
    list backup of datafile 4;
(3)备份表空间
    select tablespace_name,contents from dba_tablespaces;
    backup tablespace trans format '/backup/trans_%U';
    list backup of tablespace trans;
(4)备份控件文件(4种方法)
    ①自动备份:configure controlfile autobackup on;
    ②backup current controlfile;
    ③backup datafile 4 include current controlfile;
    ④sql "alter database backup controlfile to ''/backup/control/back_controlfile.bin''";
       list backup of controlfile;
(5)备份参数文件(2种方法)
    ①自动备份:configure controlfile autobackup on;
    ②backup spfile format '/backup/spfile.ora';
(6)备份归档文件
    ①backup archivelog  all format '/backup/arch_%U';
    ②backup archivelog  sequence between 85 and 89  delete all input;
    ③backup archivelog  from time "sysdate - 14" until time "sysdate - 7 ";
    ④backup database plus archivelog format '/back/rman/full_%U' delete all input;
         list backup of archivelog all;
  (7)备份备份集
     ①backup backupset 1 format '/backup/backupset1_%U';
     ②backup backupset all;
  (8)镜像拷贝
     ①只能拷贝到磁盘上
     ②恢复(restore)只要switch,速度快
     ③backup copy 或直接用copy
       copy datafile 5 to '/u01/app/oracle/oradata/bxdb/tp5.dbf ';
       --copy datafile 5 to '+dg/oradata/bxdb/tp5.dbf ';
    (9)多条命令
     run {allocate channel c1 type disk;
          maxpieces size=2G;
          backup format '/backup/backup_%u' filesperset 3 database;
      }
     run {allocate channel d1 type disk;
          format '/backup/all_%u' maxpieces=100m;
          backup database filesperset=3;
         }
(9)增量备份
   ①差异增量备份(默认)
     vi increment0.sql
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0
export ORACLE_SID=ocp
#export NLS_LANG="SIMPLIFIED CHINESE_CHINA".ZHS16GBK
export PATH=$ORACLE_HOME/bin:$PATH
rman target / <<EOF
backup incremental level =0 database;
EXIT
EOF
     vi increment1.sql
     rman target / <<EOF
     backup incremental level =1 database;
     EOF
     vi increment2.sql
     rman target / <<EOF
     backup incremental level =2 database;
      EOF
     crontab -e
     0 2 * * 0  /home/oracle/increment0.sql > /tmp/increment0.log 2>&1
     0 2 * * 1  /home/oracle/increment2.sql > /tmp/increment1.log 2>&1
     0 2 * * 2  /home/oracle/increment2.sql > /tmp/increment2.log 2>&1
     0 2 * * 3  /home/oracle/increment1.sql > /tmp/increment3.log 2>&1
     0 2 * * 4  /home/oracle/increment2.sql > /tmp/increment4.log 2>&1
     0 2 * * 5  /home/oracle/increment2.sql > /tmp/increment5.log 2>&1
     0 2 * * 6  /home/oracle/increment2.sql > /tmp/increment6.log 2>&1
  ②累积增量备份
   
七、RMAN常用命令
   5.1 显示默认配置 --show命令
       show all;
       show controlfile autobackup;
       CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT   '/backup/rman/full_%U';
   5.2 列出备份信息 --list命令
      list backup;
      list backup of controlfile;
      list backup of datafile '/oradata/bxdb/users.dbf';
      list backup of 5;
      list backup of archivelog all;
      list copy of tablespace 'SYSTEM';
      list device type disk backup;
      list archivelog all;
      list expired backup;
   5.3 删除备份 --delete 命令
      delete obsolete; --备份策略
      delete expired backup; --物理路径
      delete expired copy;
      delete expired archivelog all;
      delete backupset 5;
      delete backuppiece '/backup/user_demo_20.bak';
      delete backup;
      delete datafile copy '/oradata/bxdb/users.dbf';
      delete copy;
      backup archivelog all delete input;
   5.4 报表显示 --report命令
      report schema;
      report need backup;
      report need backup tablespace system;
      report obsolete;
   5.5 执行检查 --crosscheck命令
      crosscheck archivelog all;
      crosscheck backup;
   5.6 配置configure
iidba

写了 218 篇文章,拥有财富 2860,被 235 人关注

转播转播 分享分享2 分享淘帖
回复

使用道具

P3 | 发表于 2013-4-15 20:24:49
感谢老师分享
回复

使用道具

P4 | 发表于 2013-5-9 09:15:50
照着这个俺也学习学习,谢谢
回复

使用道具

P4 | 发表于 2013-7-1 17:00:17
谢谢老师 ,辛苦了
回复

使用道具

P4 | 发表于 2013-7-18 16:57:21
谢谢 老师分享 刚开始学习DBA,收益颇丰!
回复

使用道具

P4 | 发表于 2013-9-16 14:41:38
谢谢分享
回复

使用道具

P4 | 发表于 2013-9-16 17:24:41
顶。。。。。。
回复

使用道具

P4 | 发表于 2013-9-18 16:26:50
{:soso_e179:}原来备份恢复这么多东西,要好好学习啊~
回复

使用道具

P4 | 发表于 2013-9-24 12:14:07
写得不错哦
回复

使用道具

P4 | 发表于 2013-10-9 09:51:23
老师辛苦了!
回复

使用道具

123下一页
您需要登录后才可以回帖 登录 | 加入社区

本版积分规则

意见
反馈