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. 一个有用的排序函数,array_multisort(),下面的一个用法是根据二维数组里的一个字段值的大小,对该二维数组进行重新排序

    从二维数组$cashes中取出一列 'store_id'(二维数组中的每个一维数组都有的字段),按照这个的大小排序,对二维数组$caches里面的一维数组进行重新排序 实际应用如下 想让相同部门的排在 ...

  2. C#上手练习5(GOTO语句)

    C# goto 语句用于直接在一个程序中转到程序中的标签指定的位置,标签实际上由标识符加上冒号构成 语法形式如下. goto Labell;    语句块 1;Labell    语句块 2; 如果要 ...

  3. C# Task ContinueWith

    static void Main(string[] args) { Task firstTask = Task.Run(() => { PrintPlus(); }); Task secondT ...

  4. Go template高级用法、深入详解、手册、指南、剖析

    入门示例 以下为test.html文件的内容,里面使用了一个template语法{{.}}. <!DOCTYPE html> <html> <head> <m ...

  5. MySQL学习——操作表

    MySQL学习——操作表 摘要:本文主要学习了使用DDL语句操作表的方法. 创建表 语法 create table 表名 [表定义选项] [表选项]; 表定义选项 用来创建定义表的结构,由列名(col ...

  6. npm命令集合

    1.npm初始化项目:npm init 或者 npm init --yes 生产 package.json文件 2.下载package.json安装包: npm install 缩写 npm i

  7. css3自适应布局单位vw,vh详解

    视口单位(Viewport units) 什么是视口? 在桌面端,视口指的是在桌面端,指的是浏览器的可视区域:而在移动端,它涉及3个视口:Layout Viewport(布局视口),Visual Vi ...

  8. Dynamics CRM中的注释(Note)及RollupRequest消息初探

    关注本人微信和易信公众号: 微软动态CRM专家罗勇 ,回复161或者20151015可方便获取本文,同时可以在第一时间得到我发布的最新的博文信息,follow me! 注释,这个实体的架构名称是Ann ...

  9. sql使用cte表达式进行递归查询

    --递归获取所有子节点 with temp as ( select * from MK_Base_Department where F_DepartmentId='5f258320-c1b7-42a4 ...

  10. python中Socket的使用

    说明 前一段时间学习python网络编程,完成简单的通过python实现网络通信的功能.现在,将python中Socket 通信的基本实现过程做一个记录备份. Socket通信 python 中的so ...