码迷,mamicode.com
首页 > 其他好文 > 详细

RMAN

时间:2016-01-22 03:25:17      阅读:179      评论:0      收藏:0      [点我收藏+]

标签:rman

RAMN概述

 恢复管理器,可以跨越不同的操作系统进行数据库的备份与恢复

 RMAN的优势:

   Rman操作简单 自动化功能强

   Rman可以忽略备份后未发生改变的block

   使用rman可以轻松的创建备份或stabdby数据库

   自动执行并行的备份和还原操作

   可以不实际执行的情况下检查文件是否被正确的备份或还原


第一种连接方式

[oracle@sq ~]$ rman

RMAN> connect target /


第二种连接方式

[oracle@sq ~]$ rman target /


======================================

立即关闭数据库

SQL> shutdown immediate;


启动实例并加载数据库,但不打开

SQL> startup mount


更改数据库为归档模式

SQL> alter database archivelog;


打开数据库

SQL> alter database open;


启用自动归档

SQL> alter system archive log start;


查看归档状态

SQL> archive log list;


全库恢复要在mount状态

表恢复可以在open状态


=========================================

[oracle@sq admin]$ rman target /

RMAN> list backup; (查看备份列表)


(备份表空间)

RMAN> backup tablespace users;

RMAN> sql "alter system flush buffer_cache";(rman用sql,清空缓存)


[oracle@sq orcl]$ rm -rf users01.dbf(删除数据文件)

SQL> startup force

ORA-01110: data file 4: ‘/u01/app/oracle/oradata/orcl/users01.dbf‘

(报错4号文件 没有找到)


SQL> !

[oracle@sq ~]$ rman target /

RMAN> restore datafile 4;(恢复文件)


RMAN> sql "alter database datafile 4 online";(数据文件在线)

SQL> startup force(正常运行)


RAMAN为什么能找到恢复的路径,因为RAMN在备份数据文件的同时也备份了控制文件,通过控制文件的路径来恢复数据文件。一定要记住当数据文件有更新要重新备份。


备份位置

[oracle@sq123 dbs]$ cd /oracle/app/flash_recovery_area/TEST/backupset/

(Rman自动备份控制文件和参数文件

如果不配置,备份普通表空间的时候就不自动备份控制文件和参数文件)

=======================================

全库备份

1.

RMAN> backup database;

RMAN> list backup; 


2.

[oracle@sq123 ~]$ cd /oracle/app/oradata/TEST/

[oracle@sq123 TEST]$ rm -rf *


3.SQL> startup force (找不到控制文件)


4.[oracle@sq123 TEST]$ cd /oracle/app/flash_recovery_area/TEST/backupset/2012_03_12/

(找到o1_mf_ncsnf_TAG20120312T004722_7osowxyj_.bkp)

 

5.恢复控制文件

Rman自动备份控制文件和参数文件


RMAN> restore controlfile from ‘/oracle/app/flash_recovery_area/TEST/backupset/2012_03_12/o1_mf_ncsnf_TAG20120312T004722_7osowxyj_.bkp‘;


RMAN> alter database mount;(数据库可以mount)


6.[oracle@sq123 TEST]$ ls (控制文件恢复回来了)


7.恢复数据文件

RMAN> restore database;

[oracle@sq123 TEST]$ ls(数据文件恢复回来了)


8.RMAN> alter database open resetlogs;(报错)

  RMAN> recover database;(报错)

  RMAN> alter database open resetlogs; (可以打开数据库)

(restore 是还原,文件级的恢复。就是物理文件还原

  recover 是恢复,数据级的恢复。逻辑上恢复)


SQL> startup force(已经能够重启 恢复成功)

[oracle@sq123 TEST]$ ls (日志文件也有了)


============================================================

多通道全库备份(提高效率)


run{

allocate channel c1 type disk format ‘/home/oracle/backup1/%u‘;

allocate channel c2 type disk format ‘/home/oracle/backup2/%u‘;

sql ‘alter system archive log current‘;

backup database plus archivelog delete all input;

sql ‘alter system archive log current‘;

}





((

%c copy ID

%p backup piece ID

%s backup set ID

%e log sequence

%h log thread ID

%d database name

%n database name(x填充到8个字符)

%I DBID

%f file ID

%F DBID, day, month, year, and sequencer的复合

%N tablespace name

%t timestamp

%M mh mm格式

%Y year yyyy格式

))

=============================================================

RMAN 增量备份


1。

RMAN> backup incremental level 0 database format=‘/home/oracle/db_bak/%u‘;

