RMAN命令汇总

2013年写了关于RMAN命令的汇总,先转换为MD文档,温故而知新。

1.进入RMAN

  • 进入本地数据库

    [oracle@oracle-n1 ~]$ rman target /
  • 进入远程数据库

     [oracle@oracle-n1 ~]$ rman target zsd/zsd@zsddb_1.9
  • 使用日志功能

    [oracle@oracle-n1 logs]$ rman target / msglog /data/backup/logs/full_dbbackup_`date +%y%m%d`.log

2.RMAN基础命令

  • 启动关闭数据库

    RMAN> shutdown immediate
    RMAN> startup
  • 执行操作系统命令

    RMAN> host
  • 执行SQL语句

    RMAN> SQL 'ALTER SYSTEM SWITCH LOGFILE';
    需要注意的一点是,rman中的sql环境不能执行SELECT语句,就算执行不报错,也不出结果。 RMAN> SQL 'select * from member.test';
    sql statement: select * from member.test (可以看出没有任何数据显示)
  • 查看默认RMAN配置

    RMAN>show all;
    
    CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default  设置的保留策略冗余度为1
    CONFIGURE BACKUP OPTIMIZATION OFF; # default 备份优化为off
    CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default 默认的配置通道为磁盘,如果是sbt就为磁带设备
    CONFIGURE CONTROLFILE AUTOBACKUP OFF; # default 默认配置controlfile不自动备份
    CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # default controlfile自动备份的位置
    CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default 备份类型为backupset,备份类型的并行度为1
    CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default 数据文件备份的拷贝为1
    CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default 归档日志文件备份的拷贝为1
    CONFIGURE MAXSETSIZE TO UNLIMITED; # default 备份集大小不设上限
    CONFIGURE ENCRYPTION FOR DATABASE OFF; # default 数据库加密技术为off
    CONFIGURE ENCRYPTION ALGORITHM 'AES128'; # default 数据库加密算法'AES128'
    CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default 归档日志的删除策略为NONE
    CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/data/ora11g/product/11.2.0/db_1/dbs/snapcf_zsddb.f'; # default controlfile的快照命名为'/data/ora11g/product/11.2.0/db_1/dbs/snapcf_zsddb.f'
  • 修改默认RMAN参数设置

    configure retention policy to recovery window of 7 days;
    configure controlfile autobackup on;
    configure controlfile autobackup format for device type disk to '/data/backup/rman/con_%F';

3.RMAN基本备份命令

  • 数据库进行备份

    1. 备份数据库

      RMAN>BACKUP DATABASE;

      注意:也可以指定备份的位置:RMAN> BACKUP DATABASE FORMAT '/data/backup/rman/bak_%U';

    2. list命令查看刚刚创建的备份信息:

      RMAN>list backup of database;
  • 表空间进行备份

    1. 备份表空间

      RMAN>backup tablespace HDMEMBER;
    2. 通过LIST BACKUP 查看一下备份

      RMAN>list backup of TABLESPACE HDMEMBER;
  • 备份指定数据文件

    1. 查看对应的数据文件及其序号

      select file_name,file_id,tablespace_name from dba_data_files
    2. 再通过BACKUP DATAFILE备份指定序号的数据文件

      RMAN> BACKUP DATAFILE n;
    3. 通过list backup查看备份

      RMAN> LIST BACKUP OF DATAFILE n;
  • 备份控制文件

    1. 第一种,做任何备份的时候,自动备份控制文件

      RMAN> CONFIGURE CONTROLFILE AUTOBACKUP ON;
    2. 第二种,手动执行控制文件备份

      RMAN> BACKUP CURRENT CONTROLFILE;
    3. 第三种,执行BACKUP时指定INCLUDE CURRENT CONTROLFILE参数

      RMAN> BACKUP DATABASE INCLUDE CURRENT CONTROLFILE;
    4. 查看备份的控制文件

      RMAN> LIST BACKUP OF CONTROLFILE;
    5. 使用alter database backup controlfile备份控制文件

      SQL> alter database backup controlfile to trace;
      或者
      SQL> alter database backup controlfile to trace as '/data/controlfile1.cof'; (这样你可以查看controlfile的构成)
  • 备份归档日志文件

    1. 利用BACKUP ARCHIVELOG命令备份

      RMAN> BACKUP ARCHIVELOG ALL;
    2. BACKUP过程中利用PLUS ARCHIVELOG参数备份

      RMAN> BACKUP DATABASE PLUS ARCHIVELOG;

      其中PLUS ARCHIVELOG的命令解释:

           1>.运行ALTER SYSTEM ARCHIVE LOG CURRENT语句对当前redolog进行归档。 	
      
           2>.执行BACKUP ARCHIVELOG ALL命令备份所有已归档日志。 	
      
           3>.执行BACKUP命令对指定项进行备份。 	
      
           4>.再次运行ALTER SYSTEM ARCHIVE LOG CURRENT对当前redolog归档。 	
      
           5>.对新生成的尚未备份的归档文件进行备份。
    3. 查看已备份的归档日志片段:

      MAN> LIST BACKUP OF ARCHIVELOG ALL;

