zoukankan      html  css  js  c++  java
  • day15_oracle——RMAN

    RAMN概述
     恢复管理器,可以跨越不同的操作系统进行数据库的备份与恢复
     RMAN的优势:
       Rman操作简单 自动化功能强
       Rman可以忽略备份后未发生改变的block
       使用rman可以轻松的创建备份或stabdby数据库
       自动执行并行的备份和还原操作
       可以不实际执行的情况下检查文件是否被正确的备份或还原

    第一种连接方式
    [oracle@sq ~]$ rman
    RMAN> connect target /

    第二种连接方式
    [oracle@sq ~]$ rman target /

    ======================================
    立即关闭数据库
    SQL> shutdown immediate;

    启动实例并加载数据库,但不打开
    SQL> startup mount

    更改数据库为归档模式
    SQL> alter database archivelog;

    打开数据库
    SQL> alter database open;

    启用自动归档
    SQL> alter system archive log start;

    查看归档状态
    SQL> archive log list;

    全库恢复要在mount状态
    表恢复可以在open状态

    =========================================
    [oracle@sq admin]$ rman target /
    RMAN> list backup; (查看备份列表)

    (备份表空间)
    RMAN> backup tablespace users;
    RMAN> sql "alter system flush buffer_cache";(rman用sql,清空缓存)

    [oracle@sq orcl]$ rm -rf users01.dbf(删除数据文件)
    SQL> startup force
    ORA-01110: data file 4: '/u01/app/oracle/oradata/orcl/users01.dbf'
    (报错4号文件 没有找到)

    SQL> !
    [oracle@sq ~]$ rman target /
    RMAN> restore datafile 4;(恢复文件)

    RMAN> sql "alter database datafile 4 online";(数据文件在线)
    SQL> startup force(正常运行)

    RAMAN为什么能找到恢复的路径,因为RAMN在备份数据文件的同时也备份了控制文件,通过控制文件的路径来恢复数据文件。一定要记住当数据文件有更新要重新备份。

    备份位置
    [oracle@sq123 dbs]$ cd /oracle/app/flash_recovery_area/TEST/backupset/
    (Rman自动备份控制文件和参数文件
    如果不配置,备份普通表空间的时候就不自动备份控制文件和参数文件)
    =======================================
    全库备份
    1.
    RMAN> backup database;
    RMAN> list backup; 

    2.
    [oracle@sq123 ~]$ cd /oracle/app/oradata/TEST/
    [oracle@sq123 TEST]$ rm -rf *

    3.SQL> startup force (找不到控制文件)

    4.[oracle@sq123 TEST]$ cd /oracle/app/flash_recovery_area/TEST/backupset/2012_03_12/
    (找到o1_mf_ncsnf_TAG20120312T004722_7osowxyj_.bkp)
     
    5.恢复控制文件
    Rman自动备份控制文件和参数文件

    RMAN> restore controlfile from '/oracle/app/flash_recovery_area/TEST/backupset/2012_03_12/o1_mf_ncsnf_TAG20120312T004722_7osowxyj_.bkp';

    RMAN> alter database mount;(数据库可以mount)

    6.[oracle@sq123 TEST]$ ls (控制文件恢复回来了)

    7.恢复数据文件
    RMAN> restore database;
    [oracle@sq123 TEST]$ ls(数据文件恢复回来了)

    8.RMAN> alter database open resetlogs;(报错)
      RMAN> recover database;(报错)
      RMAN> alter database open resetlogs; (可以打开数据库)
    (restore 是还原,文件级的恢复。就是物理文件还原
      recover 是恢复,数据级的恢复。逻辑上恢复)

    SQL> startup force(已经能够重启 恢复成功)
    [oracle@sq123 TEST]$ ls (日志文件也有了)

    ============================================================
    多通道全库备份(提高效率)

    run{
    allocate channel c1 type disk format '/home/oracle/backup1/%u';
    allocate channel c2 type disk format '/home/oracle/backup2/%u';
    sql 'alter system archive log current';
    backup database plus archivelog delete all input;
    sql 'alter system archive log current';
    }




    ((
    %c copy ID
    %p backup piece ID
    %s backup set ID
    %e log sequence
    %h log thread ID
    %d database name
    %n database name(x填充到8个字符)
    %I DBID
    %f file ID
    %F DBID, day, month, year, and sequencer的复合
    %N tablespace name
    %t timestamp
    %M mh mm格式
    %Y year yyyy格式
    ))
    =============================================================
    RMAN 增量备份

    1。
    RMAN> backup incremental level 0 database format='/home/oracle/db_bak/%u';
    (level=0 0级别为全库备份  %u生成唯一一个文件名)
    (增量备份第一备份要为全库备份)

    2.1SQL> create table c1 as select * from dba_objects;
       (产生4w多行记录 占用的块较多)


    (一级增量备份)
    (增量备份级别:
     1.differential 差异备份 认同同级备份.
     2.cumulative 累积增量备份 不认同同级备份 优点:恢复时不需要读取过多的备份集)


    2.2 差异备份 
    RMAN> backup INCREMENTAL LEVEL 1 DATABASE format='/home/oracle/db_bak/%u';


    3.1
    SQL> create table c2 (id int);
    SQL> insert into c2 values(123);
    SQL> commit;
    (产生的数据较少)

    3.2  累积增量备份
    RMAN> backup INCREMENTAL LEVEL 1 CUMULATIVE DATABASE format='/home/oracle/db_bak/%u';

    3.3 
    验证
    比较两次产生的备份片, 3.2步骤 备份片大于 3.1步骤地大小 
    ---------------------------------------------------------------
    脚本备份
    [oracle@sq123 ~]$ vi fullbackup.sh
    #!/bin/bash
    source ~/.bash_profile
    $ORACLE_HOME/bin/rman target / <<EOF
    run {
    allocate channel C1 type disk FORMAT '/home/oracle/db_bak/%u';
    allocate channel C2 type disk FORMAT '/home/oracle/db_bak/%u';
    backup incremental level=0 database format='/home/oracle/db_bak/%u';
    }
    exit;
    EOF


    [oracle@sq123 ~]$ chmod 777 fullbackup.sh 
    [oracle@sq123 ~]$ ./fullbackup.sh 执行

    -----------------------------------------------------
    RMAN> list backup;
    RMAN> delete backupset 1; 删除一个

    RMAN> delete backup;
    YES
    (如果备份集中原数据文件被删除 delete检测时出错
    需要先执行RMAN> CROSSCHECK backup; 检测备份)

    检查备份文件是否有效
    RMAN> validate backupset 1;

    删除陈旧的备份(超出冗余保留时间)
       delete obsolete;
    报告陈旧的备份文件
       report  obsolete;
    报告需要备份的文件
       report  need backup;

    --------------------------------------------------------
    rman catalog
    采用RMAN方式进行备份,默认是采用NOCATALOG方式的。在这种情况下,LIST出来的备份信息写到了CONTROL FILE里,如果控制文件损坏,如果只能启动到NOMOUNT状态,那么备份信息就不可用。ORACLE建议我们采用CATALOG 方式,将控制文件的LIST信息同步到CATALOG DB中,这样当控制文件有问题时,我们也可以借用于CATALOG DB。

    目录数据库:8.18
    目标数据库:8.111
    环境准备:
    两端开启归档模式
    两端开启监听
    两端传输
    DB111 =
      (DESCRIPTION =
        (ADDRESS_LIST =
          (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.8.111)(PORT = 1521))
        )
        (CONNECT_DATA =
          (SERVICE_NAME = TEST)
        )
      )

    DB18 =
      (DESCRIPTION =
        (ADDRESS_LIST =
          (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.8.18)(PORT = 1521))
        )
        (CONNECT_DATA =
          (SERVICE_NAME = TEST)
        )
      )






    1.在目录数据库中创建恢复目录所用表空间   
    SQL> create tablespace rmants datafile '/home/oracle/rmants.dbf' size 100m;

    2.在目录数据库中创建RMAN   用户并授权   
    SQL> create user rman identified by rman default tablespace rmants quota unlimited on rmants;

    SQL> grant recovery_catalog_owner to rman;
    SQL> grant resource to rman;
    SQL> grant connect to rman;


    3.在目录数据库中创建恢复目录 
    [oracle@oracle18 ~]$ rman catalog rman/rman
    RMAN> create catalog tablespace rmants;

    4.注册目标数据库到恢复目录
    [oracle@oracle18 ~]$ rman target sys/123456@db111  
    RMAN> connect catalog rman/rman@db18
    RMAN> register database;


    5.下面就可以使用RMAN了 
    备份些东西
    删除目标库控制文件
    修复控制文件

    [oracle@oracle18 ~]$ rman target sys/123456@db111  
    RMAN> connect catalog rman/rman@db18
    RMAN> list backup;
    还能看到备份信息




    ===========================================================
    set controlfile autobackup format for device type disk to '/home/oracle/cf_%F';

    RMAN> restore controlfile from autobackup; (前提控制文件有效状态)

    查看dbid

    select dbid from v$database



















  • 相关阅读:
    小希的迷宫
    不下降序列
    Stones on the Table
    glsl之纹理演示
    glsl之多重纹理演示
    6.12
    这狗日的生活
    小楼一夜听春雨,天下谁人不识君?
    lua 调用C/C++
    D3DFVF_XYZ和D3DFVF_XYZRHW的区别
  • 原文地址:https://www.cnblogs.com/xiaoxiao5ya/p/7c605a23ed6f0d2446b424f16c942844.html
Copyright © 2011-2022 走看看