【Oracle】 RMAN命令汇总

RMAN命令汇总

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

1.进入RMAN

  • 进入本地数据库

    [[email protected] ~]$ rman target / 
  • 进入远程数据库
     [[email protected] ~]$ rman target zsd/[email protected]_1.9
  • 使用日志功能
    [[email protected] 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
      [[email protected] ~]$ 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;
    [[email protected] ~]$ 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';
    (还必须重建临时表空间) 

原文地址:https://www.cnblogs.com/zhangshengdong/p/11725057.html

时间: 2024-10-09 20:01:08

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

Oracle rman 命令详解

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

Oracle rman 命令总结

--登录rman  rman target /  rman target sys/passwork  rman target sys/passwork nocatalog   (控制文件方式)  rman target sys/passwork catalog     (恢复目录方式) --查看参数  show all --修改保存天数  用sqlplus修改备份信息在控制文件中保留的天数  show parameter control_file_record_keep_time alter s

oracle 常用命令汇总

登入oracle sqlplus / as sysdba SQL> startup ---启动oracle 数据库 SQL> shutdown immediate --停止数据库 conn smsdb/password --连接到smsdb用户 回到终端机模式,输入: $ lsnrctl status 检查看看监听器是否有启动 如果没有启动,可以输入: $ lsnrctl start emctl 另外也可以发现http://localhost.localdomain:1158/em 目前是没有

RMAN常用备份恢复命令汇总

RMAN命令 1.独立命令  RMAN>shutdown immediate  RMAN>startup  RMAN>backup format 'd:\backup\%d_%s.bak' tablespace users;2.作业命令  RMAN>run { backup format 'd:\backup\$d_%s.bak' tablespace users; }3.运行SQL命令  RMAN>sql 'alter system switch logfile' ;4.运

Oracle RMAN备份深入解析--联机备份

Oracle RMAN备份深入解析--联机备份 RMAN> backup database plus archivelog;    1.首先,进程使用alter system archivelog current命令完成了日志切换操作.    2.进程将现存所有归档重做日志备份    3.开始执行实际的数据库备份操作,此时会发生一次日志切换(alter system archivelog current),同时RMAN备份剩余的归档重做日志(使用backup archivelog all命令).

Oracle RMAN备份与还原注意事项

1 备份文件管理 如果要删除之前的备份,不要手动去目录下删除,应该在rman命令模式下使用删除命令,否则虽然在磁盘上把物理备份文件删除了,但是使用备份查看命令会一直看到已经删除的备份文件 list backup; 查看当前系统有哪些可用的备份文件 list backupset summary; 查看备份文件的概要信息 crosscheck backup; 更新rman备份信息,如果有损坏的不可用的,或者手动删除的物理备份文件都可以通过此命令查看ex delete expired backup;

ORACLE RMAN备份及还原 RMAN可以进行增量备份:数据库,表空间,数据文件

ORACLE RMAN备份及还原 RMAN可以进行增量备份:数据库,表空间,数据文件 只有使用过的block可以被备份成backup set 表空间与数据文件对应关系:dba_data_files / v$datafile_header 在noarchivelog模式下,可以使用RMAN备份read-only和offline的表空间 ORACLE RMAN停机备份: 备份 RMAN连接上ORACLE,WINDOWS下在命令模式下 RMAN TARGET / 连接本地数据库用的是本地认证模式.RM

ORACLE RMAN备份--差异增量与累积增量的策略实例图

转自原文 ORACLE RMAN备份--差异增量与累积增量的策略实例图 BACKUP 命令在不显式指定的情况下,默认情况下会选择Differential方式,即差异增量备份.不过从恢复效率的角度考虑,Cumulative方式的增量备份表现更好一些,毕竟不需要读取那么多备份集了. 注意: 在10g之前的版本中,增量备份可以有 n 多个级别,从0级.1级.2级……这样顺序排列直到 n 级( n 为小于等于4的正整数). 在10g版本中,Oarcle的官方文档明确指出增量备份只有0和1两种级别(太多增

Oracle RMAN备份策略

建立增量备份:如果数据库运行于不归档模式下,只能在数据库干净关闭的情况下 ( 以 normal .immediate . transactional 方式关闭 ) 才能进行一致性的增量备份,如果数据库运行于归档模式下,那即可以在数据库关闭状态进行,也可以在数据库打开状态进行备份.再次说明了打开归档模式的优势,归档日志也就是多占些磁盘空间,可也相当于又给数据加了层保护.建立增量备份,实质就是一个参数 incremental level=n ,在执行 backup命令时加上即可,例如,建立一个增量级