4.rman其他命令

RMAN的删除命令

  • 删除过期备份(RMAN会根据冗余策略确定备份是否过期)

    RMAN> delete obsolete;
  • 删除无效备份(通过CROSSCHECK命令核对备份集,如果发现备份无效,rman会将该备份集标记为EXPIRED状态。)

    RMAN> delete expired backup;
  • 删除特定备份集(通过list backup选择你所要删除的备份集)

    RMAN> delete backupset 12;
  • 删除特定备份片

    RMAN> delete backuppiece '/data/backup/zsd_bk.bak';
  • 删除所有备份集

    RMAN> delete backup;
  • 删除归档目录中已备份的归档日志

    RMAN> backup archivelog all delete input;

RMAN report命令

​ 主要是用于当前备份信息的分析,如哪些备份已经过期,哪些文件该备份,哪些备份不可用,哪些备份可以删除。

  • 查看过期备份

    RMAN>report obsolete;

RMAN crosscheck命令

​ 用来检查备份或归档物理文件的状态,如果物理文件存在,并且控制文件(或恢复目录)中有匹配记录,则标记该对象的状态为available(有效), 如果文件已经不存在,则标记该对象为expired(无效)

  • 检查所有归档文件:

    RMAN>crosscheck archivelog all;
  • 检查所有备份集:

    RMAN>crosscheck backup;

rman validate命令

​ RMAN能够检测物理和逻辑讹误。validate命令帮助保证备份文件存在于合适的位置,可读取,并且没有逻辑及物理讹误。

  • 测试任一特定备份集

    RMAN>validate backupset 9;
  • 测试整个数据库和归档日志备份集

    RMAN>backup validate database archivelog all;

RMAN的一些视图

  • 监控和验证RMAN作业

    V$RMAN_STATUS视图显示所有完成作业的状态以及命令

    SQL>select operation,status,start_time,end_time from v$rman_status;

    V$SESSION_LOGGOPS视图上查询估计备份的进度

    SQL>select opname,to_char(start_time,'DD-MON-YY HH24:MI') "Start of backup",Sofar,totalwork,elapsed_seconds/60 "ELAPSED TIME IN MINUTES",ROUND(sofar/totalwork*100,2) "Percentage Completed so far" from v$session_longops

5.rman实战

以下是一个实战的rman备份脚本

BACKUP AS COMPRESSED BACKUPSET SKIP INACCESSIBLE FILESPERSET 10 DATABASE PLUS ARCHIVELOG FILESPERSET 20 DELETE ALL INPUT;

其中:

COMPRESSED:表示压缩的备份

SKIP INACCESSIBLE:表示跳过不可读的文件。我们知道一些offline的数据文件只要存在于磁盘上就仍然可被读取,但是 可能有些文件已经被删除或移到它处造成不可读,加上这个参数就会跳过这些文件.

FILESPERSET 10:表示一个备份集中有多少个文件,这个就是一个备份集有10个文件。

以下是用来检验filesperset 2这个参数的意义

BACKUP AS COMPRESSED BACKUPSET SKIP INACCESSIBLE FILESPERSET 2 DATABASE

6.RMAN 恢复

明确两个概念:数据库修复(Restore)和数据库恢复(Recover)

restore:是指利用备份集的数据文件来替换已经损坏的数据库文件或者将其恢复到一个新的位置。

