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. 关于wordpress其他分类页面正常单一分类页面白屏的解决

    关于wordpress其他分类页面正常单一分类页面白屏的解决 朋友的一个站,10个分类页面,9个正常,其中一个打开白屏或者500错误 下载 nginx的日志文件查看 收到如下提示: ecv() fai ...

  2. 聊聊 Vue 中 title 的动态修改

    由于之前的 Vue 项目打包成果物一直是嵌入集成平台中,所以一直没有关注过项目的 title.直到最近,突然有个需求,要求点击按钮在集成平台外新开一个页面,此时我才发现,原来我的项目的 title 一 ...

  3. MySQL 表和列的注释

    像代码一样,可以为表以及表中的列添加注释,方便其他人知晓其功能.对于一些字段,在经过一定时间后,创建者未必也能想起其具体的含意,所以注释显得尤为重要. 注释的添加 注释的添加是通过在定义表或列的时候在 ...

  4. boolean matches(String regex)正则表达式判断当前字符串是否满足格式要求

    package seday02;/*** boolean matches(String regex) * 使用给定正则表达式判断当前字符串是否满足格式要求,满足 则返回true. * 注意:此方法是做 ...

  5. Java生鲜电商平台-电商支付流程架构实战

    Java生鲜电商平台-电商支付流程架构实战 说明:我一直秉承的就是接地气的业务架构实战.我的文章都有一个这样的核心. 1. 业务场景 2. 解决问题. 3.代码实现. 4.代码重构. 5.总结与复盘. ...

  6. iOS音频与视频的开发(一)-使用AVAudioPlayer播放音乐、使用AVPlayerViewController播放视频

    iOS的多媒体支持非常强大,它提供了多套支持多媒体的API,无论是音频.视频的播放,还是录制,iOS都提供了多种API支持.借助于这些API的支持,iOS应用既可以查看.播放手机相册中的照片.视频,也 ...

  7. bayaim_linux_configure_oracle

    ---------------------------bayaim_linux_install_oracle_11g--2.0------------------------------------- ...

  8. [日常] gocron源码阅读-go语言的变量

    变量的声明形式是这样的 var 变量名字 类型 = 表达式var ( AppVersion = "1.5" BuildDate, GitCommit string)类型可以被省略, ...

  9. debian 10 安装fcitx 后设置

    设置好代理后 apt-get install fcitx 后 仍然看不到 语言栏 可能是 在设置fcitx时 的字体太小了 输入法配置 ->外观->字体 加大 即可

  10. 安全类和远程类shell脚本

    批量杀php小马脚本 find /home/hatdot/ -name "*.php" |xargs egrep "phpspy|c99sh|milw0rm|eval\( ...