RMAN命令汇总

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

1.进入RMAN

  • 进入本地数据库

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

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

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

2.RMAN基础命令

  • 启动关闭数据库

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

    1. RMAN> host
  • 执行SQL语句

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

    1. RMAN>show all;
    2. CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default 设置的保留策略冗余度为1
    3. CONFIGURE BACKUP OPTIMIZATION OFF; # default 备份优化为off
    4. CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default 默认的配置通道为磁盘,如果是sbt就为磁带设备
    5. CONFIGURE CONTROLFILE AUTOBACKUP OFF; # default 默认配置controlfile不自动备份
    6. CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # default controlfile自动备份的位置
    7. CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default 备份类型为backupset,备份类型的并行度为1
    8. CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default 数据文件备份的拷贝为1
    9. CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default 归档日志文件备份的拷贝为1
    10. CONFIGURE MAXSETSIZE TO UNLIMITED; # default 备份集大小不设上限
    11. CONFIGURE ENCRYPTION FOR DATABASE OFF; # default 数据库加密技术为off
    12. CONFIGURE ENCRYPTION ALGORITHM 'AES128'; # default 数据库加密算法'AES128'
    13. CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default 归档日志的删除策略为NONE
    14. 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参数设置

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

3.RMAN基本备份命令

  • 数据库进行备份

    1. 备份数据库

      1. RMAN>BACKUP DATABASE;

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

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

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

    1. 备份表空间

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

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

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

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

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

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

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

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

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

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

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

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

    1. 利用BACKUP ARCHIVELOG命令备份

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

      1. RMAN> BACKUP DATABASE PLUS ARCHIVELOG;

      其中PLUS ARCHIVELOG的命令解释:

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

      1. MAN> LIST BACKUP OF ARCHIVELOG ALL;

4.rman其他命令

RMAN的删除命令

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

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

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

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

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

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

    1. RMAN> backup archivelog all delete input;

RMAN report命令

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

  • 查看过期备份

    1. RMAN>report obsolete;

RMAN crosscheck命令

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

  • 检查所有归档文件:

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

    1. RMAN>crosscheck backup;

rman validate命令

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

  • 测试任一特定备份集

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

    1. RMAN>backup validate database archivelog all;

RMAN的一些视图

  • 监控和验证RMAN作业

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

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

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

    1. 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备份脚本

  1. 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这个参数的意义

  1. BACKUP AS COMPRESSED BACKUPSET SKIP INACCESSIBLE FILESPERSET 2 DATABASE

6.RMAN 恢复

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

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

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

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

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

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

      1. RMAN> RESTORE DATABASE;
      2. RMAN> RECOVER DATABASE DELETE ARCHIVELOGS SKIP TABLESPACE TEMP;

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

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

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

    3. 打开数据库

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

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

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

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

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

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

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

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

      1. 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. 制造案例数据

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

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

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

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

【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. Java泛型类型擦除与运行时类型获取

    Java的泛型大家都知道是类型擦除的方式实现的,“编译器会进行泛型擦除”是一个常识了(实际擦除的是参数和自变量的类型).“类型擦除” 并非像许多开发者认为的那样,在 <..> 符号内的东西 ...

  2. 【LOJ#2162】【POI2011】Garbage(欧拉回路)

    [LOJ#2162][POI2011]Garbage(欧拉回路) 题面 LOJ 题解 首先有一个比较显然的结论,对于不需要修改颜色的边可以直接删掉,对于需要修改的边保留.说白点就是每条边要被访问的次数 ...

  3. 在RPA中使用Python批量生成指定尺寸的缩略图!比Ps好用!

    前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取 htt ...

  4. crm-2

    1.分页 web必备的功能 1)批量制造测试数据 定义一个空列表用于存储 orm对象 ,models.表名(字段=...)创建orm对象append到列表 ,使用bulk_create(对象列表)一次 ...

  5. Apache2 在Linux环境下的安装

    安装Apache2: apt-get install apache2 启动Apache2服务: service apache2 start 在终端运行启动后,打开浏览器URL访问 http://loc ...

  6. Python工具库分享

    漏洞及渗透练习平台: WebGoat漏洞练习平台: https://github.com/WebGoat/WebGoat webgoat-legacy漏洞练习平台: https://github.co ...

  7. Mysql—用户表详解(mysql.user)

    MySQL是一个多用户管理的数据库,可以为不同用户分配不同的权限,分为root用户和普通用户,root用户为超级管理员,拥有所有权限,而普通用户拥有指定的权限. MySQL是通过权限表来控制用户对数据 ...

  8. vue+node+elementUI实现注册功能

    后端代码 在后端的文件 routes文件夹下的connect.js文件中 // 引入mysql const mysql = require('mysql'); // 创建连接对象 const conn ...

  9. Html学习之十四(阴影文字的设计)

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  10. C++ class内的 < 和 > 重载,大于号,小于号,重载示例。

    #include <iostream> // overloading "operator = " outside class // < 和 > 是二元操作符 ...