recover:是指应用所有重做日志,将数据库恢复到崩溃前的状态,或者应用部分redo,将数据库恢复到指定的时间点.(前提是:所有重做日志文件都在, 包括在线和归档的) 。

  • 对数据库进行完全介质恢复

    1. 启动数据库到加载状态:

      RMAN> SHUTDOWN IMMEDIATE;
      RMAN> STARTUP MOUNT;
    2. 执行恢复操作

      RMAN> RESTORE DATABASE;
      RMAN> RECOVER DATABASE DELETE ARCHIVELOGS SKIP TABLESPACE TEMP;

      注意:DELETE ARCHIVELOGS和SKIP TABLESPACE两个参数是可选择的,作用如下:

      DELETE ARCHIVELOGS:表示RMAN将在完成恢复过程后自动删除那些在恢复过程中修复的归档日志文件。

      SKIP TABLESPACE:跳过指定表空间,比如临时表,当然临时表空间即使你不跳过它也不会恢复的。

    3. 打开数据库

      RMAN> ALTER DATABASE OPEN;
  • 恢复表空间

    1. 启动数据库到加载状态

      RMAN> SHUTDOWN IMMEDIATE;
      RMAN> STARTUP MOUNT;
    2. 进行恢复操作

      RMAN> SQL 'ALTER TABLESPACE HDMEMBER OFFLINE IMMEDIATE';
      RMAN> RESTORE TABLESPACE HDMEMBER;
      RMAN> RECOVER TABLESPACE HDMEMBER;
      RMAN> SQL 'ALTER TABLESPACE HDMEMBER ONLINE';
    3. 打开数据库

      RMAN> ALTER DATABASE OPEN;
  • 恢复数据文件

    1. 启动数据库到加载状态

      RMAN> SHUTDOWN IMMEDIATE;
      RMAN> STARTUP MOUNT;
    2. 进行恢复操作

      RMAN>SQL 'ALTER DATABASE DATAFILE 5 OFFLINE';
      RMAN> RESTORE DATAFILE 5;
      RMAN> RECOVER DATAFILE 5;
      RMAN>SQL 'ALTER DATABASE DATAFILE 5 ONLINE';
    3. 打开数据库

      RMAN> ALTER DATABASE OPEN;

      提示:查询对应的数据文件,表空间和数据文件序号:

      附个SQL:用来查询数据文件,临时文件与表空间对应及数据文件序号:

      set linesize 999;

      select ts.tablespace_name, df.file_name, df.file_id, tf.file_name

      from dba_tablespaces ts, dba_data_files df, dba_temp_files tf

      where ts.tablespace_name = df.tablespace_name(+)

      and ts.tablespace_name = tf.tablespace_name(+);

  • 示例:归档模式下,假设某数据文件丢失,恢复该数据文件

    1. 制造案例数据

      sqlplus /nolog
      conn member/member
      create table zsd(name varchar2(50));
      insert into zsd values ('test1');
      insert into zsd values ('test2');
      insert into zsd values ('test3');
    2. 关闭,删除文件,启动数据库

      SQL> conn / as sysdba
      SQL> shutdown immediate;
      SQL> host
      [oracle@oracle-n1 ~]$ rm -rf /data/ora11g/oradata/zsddb/hdmember01.dbf
      SQL> startup
      SQL> archive log list(查看一下是否归档)
    3. 查看一下示例,并恢复数据库

      select instance_name,status from v$instance
      set oracle_sid=zsddb
      rman target /
      RMAN> restore datafile '/data/ora11g/oradata/zsddb/hdmember01.dbf';
      RMAN> recover datafile '/data/ora11g/oradata/zsddb/hdmember01.dbf';
      RMAN> alter database open;
  • 示例:丢失控制文件的恢复

    SQL> shutdown immediate;
    [oracle@oracle-n1 ~]$ rm -rf /data/ora11g/oradata/zsddb/control*
    进入rman
    rman target /
    随意指定一个DBID
    RMAN> set dbid 3391142503
    RMAN> restore controlfile from '/data/ora11g/product/11.2.0/db_1/dbs/con_c-1552557445-20130520-06';
    RMAN> sql 'alter database mount';
    RMAN> restore database;
    RMAN> recover database;
    RMAN> sql 'alter database open resetlogs';
    (还必须重建临时表空间)

