RMAN常用操作

1.进入rman

(1)进入本地数据库

[oracle @ oracle-n1〜]$ 目标 /

(2)进入远程数据库

[oracle @ oracle-n1〜]$ 目标rman目标zsd/zsd@zsddb_1.9

(3)使用日志功能

[oracle @ oracle-n1日志]$ 目标 / msglog /data/backup/logs/full_dbbackup_`date +%y%m%d`.log

2.rman基础命令

(1)启动关闭数据库

RMAN> 立即关闭

RMAN> 启动

(2)执行操作系统命令

RMAN> 主办

(3)执行SQL语句

RMAN> SQL“更改系统开关日志文件”;

需要注意的一点是,rman中的sql环境不能执行SELECT语句,就算执行不报错,也不出结果。

RMAN> SQL '选择 * 来自 member.test’;

sql语句: 选择 * from member.test (可以看出没有任何数据显示)

(4)查看默认RMAN配置

RMAN>显示所有;

将保留策略配置为冗余 1; # default 设置的保留策略冗余度为1

配置备份优化关闭; # default 备份优化为off

将默认设备类型配置为磁盘; # default 默认的配置通道为磁盘,如果是sbt就为磁带设备

配置控制文件自动备份关闭; # default 默认配置controlfile不自动备份

将设备类型磁盘的控制文件自动备份格式配置为“%F”;

# default controlfile自动备份的位置

配置设备类型磁盘并行 1 备份类型到备份集;

# default 备份类型为backupset,备份类型的并行度为1

将设备类型磁盘的数据文件备份副本配置为 1; # default 数据文件备份的拷贝为1

将设备类型磁盘的归档日志备份副本配置为 1;

# default 归档日志文件备份的拷贝为1

将 MAXSETSIZE 配置为无限; # default 备份集大小不设上限

为关闭数据库配置加密; # default 数据库加密技术为off

配置加密算法‘AES128′; # default 数据库加密算法’AES128’

将归档日志删除策略配置为无; # default 归档日志的删除策略为NONE

将快照控制文件名称配置为

‘/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’

(5)修改默认RMAN参数设置

#配置保留策略以恢复窗口 7 天;

#配置控制文件自动备份;

#将设备类型磁盘的控制文件自动备份格式配置为‘/data/backup/rman/con_%F’;

3.rman基本备份命令

(1)对数据库进行备份

* 备份数据库

RMAN>备份数据库;

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

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

RMAN>列出数据库的备份;

(2)对表空间进行备份

* 备份表空间

RMAN>备份表空间 HDMEMBER;

* 通过LIST BACKUP 查看一下备份

RMAN>列出 TABLESPACE HDMEMBER 的备份;

(3)备份指定数据文件

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

选择文件名,file_id,来自 dba_data_files 的 tablespace_name

* 再通过BACKUP DATAFILE备份指定序号的数据文件

RMAN> 备份数据文件 n;

* 通过list backup查看备份

RMAN> 列表备份数据文件 n;

(4)备份控制文件

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

RMAN> 配置控制文件自动备份;

* 第二种,手动执行控制文件备份

RMAN> 备份电流控制文件;

* 第三种,执行BACKUP时指定INCLUDE CURRENT CONTROLFILE参数

RMAN> 备份数据库包括当前控制文件;

* 查看备份的控制文件

RMAN> 控制文件的列表备份;

* 使用alter database backup controlfile备份控制文件

的SQL> 更改要跟踪的数据库备份控制文件;

或者

的SQL> 将数据库备份控制文件更改为“/data/controlfile1.cof”; (可以查看controlfile的构成)

(5)备份归档日志文件

* 利用BACKUP ARCHIVELOG命令备份

RMAN> 备份存档日志全部;

* BACKUP过程中利用PLUS ARCHIVELOG参数备份

RMAN> 备份数据库和归档日志;

1>.运行ALTER SYSTEM ARCHIVE LOG CURRENT语句对当前redolog进行归档。

2>.执行BACKUP ARCHIVELOG ALL命令备份所有已归档日志。

3>.执行BACKUP命令对指定项进行备份。

4>.再次运行ALTER SYSTEM ARCHIVE LOG CURRENT对当前redolog归档。

5>.对新生成的尚未备份的归档文件进行备份。

* 查看已备份的归档日志片段:

RMAN> 列出所有归档日志的备份;

4.rman其他命令

删除命令

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

RMAN> 删除过时的;

* 删除无效备份(通过CROSSCHECK核对备份集,若发现备份无效,rman会将该备份集标记为EXPIRED状态。)

RMAN> 删除过期的备份;

* 删除特定备份集(通过list backup选择你所要删除的备份集)

RMAN> 删除备份集 12;

* 删除特定备份片

RMAN> 删除备份文件‘/data/backup/zsd_bk.bak’;

* 删除所有备份集

RMAN> 删除备份;

* 删除归档目录中已备份的归档日志

RMAN> 备份归档日志全部删除输入;

report命令

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

* 查看过期备份

RMAN>报告过时;

crosscheck命令

用来检查备份或归档物理文件的状态,如果物理文件存在,并且控制文件(或恢复目录)中有匹配记录,

则标记该对象的状态为available(有效),如果文件已经不存在,则标记该对象为expired(无效)

