1. 收集备份与恢复策略需求
      a)需求提问:
      i.数据库发生故障时,丢失多少数据是可承受的?
      ii.恢复数据库时能忍受的最长时间是多少?
      iii.为确保数据能够恢复,愿意投入的成本是多少?
      iv.备份期间是否可停机?
      v.受损硬件设备的替换需要多长时间?
      b)可承受的数据丢失量
      c)恢复数据库时允许的最长时间:HA或DR
      d)恢复所花的成本:RPO、RTO与成本之间存在直接联系。
      e)备份期间是否可以关闭系统。
      f)更换受损硬件需要多长时间:
      g)成长和扩展考虑事项
      2. 设计备份与恢复计划
      a)脱机or联机备份
      b)联机备份多久备份一次归档重做日志?如何确保在备份会话期间确保归档日志不丢失?
      c)关于可恢复性的策略和标准是什么?
      d)灾难事件中如何确保系统是可恢复的?
      e)是否需要制定体系结构方面的决策?
      3. 基本原则:如果环境稳定,要慎重对待更改。如果有人提出更改,则要站在自己的立场上看改变是否清晰,是否可靠地说明预期回报,并证明值得承担因生产系统更改造成的风险。
      4. 最佳备份与恢复计划:体系结构设计得当,管理有方,从来没必要使用它们进行恢复!
      5. 除Oracle数据库之外其他需要备份的内容:
      a)Oracle RDBMS软件(oracle 主目录和Oracle目录清单)
      b)网络参数文件(names.ora, INI文件)
      c)系统oratab文件和其他与Oracle相关的系统文件(例如:Oracle所有的rc启动脚本)
    保护级别 备份类型 保留期 数据丢失期限 数据恢复时长 代价
    1 每周全备 四周 1个工作日 一周 0
    2 周全备+日归档 四周 1个工作日 48小时 00
    3 周全备+6小时归档 四周 6小时 48 000
    4 周全备+日增备+
    6小时归档
    八周 1分钟 每200G一小时 0000
    1. 当前及协商后的备份和恢复SLA(正式或非正式)
      2. 现有DB的大小
      3. 这些DB当前的备份时间
      4. 现有DB预期的成长情况
      5. 现有DB预期的备份时间延长情况
      6. 将要创建的新数据库
      7. 新数据库的初始大小和预期成长情况
      8. 在开发、测试和QA等不同周期创建、删除和刷新数据库
      9. 数据库和数据库备份的保留标准
      1.预估FRA所需空间(一个月,周末全备,每日增备)
      2.2T ×(4+1)= 10T × 60% = 6T
      3.(31-4)+(31-4)÷ 4 = 33.75 × 2T × 10% × 60% = 4148G
      4.2T × 2% ×(31-4) = 1106G
      5.100M × 6 = 600M ≈ 1G
      6.1024 × 6 + 4148 + 1106 + 1≈ 10T
      经验公式: 2T ×(天数 + 1)÷ 6
      1. 确定FRA位置,并创建FRA
      a)各节点挂载远程NFS
    mkdir /nfs
    mount -o rw,bg,hard,intr,proto=tcp,vers=3,rsize=65536,wsize=65536,timeo=600192.168.56.12:/NFS /nfs

    b)配置权限

    chown oracle:dba /FRA
    1. 登陆DB配置为使用FRA
    su - oracle
    export ORACLE_SID=XXX
    sqlplus / as sysdba
    alter system set db_recovery_file_dest_size=10T;
    alter system set db_recovery_file_dest=’/FRA’;
    1. 确认数据库归档设置
    su - oracle
    export ORACLE_SID=XXX
    sqlplus / as sysdba
    archive log list
    show parameter LOG_ARCHIVE_DEST
    show parameter log_archive_state
    show parameter log_archive_format
    show parameter log_archive_min_succeed_dest
    1. 备份数据库
    su - oracle
    export ORACLE_SID=XXX
    rman target /
    backup database plus archivelog delete input;
    list backup of database summary;
    list backup of archivelog all summary;
    1. 还原数据库
    su - oracle
    export ORACLE_SID=XXX
    rman target /
    restore database
    recover database;
    alter database open;
    1. 配置RMAN
    su - oracle
    export ORACLESID=XXX
    rman target /
    configure controlfile autobackup on;
    configure controlfile autobackup format for device type disk to ‘XXXX’;
    configure defaule device type to disk;
    configure device type disk backup type to compressed backupset parallelism 4;
    configure channel 1 device type disk format ‘XXXX\back
    %U’;
    configure channel 2 device type disk format ‘XXXX\back%U’;
    configure channel 3 device type disk format ‘XXXX\back
    %U’;
    configure channel 4 device type disk format ‘XXXX\back%U’;
    configure channel device type disk maxpiecesize 2G;
    configure rman output to keep for 30 days;
    configure snapshot controlfile name to ‘XXXX’;
    configure controlfile autobackup on;
    configure controfile autobackup format for device type disk to ‘XXXXXX\XXX
    %F’;
    configure retention policy to recovery window of 30 days;
    1. 新建catalog数据库
    su - oracle
    export ORACLE_SID=XXX
    sqlplus / as sysdba
    Create user dbadmin identified by dbadmin
    Default tablespace users;
    Grant create session to dbadmin;
    Grant create user to dbadmin;
    Grant recovery_catalog_owner to dbadmin with admin option;
    Create tablespace catalog datafile ‘/u01/app/oracle/oradata/bpctlg/catlogts.dbf’ size 300M;
    Exit
    Sqlplus dbadmin/dbadmin
    Create user rcat_user identified by rcat_user
    Default tablespace catalog;
    Alter user rcat_user quota unlimited on catalog
    Grant recovery_catalog_owner to rcat_user
    Exit
    Rman target / catalog=rcat_user/rcat_user@xxx
    Register database;
    Report schema;
    1. 建立备份脚本
    su - oracle
    export ORACLE_SID=XXX
    rman target /
    Crete script backup_full_script
    {
    Backup database plus archivelog;
    }
    Run { execute script backup_full_script;}
    1. d