【Oracle】 RMAN命令汇总的更多相关文章

  1. Oracle rman 命令详解

    一.list常用命令总结备忘 list命令列出控制文件.RMAN恢复目录中备份信息, 是我们对所有可见的数据库备份文件的一个最直观的了解的方法 list incarnation;    list ba ...

  2. Oracle rman 命令总结

    --登录rman  rman target /  rman target sys/passwork  rman target sys/passwork nocatalog   (控制文件方式)  rm ...

  3. 【oracle】oracle常用命令汇总

    查看数据库状态(普通用户登录要保证数据库是open状态) SQL> select status from v$instance; 创建用户(新用户需要授予连接权限才能连上数据库) SQL> ...

  4. RMAN命令详解和常用汇总

    RMAN命令详解和常用汇总转摘汇集,日后使用本文链接:https://blog.csdn.net/EVISWANG/article/details/50448370http://blog.itpub. ...

  5. RMAN常用备份恢复命令汇总

    RMAN命令 1.独立命令  RMAN>shutdown immediate  RMAN>startup  RMAN>backup format 'd:\backup\%d_%s.b ...

  6. Windows平台使用RMAN命令自动删除Oracle过期归档日志的方法

    自动删除Oracle过期归档日志的思路如下: 1.编写自动执行的bat脚本文件: 2.Windows设置定期执行计划 OracleArchLogClear.bat D:/Oracle/product/ ...

  7. oracle:通过shell来运行rman命令

    每次都手工输入一批rman命令来进行备份等操作是很繁琐的事,有什么简便的方法吗?可以的,你可以把这批rman命令写在 shell命令里面,需要的时候,运行一下sh即可.下面是一个简单的实例: RMAN ...

  8. Oracle 数据库知识汇总篇

    Oracle 数据库知识汇总篇(更新中..) 1.安装部署篇 2.管理维护篇 3.数据迁移篇 4.故障处理篇 5.性能调优篇 6.SQL PL/SQL篇 7.考试认证篇 8.原理体系篇 9.架构设计篇 ...

  9. oracle RMAN使用

    一步一步学RMAN 备份 RMAN连接上ORACLE,WINDOWS下在命令模式下 RMAN TARGET / 连接本地数据库用的是本地认证模式.RMAN连接数据库必须在dedicate模式下.因此在 ...

随机推荐

  1. Jenkins—Master/Slave模式

    Jenkins可部署在windows或者linux平台上,项目系统的用户多数为windows系统.如果Jenkins部署在linux上,而自动化任务要在windows平台执行,那么就需要使用Jenki ...

  2. vue 渐变 进度条 progress

    废话 不多少说 ,直接上代码 新建文件 gradual-progress.vue <!-- * @Author: gfc * @Date: 2019-11-07 14:00:11 * @Last ...

  3. 疑问:Spring 中构造器、init-method、@PostConstruct、afterPropertiesSet 孰先孰后,自动注入发生时间

    一.前言 spring的一大优点就是扩展性很强,比如,在spring bean 的生命周期中,给我们预留了很多参与bean 的生命周期的方法.大致梳理一下,有以下几种: 通过实现 Initializi ...

  4. Fusionstorage的逻辑架构

    Fusionstorage Fusionstorage的逻辑架构 Mdc:元数据控制,实现对分布式集群的状态控制,以及控制数据分布式规则,数据重建规则等,mdc默认部署在3个节点的zk盘上,形成mdc ...

  5. 【git】代码回退指定commit

    [注意:如果提交的错误代码较少,可以在本地修改成 commit之前的正确代码样子,然后再提交一次即可.不用麻烦的操作回滚.] 开发人员错误将代码提交到gitlab的远程dev分支,回滚方法如下: 1. ...

  6. RabbitMQ的消息确认ACK机制

    1.什么是消息确认ACK. 答:如果在处理消息的过程中,消费者的服务器在处理消息的时候出现异常,那么可能这条正在处理的消息就没有完成消息消费,数据就会丢失.为了确保数据不会丢失,RabbitMQ支持消 ...

  7. python处理oracle数据库的返回数据

    上代码: import SqlHelper.ORACLE as ORA import pandas as pd if __name__ == '__main__': #连接数据库 ms = ORA.O ...

  8. C++ 流插入"<<"和流提取">>"运算符的重载

    01 流插入<<运算符的重载 C++ 在输出内容时,最常用的方式: std::cout << 1 <<"hello"; 问题: 那这条语句为什么 ...

  9. vi 上下左右变ABCD乱码解决方法

    CentOS echo "set nocompatible" >> ~/.vimrc source ~/.vimrc debian sudo apt-get remov ...

  10. 如何编写 maptalks plugin

    前面写过 maptalks plugin ( ArcGISTileLayer ),有读者留言说文章写得太精简,根据文章给出的核心代码没办法写出一个完整的 plugin ( 文中有完整 demo 地址, ...