* 检查所有归档文件:

RMAN>交叉检查存档全部记录;

* 检查所有备份集:

RMAN>交叉检查备份;

rman validate命令

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

及物理讹误。

* 测试任一特定备份集

RMAN>验证备份集 9;

* 测试整个数据库和归档日志备份集

RMAN>备份验证数据库归档日志全部;

提示:

监控和验证RMAN作业

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

的SQL>选择操作,状态,开始时间,来自 v$rman_status 的 end_time;

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

的SQL>选择录音,to_char(开始时间,'DD-MON-YY HH24:我')

“备份开始”,迄今为止,总工,elapsed_seconds/60 “已用时间

分钟”,圆形的(sofar/总工作量*100,2) “到目前为止完成的百分比”

从 v$session_longops 那里

5. rman实战

#以下是一个实战的rman备份脚本

备份为压缩备份

跳过无法访问的文件集 10 DATABASE PLUS ARCHIVELOG FILESPERSET 20

删除所有输入;

其中COMPRESSED: 表示压缩的备份

跳过无法访问:表示跳过不可读文件。我们知道一些offline数据文件只要存在于磁盘上就仍然可被读取,

但是可能有些文件已经被删除或移到它处造成不可读,加上这个参数就会跳过这些文件;

文件集 10: 表示一个备份集中有多少个文件,这个就是一个备份集有10个文件。

#以下是用来检验filesperset 2这个参数的意义

备份为压缩的 BACKUPSET 跳过无法访问的 FILESPERSET 2 数据库

rman恢复:

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

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

恢复:是指应用所有重做日志,将数据库恢复到崩溃前的状态,或者应用部分redo,将数据库

恢复到指定的时间点.(前提是:所有重做日志文件都在,

包括在线和归档的)

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

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

RMAN> 立即关机;

RMAN> 启动安装;

(2)执行恢复操作

RMAN> 恢复数据库;

RMAN> 恢复数据库删除归档日志跳过表空间温度;

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

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

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

(3)打开数据库

RMAN> 更改数据库打开;

2.恢复表空间

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

RMAN> 立即关机;

RMAN> 启动安装;

2、进行恢复操作

RMAN> SQL ‘ALTER TABLESPACE HDMEMBER OFFLINE IMMEDIATE’;

RMAN> 恢复表空间 HDMEMBER;

RMAN> 恢复表空间 HDMEMBER;

RMAN> SQL ‘ALTER TABLESPACE HDMEMBER ONLINE’;

3、打开数据库

RMAN> 更改数据库打开;

3.恢复数据文件

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

RMAN> 立即关机;

RMAN> 启动安装;

2、进行恢复操作

RMAN>SQL 'ALTER DATABASE DATAFILE 5 离线';

RMAN> 恢复数据文件 5;

RMAN> 恢复数据文件 5;

RMAN>SQL 'ALTER DATABASE DATAFILE 5 在线的';

3、打开数据库

RMAN> 更改数据库打开;

提示:查询对应的数据文件,表空间和数据文件序号:

附个SQL:用来查询数据文件,临时文件与表空间对应及数据文件序号:

设置线宽 999;

选择 ts.tablespace_name, df.file_name, df.file_id, tf.file_name

来自 dba_tablespaces ts, dba_data_files df, dba_temp_files tf

其中 ts.tablespace_name = df.tablespace_name(+)

和 ts.tablespace_name = tf.tablespace_name(+);

示例:归档模式下,假设某数据文件丢失,恢复该数据文件

1.造假数据

sqlplus / nolog

conn 会员/会员

创建表 zsd(名称 varchar2(50));

插入 zsd 值 (‘测试1’);

插入 zsd 值 ('测试2');

插入 zsd 值 ('测试3');

2.关闭,删除文件,启动数据库

的SQL> 连接 / 作为sysdba

的SQL> 立即关闭;

的SQL> 主办

[oracle @ oracle-n1〜]$ rm -rf /data/ora11g/oradata/zsddb/hdmember01.dbf

的SQL> 启动

的SQL> 存档日志列表(查看一下是否归档)

3.查看一下示例,并恢复数据库

选择实例名称,来自 v$instance 的状态

设置 oracle_sid=zsddb

目标 /

RMAN> 恢复数据文件‘/data/ora11g/oradata/zsddb/hdmember01.dbf’;

RMAN> 恢复数据文件‘/data/ora11g/oradata/zsddb/hdmember01.dbf’;

RMAN> 更改数据库打开;

示例:丢失控制文件的恢复

的SQL> 立即关闭;

[oracle @ oracle-n1〜]$ rm -rf /data/ora11g/oradata/zsddb/control*

进入rman

目标 /

随意指定一个DBID

RMAN> 设置 dbid 3391142503

RMAN> 从‘/data/ora11g/product/11.2.0/db_1/dbs/con_c-1552557445-20130520-06’恢复控制文件;

RMAN> sql ‘改变数据库挂载’;

RMAN> 恢复数据库;

RMAN> 恢复数据库;

RMAN> sql ‘alter database open resetlogs’;

(还必须重建临时表空间)

本篇总结来自 http://blog.chinaunix.net/uid-26446098-id-3721661.html

发表评论