zoukankan      html  css  js  c++  java
  • rman备份

    rman备份

    1.开启存档模式

    SQL> archive log list;  查看当前数据库的存档模式
    SQL> alter system set log_archive_start=true scope=spfile;  修改系统的日志方式为存档模式
    SQL> shutdown immediate;    关闭数据库,因为不能在open状态下进行操作;
    SQL> startup mount;     启动mount实例,不启动数据库
    SQL> alter database archivelog;     更改数据库为存档模式
    SQL> archive log list;
    SQL> alter database open;
    

      

    2.关闭存档模式

    SQL> archive log list;
    SQL> select status from v$instance;
    open
    SQL> shutdown immediate;
    SQL> startup mount;
    SQL> alter database noarchivelog;       数据库非存档模式
    ​
    SQL> archive log list;
    SQL> select status from v$instance;
    SQL> alter database open;
    SQL> select status from v$instance;
    

      

    3.创建恢复目录

    SQL> create tablespace yy 
    datafile 'C:APPADMINISTRATORORADATAORCLyy.dbf' 
    size 20m 
    autoextend on next 5m 
    maxsize unlimited;
    ​
    //quota unlimited on yy        //yy配额不受限制
    SQL> create user rman identified by rman default tablespace yy quota unlimited on yy;
    ​
    //recovery_catalog_owner恢复目录所有者
    SQL> grant connect,resource,recovery_catalog_owner to rman;
    ​
    ​
    C:UsersAdministrator> rman catalog rman/rman
    RMAN> create catalog tablespace yy;     创建恢复目录
    RMAN> quit
    C:UsersAdministrator> echo %ORACLE_SID%
    

      

    登录目标数据库、连接到恢复目录数据库

    C:UsersAdministrator> rman catalog rman/rman target /
    恢复管理器: Release 11.2.0.3.0 - Production on 星期五 4月 23 08:53:33 2021
    Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.
    已连接到目标数据库: ORCL (DBID=1597925059)
    连接到恢复目录数据库
    

      

    向恢复目录注册ORCL,此时可以使用rman的恢复目录对目标数据库进行备份和恢复操作。

    RMAN> register database;        向恢复目录注册数据库ORCL
    注册在恢复目录中的数据库
    正在启动全部恢复目录的 resync
    完成全部 resync
    

      

    4.通道的分配

    • rman进行备份和恢复时,必须进行通道的分配,一个通道是rman和目标数据库的一个连接,通道制定了某种类型的设备用于备份和恢复,rman可以使用的通道设备包括磁盘与磁带两种。

    • 修改前的参数

      show all 显示已经配置过的有默认值的参数,其中包括通道参数

      RMAN> show all;
      ​
      db_unique_name 为 ORCL 的数据库的 RMAN 配置参数为:
      CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default
      CONFIGURE BACKUP OPTIMIZATION OFF; # default
      CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default
      CONFIGURE CONTROLFILE AUTOBACKUP OFF; # default
      CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # default
      CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default
      CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
      CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
      CONFIGURE MAXSETSIZE TO UNLIMITED; # default
      CONFIGURE ENCRYPTION FOR DATABASE OFF; # default
      CONFIGURE ENCRYPTION ALGORITHM 'AES128'; # default
      CONFIGURE COMPRESSION ALGORITHM 'BASIC' AS OF RELEASE 'DEFAULT' OPTIMIZE FOR LOAD TRUE ; # default
      CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default
      CONFIGURE SNAPSHOT CONTROLFILE NAME TO 'C:APPADMINISTRATORPRODUCT11.2.0DBHOME_1DATABASESNCFORCL.ORA'; #
       default
      

        

    • 自动通道配置

      RMAN> configure device type disk parallelism 5;
      ​
      新的 RMAN 配置参数:
      CONFIGURE DEVICE TYPE DISK PARALLELISM 5 BACKUP TYPE TO BACKUPSET;
      已成功存储新的 RMAN 配置参数
      正在启动全部恢复目录的 resync
      完成全部 resync
      ​
      RMAN> configure default device type to disk;
      ​
      新的 RMAN 配置参数:
      CONFIGURE DEFAULT DEVICE TYPE TO DISK;
      已成功存储新的 RMAN 配置参数
      正在启动全部恢复目录的 resync
      完成全部 resync
      

        

    • 手动通道配置

      RMAN> run
      2> {
      3> allocate channel ch1 device type disk;
      4> allocate channel ch2 device type disk;
      5> allocate channel ch3 device type disk;
      6>}
      

        

    5.备份与恢复的概念与操作

    • 备份集与备份片

    • 一个备份集由若干个备份片组成。每个备份片是一个单独输出文件,一个备份片的大小是有限制的,他的大小不能大于文件系统所支持的文件长度的最大值。

    • 配置备份集文件的格式:

      • 使用backup命令进行备份时,需要明确备份文件的存储路径及文件名称的格式。其路径和格式可以使用FORMAT参数进行统一设置。FORMAT格式由两部分组成:即存储路径和文件名称格式;

      • 如果没有使用FORMAT指定存储路径和文件名称格式,则默认情况下BACKUP所产生的备份集将存储在快闪恢复区中,RMAN自动使用%U来确定文件名称不会被重复。

    • format命令格式:

      FORMAT命令格式如下:
      FORMAT '格式字符串'
      其中格式字符串的文件名称部分可以使用替换变量,例如FORMAT '/BACKUP/YY/%U'.
      常用的替换变量如下:
      %c : 备份片的拷贝数
      %d:数据库名称
      %D : 位于该月中的第几天(DD)
      %M : 位于该年中第几月(MM)
      %F : 一个基于DBID的唯一名称,它的形式为C-DBID-YYYYMMDD-QQ。其中DBID为数据库的DBID,YYYYMMDD为日志,QQ是一个1-256的序列
      %n:数据库名称,向右填补到最大8个字符
      %u:一个8个字符的名称,它是根据备份集个数与创建时间信息生成的。
      %p:该备份集中的备份片号,从1开始到创建的文件数。
      %U:系统生成的一个唯一文件名,对于备份片来说,它的含义相当于%u_%p_%c。
      %s:备份集的号
      %t:备份集时间戳
      %T:年月日格式(YYYYMMDD)
      原文链接:https://blog.csdn.net/weixin_41078837/article/details/80609077

    5.1备份与恢复命令

    • backup命令用于备份数据库文件,可以将多个文件、表空间、整个数据库已备份集形式备份到磁盘或磁带上,在RUN命令外使用BACKUP命令,会自动使用自动通道。在RUN命令内使用BACKUP命令,如果定义了手动通道,则优先使用手动定义通道。

    • 使用RMAN备份的数据库也只能使用RMAN提供的恢复命令进行恢复。RMAN的恢复目录中存储了目标数据库的备份信息。RMAN根据恢复目录中的存储信息,自动将数据库同步到某一个数据一致的状态。

    • RMAN恢复数据库时用到两个命令,即RESTORE和RECOVER。RESTORE命令将备份数据恢复到指定的目录,RECOVER命令对数据库进行同步恢复。

    • RESTORE命令:由于备份集中的备份片是以专有的RMAN格式存储的,需要使用RESTORE命令进行重建。重建的结果是自动产生目标数据库的物理文件结构。

    • RECOVER命令:负责把归档日志文件用于重建的数据文件,来完成数据库的同步恢复。在执行RECOVER命令时,RMAN需要读取归档日志。如果没有归档日志,或者数据库运行在非归档模式下,则恢复过程会报错。

    5.2归档模式下备份与恢复

    查看快闪恢复区参数 SQL> show parameter db_recovery_file_dest;

    • plus archivelog 备份时包含归档日志文件

    • delete input 备份完后,删除archive log文件

    c:UsersAdministrator> rman catalog rman/rman target /
    RMAN> backup database;		//不指定备份位置,默认备份到快闪恢复区
    ...
    通道 ORA_DISK_2: 已完成段 1 于 23-4月 -21
    段句柄=C:APPADMINISTRATORFAST_RECOVERY_AREAORCLBACKUPSET2021_04_23O1_MF_NNNDF_TAG20210423T113111_J84HW1
    92_.BKP 标记=TAG20210423T113111 注释=NONE
    通道 ORA_DISK_2: 备份集已完成, 经过时间:00:00:36
    完成 backup 于 23-4月 -21
    备份时包含归档日志文件
    RMAN> backup database plus archivelog delete input;
    

      

    5.3自动分配通道备份

    自动分配通道,通过format指定具体的路径和格式
    若没有文件自行创建
    RMAN> configure device type disk parallelism 5;
    RMAN> configure default device type to disk;
    RMAN> backup database FORMAT 'C:APPADMINISTRATORORADATAackup
    manbak\%U'
    

      

    归档日志误删解决办法
      • change archivelog all crosscheck;

      • 检查rman资料库中归档日志的状态的

    5.4手动分配通道备份

    RMAN> run
    2> {
    3> allocate channel ch1 device type disk;
    4> backup database format 'c:	empackup2021_4_23\%U;
    5> release channel ch1;
    6> }
    

      

    5.5恢复数据库

    模拟数据丢失

    //mount状态
    SQL> shutdown immediate
    删除C:appAdministratororadataorclSYSTEM01.DBF
    SQL> startup
    数据库无法启动
    SQL> select status from v$instance;
    MOUNTED
    
    c:UsersAdministrator> rman target rman/rman
    RMAN> restore database;			重建数据库的物理文件
    RMAN> recover database;			同步恢复
    RMAN> alter database open resetlogs;		//打开数据库
    
    C:appAdministratororadataorclSYSTEM01.DBF文件已经被恢复
    • resetlogs仅在不完全数据库恢复后有效

    6.备份和恢复表空间

    6.1备份

    c:> rman catalog rman/oravle target /
    

      

    备份users表空间

    RMAN> backup tablespace users;
    

      

    备份多个表空间

    • 用filesperset控制备份集的尺寸 当指定filesperset参数时,rman比较filesperset与自动计算出来的值(对每个已分配通道的文件数目)并取其中较小的那个值来保证所有的通道被使用。

    RMAN> backup filesperset=3 tablespace users,system,sysaux;
    

      

    在RUN命令中备份表空间

    RMAN> run
    2> {
    3> allocate channel ch1 device type disk;
    4> backup format 'c:	empackup2021042315\%U' (tablespace users,system,sysaux);
    5> release channel ch1;
    6> }
    

      

    6.2恢复

    如果只丢失了特定的表空间的数据文件,那么可以选择只恢复这个表空间,而不是恢复整个数据库,表空间恢复可以在不关闭数据库的情况下进行,只需要将需要恢复的表空间offline

    模拟删除users表空间
    C:appAdministratororadataorclUSERS01.DBF
    
    恢复被删除的表空间
    RMAN> run
    2> {
    3> sql 'alter tablespace users offline immediate';		将表空间脱机
    4> restore tablespace users;
    5> recover tablespace users;
    6> sql 'alter tablespace users online';			将表空间联机
    }
    
    RMAN> alter database open;
    或
    
    C:appAdministratororadataorclUSERS01.DBF
    RMAN> restore tablespace users;
    RMAN> recover tablespace users;
    RMAN> alter database open;
    

      

    6.3备份数据文件2

    备份数据文件2(sysaux01.dbf)

    SQL> col file_name for a55;
    SQL> col status for a10;
    SQL> select file_id,file_name,status from dba_data_files;
    
       FILE_ID FILE_NAME                                               STATUS
    ---------- ------------------------------------------------------- --
             4 C:APPADMINISTRATORORADATAORCLUSERS01.DBF           AVAILABLE
             3 C:APPADMINISTRATORORADATAORCLUNDOTBS01.DBF         AVAILABLE
             2 C:APPADMINISTRATORORADATAORCLSYSAUX01.DBF          AVAILABLE
             1 C:APPADMINISTRATORORADATAORCLSYSTEM01.DBF          AVAILABLE
             5 C:APPADMINISTRATORORADATAORCLEXAMPLE01.DBF         AVAILABLE
             6 C:APPADMINISTRATORORADATAORCLSYNCHROMOBILE.DBF     AVAILABLE
             7 C:TEMPYY.DBF                                          AVAILABLE
    
    c:> rman target rman/rman
    RMAN> backup datafile 2;
    

      

     

    7.查看系统中的数据文件

    SQL> col file_name for a55;
    SQL> col status for a10;
    SQL> select file_id,file_name,status from dba_data_files;
    
       FILE_ID FILE_NAME                                               STATUS
    ---------- ------------------------------------------------------- --
             4 C:APPADMINISTRATORORADATAORCLUSERS01.DBF           AVAILABLE
             3 C:APPADMINISTRATORORADATAORCLUNDOTBS01.DBF         AVAILABLE
             2 C:APPADMINISTRATORORADATAORCLSYSAUX01.DBF          AVAILABLE
             1 C:APPADMINISTRATORORADATAORCLSYSTEM01.DBF          AVAILABLE
             5 C:APPADMINISTRATORORADATAORCLEXAMPLE01.DBF         AVAILABLE
             6 C:APPADMINISTRATORORADATAORCLSYNCHROMOBILE.DBF     AVAILABLE
             7 C:TEMPYY.DBF                                          AVAILABLE
             
             
    SQL> select file#,status from v$datafile;
    
         FILE# STATUS
    ---------- ----------
             1 SYSTEM
             2 ONLINE
             3 ONLINE
             4 ONLINE
             5 ONLINE
             6 ONLINE
             7 ONLINE
    

      

     

    对数据文件或表空间做恢复的时候数据文件和表空间一定要处于offline状态, 数据文件丢失了,但数据库实例还可以用,

    //SQL> backup datafile 2;	上一节已做备份2:sysaux01.dbf
    SQL> select file_id,file_name,status from dba_data_files;
    SQL> select file#,status from v$datafile;
    删除C:appAdministratororadataorclSYSAUX01.dbf
    
    RMAN> sql 'alter database datafile 2 offline';	此时状态为recover
    RMAN> restore datafile 2;
    RMAN> recover datafile 2;
    RMAN> sql 'alter database datafile 2 online';

     

    8.rman备份脚本

    8.1

    RMAN> show all;
    RMAN> configure controlfile autobackup on;
    RMAN> configure controlfile autobackup format for device type disk to 'c:ackup\%F';
    

      

    rman备份命令文件

    back.txt

    RUN {
    allocate channel ch1 type disk;
    backup database format 'c:ackupdb_%U' plus archivelog delete all input format 'c:ackup2arch_%U';
    release channel ch1;
    }
    

      

    back.bat

    rman target sys/root123 cmdfile 'c:ack.txt' log 'c:ackup2ackup_%date:~0,4%%DATE:~5,2%%DATE:~8,2%".log'
    

      

    执行back.bat

    8.2

    备份整个数据库

    run{
        allocate channel c1 type disk format 'c:	emporacle
    manbackupfull_%d_%T_%s';
        backup database include current controlfile;
        release channel c1;
    }
    

      

    备份单个表空间

    run{
        allocate channel c1 type disk format 'c:	emporacle
    manbackup	ab_users_%d_%T_%s';
        backup tablespace users;
        release channel c1;
    }
    

      

    备份多个数据文件

    select file_id,file_name from dba_data_files;
    run{
        allocate channel c3 type disk format 'c:	emporacle
    manbackupdatafile_%d_%T_%s';
        backup datafile 4,5;
        release channel c3;
    }

     

    部分内容来自:https://blog.csdn.net/weixin_41078837/article/details/80609077

    9.archivelog

    //查看
    RMAN>crosscheck archivelog all;        -----交叉检查归档日志信息。
    RMAN>list expired archivelog all;         -----列出所有过期的归档日志信息。
    RMAN>list archivelog all;                -----查看当前归档日志列表信息。
    RMAN>list archivelog from time='sysdate-2';       -----查看至今两天的日志信息。
    ​
    ​
    //备份archive
    RMAN>backup archivelog all  format '/u03/rman/arch_log_%d_%T_%s_%p';           -------备所有归档。
    RMAN>backup as compressed backupset  archivelog all  format '/u03/rman/arch_log_%d_%T_%s_%p';       -------采用压缩,备所有归档。
    RMAN>backup archivelog from time 'sysdate-3';       -------备份3天以来的归档日志。
    RMAN>backup archivelog from sequence 5;       -------从日志序列是5的开始备份。
    RMAN>backup archivelog from sequence 5 until sequence 10;     -------备份日志序列从5到10的日志。
    RMAN>backup archivelog all delete all input;       --------备份完所有的日志后,删除所有归档目录的日志。
    ​
    ​
    RMAN>delete noprompt expired archivelog all;       --------删除过期的archivelog
    ​
    RMAN>restore archivelog all;         --------还原所有的archivelog日志
    RMAN>restore archivelog all preview;        --------不真实还原,只是预览操作
    ​
    RMAN>delete  archivelog all;         --------删除所有的archivelog日志
    ​
    ​
    RMAN>restore archivelog from logseq 11111 until logseq 11150;     -------还原某个段的archivelog日志
    RMAN>restore archivelog from sequence 36 until sequence 50;
    RMAN>restore archivelog low sequence 36 high sequence 50;
    RMAN>restore archivelog time between "to_date('2012-04-22 10:00:00','yyyy-mm-dd hh24:mi:ss')" and "to_date('2012-04-26 16:20:00','yyyy-mm-dd hh24:mi:ss')" preview;
    RMAN>restore archivelog time between "to_date('2012-04-22 10:00:00','yyyy-mm-dd hh24:mi:ss')" and "to_date('2012-04-26 16:20:00','yyyy-mm-dd hh24:mi:ss')" ;
    ​
    指定archivelog的恢复目的地,如你想把archivelog恢复到一个临时目录时有用
    RMAN>run {
    set archivelog destination to 'c:	emp';
    }
    delete archivelog all completed before 'sysdata-7';     //删除七天之前的归档
    delete archivelog from time 'sysdate-7';    //删除七天到现在的归档
    

      

    9.1归档

    查看归档

    SQL> archive log list; 
    

      

    查看存储位置

    SQL> select * from v$flash_recovery_area_usage;
    ​
    可以看到归档日志D:appAdministratorflash_recovery_area目录下在而且默认是不会定期清除的,时间长久了,该文件夹会占用很大的空间。不能直接在操作系统下手工直接删除的话,应该用ORACLE 的RMAN删除用RMAN 连接目标DB:
    ​
    c:> RMAN target sys/sysoracle123
    

    9 .2清除归档日志

    • os层物理删除

      archivelog相关信息记录在controlfile当中,物理删除不会改变controlfile的设置。需以下操作

      物理删除archivelog
      rman target rman/rman
      RMAN> crosscheck archivelog all;
      RMAN> delete expired archivelog all;
      //delete noprompt archivelog until time 'sysdate-3';
      //删出7天之前的归档
      

        

    • 使用rman删除archivelog

      RMAN> delete archivelog all completed before 'sysdate-7';
      //删出7天之前的归档,但会留下一个里面最新的归档
      

        

    • 使用rman备份archivelog,后全部删除

      RMAN> format'c:ackuparch_%T_%s_%U' archivelog all delete input;
      或
      RMAN> backup database plus archivelog;
      

        

       

    10.增量备份

    全备脚本

    RMAN> run{
    2> allocate channel c1 type disk;
    3> backup full tag 'dbfull' format 'c:	emporacle
    manbackupfull_%d_%T_%s' database include current controlf
    ile;
    4> sql'alter system archive log current';#在数据库进行全备份完成之后,需要执行该条命令将当前日志归档,备份归档日志时应该包括最后生成的归档
    5> backup filesperset 3 format 'c:	emporacle
    manbackuparch_%d_%T_%s' archivelog all delete input;#备份归档可选,可以单独定期备份  
    6> release channel c1;
    7> }
    

    0级增量备份

    RMAN> run{
    2> allocate channel c1 type disk;
    3> backup incremental level 0 tag 'db0' format 'c:	emporacle
    manbackupdb0_%d_%T_%s' database include current controlfile;
    4> sql'alter system archive log current';
    5> backup filesperset 3 format'c:	emporacle
    manbackuparch_%d_%T_%s' archivelog all delete input;
    6> release channel c1;
    7> }
    

      

    1级增量备份

    RMAN> run{
    2> allocate channel c1 type disk;
    ​
    3> backup incremental level 1 tag 'db1' format 'c:	emporacle
    manbackupdb1_%d_%T_%s' database skip readonly
     include current controlfile;
     
    4> backup filesperset 3 format 'c:	emporacle
    manbackuparch_%d_%T_%s' archivelog all delete input;
    ​
    5> release channel c1;
    6> }
    

      

     

     

    相关链接:https://blog.csdn.net/weixin_41078837/article/details/80609077

    配置若有遗漏或错误,请评论留言。
  • 相关阅读:
    gridview的应用(删除)
    Javascript无刷新TreeView
    利用GridView显示主细表并添加打开、关闭功能
    UpdatePanel 控件简介
    Asp.net中使用fckeditor在线编辑器配置
    C#实现水晶报表绑定数据并实现打印
    Asp.net 2.0 Treeview 动态填充,并实现无限级树
    SQL数据库建表前期优化
    C#发送Email邮件方法总结
    ASP.NET防SQL注入脚本程序
  • 原文地址:https://www.cnblogs.com/BrokenEaves/p/14702697.html
Copyright © 2011-2022 走看看