(level=0 0级别为全库备份  %u生成唯一一个文件名)

(增量备份第一备份要为全库备份)


2.1SQL> create table c1 as select * from dba_objects;

   (产生4w多行记录 占用的块较多)



(一级增量备份)

(增量备份级别:

 1.differential 差异备份 认同同级备份.

 2.cumulative 累积增量备份 不认同同级备份 优点:恢复时不需要读取过多的备份集)



2.2 差异备份 

RMAN> backup INCREMENTAL LEVEL 1 DATABASE format=‘/home/oracle/db_bak/%u‘;



3.1

SQL> create table c2 (id int);

SQL> insert into c2 values(123);

SQL> commit;

(产生的数据较少)


3.2  累积增量备份

RMAN> backup INCREMENTAL LEVEL 1 CUMULATIVE DATABASE format=‘/home/oracle/db_bak/%u‘;


3.3 

验证

比较两次产生的备份片, 3.2步骤 备份片大于 3.1步骤地大小 

---------------------------------------------------------------

脚本备份

[oracle@sq123 ~]$ vi fullbackup.sh

#!/bin/bash

source ~/.bash_profile

$ORACLE_HOME/bin/rman target / <<EOF

run {

allocate channel C1 type disk FORMAT ‘/home/oracle/db_bak/%u‘;

allocate channel C2 type disk FORMAT ‘/home/oracle/db_bak/%u‘;

backup incremental level=0 database format=‘/home/oracle/db_bak/%u‘;

}

exit;

EOF



[oracle@sq123 ~]$ chmod 777 fullbackup.sh 

[oracle@sq123 ~]$ ./fullbackup.sh 执行


-----------------------------------------------------

RMAN> list backup;

RMAN> delete backupset 1; 删除一个


RMAN> delete backup;

YES

(如果备份集中原数据文件被删除 delete检测时出错

需要先执行RMAN> CROSSCHECK backup; 检测备份)


检查备份文件是否有效

RMAN> validate backupset 1;


删除陈旧的备份(超出冗余保留时间)

   delete obsolete;

报告陈旧的备份文件

   report  obsolete;

报告需要备份的文件

   report  need backup;


--------------------------------------------------------

rman catalog

采用RMAN方式进行备份,默认是采用NOCATALOG方式的。在这种情况下,LIST出来的备份信息写到了CONTROL FILE里,如果控制文件损坏,如果只能启动到NOMOUNT状态,那么备份信息就不可用。ORACLE建议我们采用CATALOG 方式,将控制文件的LIST信息同步到CATALOG DB中,这样当控制文件有问题时,我们也可以借用于CATALOG DB。


目录数据库:8.18

目标数据库:8.111

环境准备:

两端开启归档模式

两端开启监听

两端传输

DB111 =

  (DESCRIPTION =

    (ADDRESS_LIST =

      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.8.111)(PORT = 1521))

    )

    (CONNECT_DATA =

      (SERVICE_NAME = TEST)

    )

  )


DB18 =

  (DESCRIPTION =

    (ADDRESS_LIST =

      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.8.18)(PORT = 1521))

    )

    (CONNECT_DATA =

      (SERVICE_NAME = TEST)

    )

  )







1.在目录数据库中创建恢复目录所用表空间   

SQL> create tablespace rmants datafile ‘/home/oracle/rmants.dbf‘ size 100m;


2.在目录数据库中创建RMAN   用户并授权   

SQL> create user rman identified by rman default tablespace rmants quota unlimited on rmants;


SQL> grant recovery_catalog_owner to rman;

SQL> grant resource to rman;

SQL> grant connect to rman;



3.在目录数据库中创建恢复目录 

[oracle@oracle18 ~]$ rman catalog rman/rman

RMAN> create catalog tablespace rmants;


4.注册目标数据库到恢复目录

[oracle@oracle18 ~]$ rman target sys/123456@db111  

RMAN> connect catalog rman/rman@db18

RMAN> register database;



5.下面就可以使用RMAN了 

备份些东西

删除目标库控制文件

修复控制文件


[oracle@oracle18 ~]$ rman target sys/123456@db111  

RMAN> connect catalog rman/rman@db18

RMAN> list backup;

还能看到备份信息





===========================================================

set controlfile autobackup format for device type disk to ‘/home/oracle/cf_%F‘;


RMAN> restore controlfile from autobackup; (前提控制文件有效状态)


查看dbid


select dbid from v$database
















本文出自 “linux” 博客,谢绝转载!

RMAN

标签:rman

原文地址:http://chenjisong.blog.51cto.com/7858025/1737392

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!