您的位置:首页 > 数据库 > Oracle

day15_oracle——RMAN

2016-03-21 21:31 288 查看
RAMN概述 恢复管理器,可以跨越不同的操作系统进行数据库的备份与恢复 RMAN的优势: Rman操作简单 自动化功能强 Rman可以忽略备份后未发生改变的block 使用rman可以轻松的创建备份或stabdby数据库 自动执行并行的备份和还原操作 可以不实际执行的情况下检查文件是否被正确的备份或还原
第一种连接方式[oracle@sq ~]$ rmanRMAN> 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 forceORA-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.1SQL> 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/bashsource ~/.bash_profile$ORACLE_HOME/bin/rman target / <<EOFrun {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/rmanRMAN> create catalog tablespace rmants;
4.注册目标数据库到恢复目录[oracle@oracle18 ~]$ rman target sys/123456@db111 RMAN> connect catalog rman/rman@db18RMAN> register database;

5.下面就可以使用RMAN了 备份些东西删除目标库控制文件修复控制文件
[oracle@oracle18 ~]$ rman target sys/123456@db111 RMAN> connect catalog rman/rman@db18RMAN> 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

来自为知笔记(Wiz)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: