rman备份恢复-rman备份演练

最近开始学习rman备份恢复了,主要看的是三思的资料,要谢谢他了,呵~~根据测试的结果,整体了下测试的笔记,发上来,供日后复习了!这一章节主要讲的是rman备份演练

[@more@]

第二章 rman备份演练


一、备份形式

1、镜像复制(Image Copies)
镜像复制实际上就是数据文件、控制文件或归档文件的复制,与用户通过操作系统命令建立的文件复制实质一样,只不过RMAN是利用目标数据库中的服务进程来完成文件复制,而用户则是用操作系统命令。所以镜像复制的方式体现不出RMAN的优势,也并非我们讨论的重点。

2、备份集(Backup Sets)
备份集是通过RMAN创建的逻辑备份对象。一个备份集中可以包含多个数据文件、控制文件或归档文件。备份集在物理上是由多个备份片段组成,每个备份片段是一个操作系统文件。


二、rman命令执行方式

Rman共有四种运行方式,如下
1、单个执行
RMAN>backup database;
  
2、批处理
RMAN>RUN{
.......................
.......................
}
  批处理方式实质是将原来单个执行的命令组合到一起,并放在run{}之间,这种方式最大的好处是所有在run中的命令被视为一个作业,如果作业中任何一条命令执行失败,则整个命令停止执行,即失败命令后的其它命令都不会再被执行。这种方式是最常使用的方式,特别对于后台执行。

3、运行脚本(又能细分为几种方式如下:)
C:>rman TARGET / @backup_db.rman

RMAN> @backup_db.rman

RMAN> RUN { @backup_db.rman }

运行存储在恢复目录中的脚本(需要首先为rman创建恢复目录)
RMAN> RUN { EXECUTE SCRIPT backup_whole_db };
看看,够灵活吧。

4、操作系统脚本(linux,windows环境下小有差异,但只是操作系统命令的不同)

C:>rman cmdfile=backup_db.rman


三、数据库全备

1、使用backup database 命令进行数据库全备,格式如下:
RMAN> BACKUP DATABASE;
可用format参数来自定义备份片段的命令规则.如:
RMAN> BACKUP DATABASE FORMAT 'D:BACKUP%U';
注:如果不指定format参数,则rman会自动为每个备份片段命名,并保存在
ORACLE_HOME/database目录下(本机测试时是保存在
oracleproduct10.2.0flash_recovery_areaORCLBACKUPSET目录下),下面开始进行rman数据库全备测试,不指定format参数形式。

第一步:进入rman模式
C:Documents and Settingspengwzh>rman target / log d:rman_log.txt
恢复管理器: Release 10.2.0.1.0 - Production on 星期二 3月 31 16:53:15 2009

Copyright (c) 1982, 2005, Oracle. All rights reserved.

连接到目标数据库: ORCL (DBID=1194065820)

第二步:使用backup database命令进行数据库全备,操作如下:
RMAN> backup database
启动 backup 于 31-3月 -09
使用目标数据库控制文件替代恢复目录
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=145 devtype=DISK
通道 ORA_DISK_1: 启动全部数据文件备份集
通道 ORA_DISK_1: 正在指定备份集中的数据文件
MAN-03009: backup 命令 (ORA_DISK_1 通道上, 在 03/31/2009 16:53:36 上) 失败
ORA-19602: 无法按 NOARCHIVELOG 模式备份或复制活动文件
继续执行其它作业步骤, 将不重新运行失败的作业
通道 ORA_DISK_1: 启动全部数据文件备份集
通道 ORA_DISK_1: 正在指定备份集中的数据文件
备份集中包括当前控制文件
在备份集中包含当前的 SPFILE
通道 ORA_DISK_1: 正在启动段 1 于 31-3月 -09
通道 ORA_DISK_1: 已完成段 1 于 31-3月 -09
段句柄=D:ORACLEPRODUCT10.2.0FLASH_RECOVERY_AREAORCLBACKUPSET2009_03_31O1_MF_NCSNF_TAG20090331T165335_4X3PJL7B_.BKP 标记=TAG20090331T165335 注释=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:03
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============

报ORA-19602: 无法按 NOARCHIVELOG 模式备份或复制活动文件,解决方法是启动数据库到加载模式进行全备,如下:
RMAN> shutdown immediate;
数据库已关闭
数据库已卸载
Oracle 实例已关闭

RMAN> startup mount;
已连接到目标数据库 (未启动)
Oracle 实例已启动
数据库已装载

系统全局区域总计 289406976 字节

Fixed Size 1248576 字节
Variable Size 176161472 字节
Database Buffers 104857600 字节
Redo Buffers

再次执行数据库全备操作
RMAN> backup database;
启动 backup 于 31-3月 -09
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=156 devtype=DISK
通道 ORA_DISK_1: 启动全部数据文件备份集
通道 ORA_DISK_1: 正在指定备份集中的数据文件
输入数据文件 fno=00004 name=D:ORACLEPRODUCT10.2.0ORADATAORCLUSERS01.DBF
输入数据文件 fno=00007 name=D:ORACLEPRODUCT10.2.0ORADATAORCLTZJHK.ORA
输入数据文件 fno=00001 name=D:ORACLEPRODUCT10.2.0ORADATAORCLSYSTEM01.DBF
输入数据文件 fno=00003 name=D:ORACLEPRODUCT10.2.0ORADATAORCLSYSAUX01.DBF
输入数据文件 fno=00006 name=D:ORACLEPRODUCT10.2.0ORADATAORCLJJJG.ORA
输入数据文件 fno=00002 name=D:ORACLEPRODUCT10.2.0ORADATAORCLUNDOTBS01.DBF
输入数据文件 fno=00005 name=D:ORACLEPRODUCT10.2.0ORADATAORCLJJJG_DATA.ORA
输入数据文件 fno=00008 name=D:DATATASPART01.ORA
输入数据文件 fno=00009 name=D:DATATASPART02.ORA
输入数据文件 fno=00010 name=D:DATATASPART03.ORA
输入数据文件 fno=00011 name=D:DATATASPART04.ORA
通道 ORA_DISK_1: 正在启动段 1 于 31-3月 -09
MAN-03009: backup 命令 (ORA_DISK_1 通道上, 在 03/31/2009 16:59:54 上) 失败
ORA-19809: 超出了恢复文件数的限制
ORA-19804: 无法回收 52428800 字节磁盘空间 (从 2147483648 限制中)
继续执行其它作业步骤, 将不重新运行失败的作业
通道 ORA_DISK_1: 启动全部数据文件备份集
通道 ORA_DISK_1: 正在指定备份集中的数据文件
备份集中包括当前控制文件
在备份集中包含当前的 SPFILE
通道 ORA_DISK_1: 正在启动段 1 于 31-3月 -09
通道 ORA_DISK_1: 已完成段 1 于 31-3月 -09
段句柄=D:ORACLEPRODUCT10.2.0FLASH_RECOVERY_AREAORCLBACKUPSET2009_03_31O1_MF_NCSNF_TAG20090331T165627_4X3PWF4D_.BKP 标记=TAG20090331T165627 注释=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:03
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: =============================================

又报错误ORA-19809: 超出了恢复文件数的限制解决方法如下:

进入sqlplus模式,查看db_recovery_file_dest_size值大小
C:Documents and Settingspengwzh>sqlplus / as sysdba

SQL*Plus: Release 10.2.0.1.0 - Production on 星期二 3月 31 17:52:09 2009

Copyright (c) 1982, 2005, Oracle. All rights reserved.


连接到:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options

SQL> SELECT name, space_limit AS quota,space_used AS used,space_reclaimable AS r
eclaimable,number_of_files AS files FROM v$recovery_file_dest;

NAME
--------------------------------------------------------------------------------

QUOTA USED RECLAIMABLE FILES
---------- ---------- ----------- ----------
D:oracleproduct10.2.0/flash_recovery_area
2147483648 24311808 0 3

SQL> show parameter db_recovery_file_dest_size;

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest_size big integer 2G

修改db_recovery_file_dest_size值为3G
SQL> alter system set db_recovery_file_dest_size=3G;

系统已更改。

SQL> show parameter db_recovery_file_dest_size;

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest_size big integer 3G

SQL> select * from v$recovery_file_dest;

NAME
--------------------------------------------------------------------------------

SPACE_LIMIT SPACE_USED SPACE_RECLAIMABLE NUMBER_OF_FILES
----------- ---------- ----------------- ---------------
D:oracleproduct10.2.0/flash_recovery_area
3221225472 24311808 0 3

删除陈旧备份
RMAN>delete obsolete;
RMAN 保留策略将应用于该命令
将 RMAN 保留策略设置为冗余 1
使用通道 ORA_DISK_1
删除以下已废弃的备份和副本:
类型 关键字 完成时间 文件名/句柄
-------------------- ------ ------------------ --------------------
备份集 5 31-3月 -09
备份段 5 31-3月 -09 D:ORACLEPRODUCT10.2.0FLASH_RECOVERY_AREAORCLBACKUPSET2009_03_31O1_MF_NCSNF_TAG20090331T163716_4X3ORCF5_.BKP
备份集 6 31-3月 -09
备份段 6 31-3月 -09 D:ORACLEPRODUCT10.2.0FLASH_RECOVERY_AREAORCLBACKUPSET2009_03_31O1_MF_NCSNF_TAG20090331T165335_4X3PJL7B_.BKP

删除所有备份集
RMAN> delete backup;

使用目标数据库控制文件替代恢复目录
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=159 devtype=DISK

备份段列表
BP 关键字 BS 关键字 Pc# Cp# 状态 设备类型段名称
------- ------- --- --- ----------- ----------- ----------
7 7 1 1 AVAILABLE DISK D:ORACLEPRODUCT10.2.0FLASH_R
ECOVERY_AREAORCLBACKUPSET2009_03_31O1_MF_NCSNF_TAG20090331T165627_4X3PWF4D_.
BKP

是否确定要删除以上对象 (输入 YES 或 NO)? yes
已删除备份段
备份段 handle=D:ORACLEPRODUCT10.2.0FLASH_RECOVERY_AREAORCLBACKUPSET2009_0
3_31O1_MF_NCSNF_TAG20090331T165627_4X3PWF4D_.BKP recid=7 stamp=682966797
1 对象已删除

修改了db_recovery_file_dest_size大小后再执行rman数据库全备操作,如下:
RMAN> backup database;

启动 backup 于 01-4月 -09
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=156 devtype=DISK
通道 ORA_DISK_1: 启动全部数据文件备份集
通道 ORA_DISK_1: 正在指定备份集中的数据文件
输入数据文件 fno=00004 name=D:ORACLEPRODUCT10.2.0ORADATAORCLUSERS01.DBF
输入数据文件 fno=00007 name=D:ORACLEPRODUCT10.2.0ORADATAORCLTZJHK.ORA
输入数据文件 fno=00001 name=D:ORACLEPRODUCT10.2.0ORADATAORCLSYSTEM01.DBF
输入数据文件 fno=00003 name=D:ORACLEPRODUCT10.2.0ORADATAORCLSYSAUX01.DBF
输入数据文件 fno=00006 name=D:ORACLEPRODUCT10.2.0ORADATAORCLJJJG.ORA
输入数据文件 fno=00002 name=D:ORACLEPRODUCT10.2.0ORADATAORCLUNDOTBS01.DBF
输入数据文件 fno=00005 name=D:ORACLEPRODUCT10.2.0ORADATAORCLJJJG_DATA.ORA
输入数据文件 fno=00008 name=D:DATATASPART01.ORA
输入数据文件 fno=00009 name=D:DATATASPART02.ORA
输入数据文件 fno=00010 name=D:DATATASPART03.ORA
输入数据文件 fno=00011 name=D:DATATASPART04.ORA
通道 ORA_DISK_1: 正在启动段 1 于 01-4月 -09
通道 ORA_DISK_1: 已完成段 1 于 01-4月 -09
段句柄=D:ORACLEPRODUCT10.2.0FLASH_RECOVERY_AREAORCLBACKUPSET2009_04_01O1
_MF_NNNDF_TAG20090401T102549_4X5N5J2G_.BKP 标记=TAG20090401T102549 注释=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:05:36
通道 ORA_DISK_1: 启动全部数据文件备份集
通道 ORA_DISK_1: 正在指定备份集中的数据文件
备份集中包括当前控制文件
在备份集中包含当前的 SPFILE
通道 ORA_DISK_1: 正在启动段 1 于 01-4月 -09
通道 ORA_DISK_1: 已完成段 1 于 01-4月 -09
段句柄=D:ORACLEPRODUCT10.2.0FLASH_RECOVERY_AREAORCLBACKUPSET2009_04_01O1
_MF_NCSNF_TAG20090401T102549_4X5NJ19R_.BKP 标记=TAG20090401T102549 注释=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:03
完成 backup 于 01-4月 -09


2、通过list命令查看刚刚创建的备份信息:
RMAN> list backup of database;


备份集列表
===================

BS 关键字 类型 LV 大小 设备类型 经过时间 完成时间
------- ---- -- ---------- ----------- ------------ ----------
10 Full 4.87G DISK 00:05:34 01-4月 -09
BP 关键字: 10 状态: AVAILABLE 已压缩: NO 标记: TAG20090401T102549
段名:D:ORACLEPRODUCT10.2.0FLASH_RECOVERY_AREAORCLBACKUPSET2009_04_01O1_M
F_NNNDF_TAG20090401T102549_4X5N5J2G_.BKP
备份集 10 中的数据文件列表
文件 LV 类型 Ckp SCN Ckp 时间 名称
---- -- ---- ---------- ---------- ----
1 Full 5256962 01-4月 -09 D:ORACLEPRODUCT10.2.0ORADATAORCLSYSTE
M01.DBF
2 Full 5256962 01-4月 -09 D:ORACLEPRODUCT10.2.0ORADATAORCLUNDOT
BS01.DBF
3 Full 5256962 01-4月 -09 D:ORACLEPRODUCT10.2.0ORADATAORCLSYSAU
X01.DBF
4 Full 5256962 01-4月 -09 D:ORACLEPRODUCT10.2.0ORADATAORCLUSERS
01.DBF
5 Full 5256962 01-4月 -09 D:ORACLEPRODUCT10.2.0ORADATAORCLJJJG_
DATA.ORA
6 Full 5256962 01-4月 -09 D:ORACLEPRODUCT10.2.0ORADATAORCLJJJG.
ORA
7 Full 5256962 01-4月 -09 D:ORACLEPRODUCT10.2.0ORADATAORCLTZJHK
.ORA
8 Full 5256962 01-4月 -09 D:DATATASPART01.ORA
9 Full 5256962 01-4月 -09 D:DATATASPART02.ORA
10 Full 5256962 01-4月 -09 D:DATATASPART03.ORA
11 Full 5256962 01-4月 -09 D:DATATASPART04.ORA

RMAN>

四、备份表空间

只要实例启动并处于加载状态,不论数据库是否打开,都可以在rman中对表空间进行备份,而且不需要像手动备份那样先'ALTER TABLESPACE ... BEGIN BACKUP',另外,我们在使用backup tablespace也可以通过显式指定format参数自定义备份片段名称。备份表空间测试如下:

RMAN> backup tablespace jjjg format 'd:%U';

启动 backup 于 01-4月 -09
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 启动全部数据文件备份集
通道 ORA_DISK_1: 正在指定备份集中的数据文件
输入数据文件 fno=00006 name=D:ORACLEPRODUCT10.2.0ORADATAORCLJJJG.ORA
通道 ORA_DISK_1: 正在启动段 1 于 01-4月 -09
通道 ORA_DISK_1: 已完成段 1 于 01-4月 -09
段句柄=D:MKBCFRB_1_1 标记=TAG20090401T111347 注释=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:15
完成 backup 于 01-4月 -09

通过list backup查看刚刚对表空间的备份信息
RMAN> list backup of tablespace jjjg;


备份集列表
===================

BS 关键字 类型 LV 大小 设备类型 经过时间 完成时间
------- ---- -- ---------- ----------- ------------ ----------
12 Full 207.88M DISK 00:00:10 01-4月 -09
BP 关键字: 12 状态: AVAILABLE 已压缩: NO 标记: TAG20090401T111347
段名:D:MKBCFRB_1_1
备份集 12 中的数据文件列表
文件 LV 类型 Ckp SCN Ckp 时间 名称
---- -- ---- ---------- ---------- ----
6 Full 5257539 01-4月 -09 D:ORACLEPRODUCT10.2.0ORADATAORCLJJJG.
ORA

通过delete backupset 命令删除刚刚对表空间jjjg的备份信息,也可用delete backup命令删除表空间备份。
RMAN> delete backupset 12;

使用通道 ORA_DISK_1

备份段列表
BP 关键字 BS 关键字 Pc# Cp# 状态 设备类型段名称
------- ------- --- --- ----------- ----------- ----------
12 12 1 1 AVAILABLE DISK D:MKBCFRB_1_1

是否确定要删除以上对象 (输入 YES 或 NO)? yes
已删除备份段
备份段 handle=D:MKBCFRB_1_1 recid=12 stamp=683032427
1 对象已删除


五、备份指定数据文件

首先可以先通过数据字典DBA_DATA_FILES查询出表空间对应的数据文件及其序号,例如:
select file_name,file_id,tablespace_name from dba_data_files
然后再通过BACKUP DATAFILE备份指定序号的数据文件,例如:
RMAN> BACKUP DATAFILE n;

如果要查看指定数据文件的备份,可以用:
RMAN> LIST BACKUP OF DATAFILE n;
注:n=指定的的数据文件序号,如果需要备份的数据文件有多个,n=多个序号,中间以逗号分隔即可。
备份指定数据文件测试如下:
查看数据文件
SQL> select file_name,file_id,tablespace_name from dba_data_files;

FILE_NAME
-------------------------------------------------------------------------------

FILE_ID TABLESPACE_NAME
---------- ------------------------------
D:ORACLEPRODUCT10.2.0ORADATAORCLUSERS01.DBF
4 USERS

D:ORACLEPRODUCT10.2.0ORADATAORCLSYSAUX01.DBF
3 SYSAUX

D:ORACLEPRODUCT10.2.0ORADATAORCLUNDOTBS01.DBF
2 UNDOTBS1


FILE_NAME
-------------------------------------------------------------------------------

FILE_ID TABLESPACE_NAME
---------- ------------------------------
D:ORACLEPRODUCT10.2.0ORADATAORCLSYSTEM01.DBF
1 SYSTEM

D:ORACLEPRODUCT10.2.0ORADATAORCLJJJG_DATA.ORA
5 JJJG_DATA

D:ORACLEPRODUCT10.2.0ORADATAORCLJJJG.ORA
6 JJJG


FILE_NAME
-------------------------------------------------------------------------------

FILE_ID TABLESPACE_NAME
---------- ------------------------------
D:ORACLEPRODUCT10.2.0ORADATAORCLTZJHK.ORA
7 TZJHK

D:DATATASPART01.ORA
8 TBSPART01

D:DATATASPART02.ORA
9 TBSPART02


FILE_NAME
-------------------------------------------------------------------------------

FILE_ID TABLESPACE_NAME
---------- ------------------------------
D:DATATASPART03.ORA
10 TBSPART03

D:DATATASPART04.ORA
11 TBSPART04


已选择11行。

SQL>

通过backup datafile命令备份序号11的数据文件,指向D:DATATASPART04.ORA,如下:
RMAN> backup datafile 11 format 'd:TBSPART04_bak.ora';

启动 backup 于 01-4月 -09
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=156 devtype=DISK
通道 ORA_DISK_1: 启动全部数据文件备份集
通道 ORA_DISK_1: 正在指定备份集中的数据文件
输入数据文件 fno=00011 name=D:DATATASPART04.ORA
通道 ORA_DISK_1: 正在启动段 1 于 01-4月 -09
通道 ORA_DISK_1: 已完成段 1 于 01-4月 -09
段句柄=D:TBSPART04_BAK.ORA 标记=TAG20090401T132110 注释=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:03
完成 backup 于 01-4月 -09

通过list backup 命令查看刚备份的数据文件
RMAN> list backup of datafile 11;


备份集列表
===================

BS 关键字 类型 LV 大小 设备类型 经过时间 完成时间
------- ---- -- ---------- ----------- ------------ ----------
13 Full 144.00K DISK 00:00:02 01-4月 -09
BP 关键字: 13 状态: AVAILABLE 已压缩: NO 标记: TAG20090401T132110
段名:D:TBSPART04_BAK.ORA
备份集 13 中的数据文件列表
文件 LV 类型 Ckp SCN Ckp 时间 名称
---- -- ---- ---------- ---------- ----
11 Full 5260549 01-4月 -09 D:DATATASPART04.ORA

RMAN>

删除刚备份的数据文件
RMAN> delete backupset 13;

使用通道 ORA_DISK_1

备份段列表
BP 关键字 BS 关键字 Pc# Cp# 状态 设备类型段名称
------- ------- --- --- ----------- ----------- ----------
13 13 1 1 AVAILABLE DISK D:TBSPART04_BAK.ORA

是否确定要删除以上对象 (输入 YES 或 NO)? yes
已删除备份段
备份段 handle=D:TBSPART04_BAK.ORA recid=13 stamp=683040071
1 对象已删除


六、备份控制文件
控制文件在ORACLE中的重要性是毋庸置疑的,在RMAN中备份控制文件的方式是最多的。
1、最简单的方式,通过CONFIGURE命令将CONTROLFILE AUTOBACKUP置为ON。
RMAN> CONFIGURE CONTROLFILE AUTOBACKUP ON;
然后你再通过rman做任何备份操作的同时,都会自动对控制文件做备份。

2、在自动备份打开的情况下,备份任意表空间操作时,RMAN均会自动对控制文件做备份。

3、手动执行备份命令。
RMAN> BACKUP CURRENT CONTROLFILE;

4、执行BACKUP时指定INCLUDE CURRENT CONTROLFILE参数,例如:
RMAN> BACKUP DATABASE INCLUDE CURRENT CONTROLFILE;

如果要查看备份的控制文件,可以通过:
RMAN> LIST BACKUP OF CONTROLFILE;
注:查看当前controlfile autobackup 参数值
RMAN> show controlfile autobackup;

RMAN 配置参数为:
CONFIGURE CONTROLFILE AUTOBACKUP OFF; # default


七、备份归档日志文件
归档日志对于数据库介质恢复相当关键,其虽然不像控制文件那样一旦损坏则数据库马上崩溃但重要性丝毫不减。归档日志文件能确保我们将数据库恢复到备份之前的任意时刻。在RMAN中备份归档日志有两种方式:
1、利用BACKUP ARCHIVELOG命令备份
RMAN> BACKUP ARCHIVELOG ALL;

2、在BACKUP过程中利用PLUS ARCHIVELOG参数备份,例如:
RMAN> BACKUP DATABASE PLUS ARCHIVELOG;
则在备份数据库的同时自动对所有归档文件进行备份。这种方式与上种有什么区别呢,区别太明显了,BACKUP.....PLUS ARCHIVELOG命令在备份过程中会依次执行下列步骤:
1>.运行ALTER SYSTEM ARCHIVE LOG CURRENT语句对当前redolog进行归档。
2>.执行BACKUP ARCHIVELOG ALL命令备份所有已归档日志。
3>.执行BACKUP命令对指定项进行备份。
4>.再次运行ALTER SYSTEM ARCHIVE LOG CURRENT对当前redolog归档。
5>.对新生成的尚未备份的归档文件进行备份。

在完成归档日志文件备份后,我们通过需要删除已备份过的归档文件(归档文件记录下了数据库进行过的所有操作,如果您的数据库操作频繁而且量大,那归档文件大小也是相当恐怖,备份后删除释放存储空间是相当有必要地)。RMAN提供了DELETE ALL INPUT参数,加在BACKUP命令后,则会在完成备份后自动删除归档目录中已备份的归档日志。
完成备份之后,可以通过下列命令查看已备份的归档日志片段:
RMAN> LIST BACKUP OF ARCHIVELOG ALL;

综述:通过上面的各种备份,不然发现其规律,所以备份形式都是backup 备份项名称开头,查看备份信息都是list backup of 备份项,所以备份项都可以指定format参数。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/21251711/viewspace-1019722/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/21251711/viewspace-1019722/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
RMAN学习测试整理1 20121219 by Apollo 一、 Oracle数据库备份分为物理备份和逻辑备份。今天测试整理下物理备份Rman,也就是oracle的恢复管理器(Recovery Manager)。 毕竟逻辑备份是不能实现时间点恢复的,所以生产数据库肯定用物理备份来保证灾难时能够恢复。 二、 Rman备份的前提条件:数据库需要运行在归档模式下 (1) 查看oracle数据库的archivelog mode的方式 sqlplus / as sysdba ##需要as sysdba登录,不然即使有dba权限也fail archive log list ##方式一 select name,log_mode from v$database; ##方式二 (2) 由非归档切换到归档模式 shutdown immediate startup mount alter database archivelog; alter database open; (3) 反之由归档切换到非归档模式 shutdown immediate startup mount alter database noarchivelog; ##切换到非归档 alter database open; (4) 其实oracle安装好后会默认运行在非归档模式下(安装时有开关勾选),其配置文件为init.ora,可以通过修改init.ora来调整。 sqlplus oracle/oracle show parameter spfile ##spfile和init.ora一般在一个路径下 exit cd $ORACLE_HOME/dbs vi init.ora (5) init.ora关于archive的参数 log_archive_start = true 启动自动归档 log_archive_dest = disk$rdbms:[oracle.archive] 归档日志路径 log_archive_format = “T%TS%S.ARC” 归档日志格式 三、 启用数据库备份模式 (1) 查看当前情况 select * from v$backup; select * from v$log select * from v$datafile_header (2) 整库开启备份模式alter database begin backup; 哦,忘记开启归档了。奔3的人老了呀。(非一致性备份必须开启归档) (3) 指定某个表空间开启备份模式 alter tablespace tablespace_name begin backup; 先建个tbs_apollo_backup的表空间吧: 靠,/opt下剩余只有649M,先给个200M吧,回头再从根目录划分一些出来。 create tablespace tbs_apollo_backup datafile '/opt/oracle/oradata/orcl/tbs_apollo_backup.dbf' size 200M 因为之前做了database begin backup,所有表空间都处于backup状态了。将database的backup停掉重新指定tablespace备份。 再次查看各个tablespace的backup情况 select a.tablespace_name,b.status as backup_status,a.file#, a. ts#,a.recover,a.status as on_off_status,a.name from v$datafile_header a ,v$backup b where a.file# = b.file# 四、 RMAN相关使用 1、 RMAN连接到Target Database (1) 分步进行 rman nocatlog(nocatalog会将相关备份信息即元数据放在Contronfile里面) connect target / (不像DB2那样connect to,就connect就OK了) (2) 一步到位 rman nocatlog target system/manger 权限不足,使用rman连接target的话需要sysdba权限而不是dba。 I 查看是否拥有sysdba权限 select * from v$pwfile_users; 备注:常用的查看权限视图 select * from dba_users where username='SYSTEM' select * from dba_role_privs where grantee='SYSTEM'; select * from v$pwfile_users; ii 用sys用户授予system用户sysdba权限(其实是一个角色) iii 用system用户再次连接target database (3) 可以在rman里面停起数据库(停库状态需要隐式登录,不能带网络服务名) (4) DataFile tbs_apollo_backup.dbf异常了,先解决下 alter database datafile ‘datafile_name’ offline; recover datafile ‘datafile_name’ alter database datafile ‘datafile_name’ online; alter database open; 再次在Rman里面操作停起数据库(sql_statement用单引号或双引号括起) 2、 List命令查看备份集(在数据库控制文件或恢复目录中查询备份的历史信息的方法) (1) 查看数据库所有的备份集合 list backupset; (2) 查看指定TableSpace的备份 list copy of tablespace “TBS_APOLLO_BACKUP” list backupset of tablespace "TBS_APOLLO_BACKUP"; (3) 查看指定DataFile的备份 list backupset of datafile "/opt/oracle/oradata/orcl/users01.dbf"; (4) 查看备份汇总 list backup summary; (5) 3、 Report命令报告备份情况(判断数据库当前可恢复状态和提供数据库备份的信息) (1) report schema;(报告数据库结构) (2) report need backup;(报告需要备份的内容) (3) report obsolete(Which backups can be deleted ?)报告过期备份 (4) report unrecoberable(Which files are unrecoverable ?) 4、 CONFIGURE配置Rman参数 (1) show all命令查看所有配置 (2) CONFIGURE命令修改配置 ControlFile太重要了,一般都设置备份它 五、 准备下数据库对象 1、 临时表空间 create temporary tablespace apollo_temp tempfile ‘/opt/app/oracle/oradata/orcl_apollo/Apollo_temp.dbf’ size 200m autoextend on next 50m maxsize 2048m extent management local; 2、 创建数据表空间 create tablespace apollo_data logging datafile ‘/opt/app/oracle/oradata/orcl_apollo/apollo_data.dbf’ size 1g autoextend on next 50m maxsize 4096m extent management local; 备注:引用的字符串如这里的单引号在copy时异常。 3、 创建用户并指定表空间 create user rman identified by rman default tablespace apollo_data temporary tablespace apollo_temp; 4、 给用户授权 grant connect ,resource to rman; 5、 其他如table、index、function、procedure、view、sequence等。 六、 Rman备份的对象(主要包括Database、Tablespace、Datafile、Controlfile和Archivelog) Rman不能备份口令文件和初始化参数文件(也就是前面提到的init.ora)。 1、 备份DataBase backup database; backup database是一次全备份,其实省略的很多参数,相当于用的默认的。而备份好的备份集放在哪里呢? 在sqlplus里面执行show parameter db_recovery_file_dest; 查看备份后情况: list backupset; 2、 备份Tablespace backup tablespace apollo_data; RMAN-06554: WARNING: file 5 is in backup mode 该警告提示file5也就是这个表空间的备份其实已经存在了,因为刚做过full backup了嘛。 查看备份集合新增了3和4两个备份集 3、 备份Datafile backup datafile '/opt/app/oracle/oradata/orcl_apollo/system01.dbf'; 也可backup datafile 4 这里的4对应第四个datafile,可由report schema报告得知是:user01.dbf 测试备份的有点多,那么可以删除一些过期的备份。 (1) 通过删除备份集删除 (2) 通过删除备份片删除 (3) 当然直接删除全部过期更加直接 delete obsolete; (4) 删除后无过期备份存在 4、 备份Controlfile (1) 自动备份控制文件如前面示例show all后修改的参数 CONFIGURE CONTROLFILE AUTOBACKUP ON; 那么每次备份会自动备份控制文件。 (2) 手动备份控制文件 backup current controlfile; (3) 列出备份过的controlfile list backup of controlfile; 有14、15、16三个备份集里面有,那么肯定有过期的了,再验证下 report obsolete; 14和15作为过期的报告出来,16为最新的备份。 5、 备份Archivelog (1) 备份数据库时使用参数plus archivelog自动备份 backup database plus archivelog;(我们清空所有备份delete backup后重头来) (2) 手工备份 backup archivelog all; 6、 备份spfile (1) 备份时自动备份spfile CONFIGURE CONTROLFILE AUTOBACKUP ON在备份控制文件时页备份spfile (2) 手动备份 备份的spfile同样放到backupset目录下面 7、 七、 恢复数据库 1、 模拟datafile丢失或损坏进行恢复 cd $ORACLE_BASE/oradata/orcl_apollo mv ./apollo_data.dbf /home/oracle/backup/apollo_data.dbf 重启数据库看看 看来破坏了datafile正常停库都不行,需要abort才行。 起库就更不用说了 那么开始真正恢复吧,思路是这样的:由报错可见起库的实例nomount和控制文件的mount都成功了,但是在open database时报错,就需要在mount和open之间恢复。先将datafile置于offline状态,restore和recover后在online,最后在open database就OK了。 (1) 将数据库处于mount模式 (2) 将datafile 1 (即system01.dbf)置于offline (3) restore和recover(所有的铺垫都是为了这两步) restore datafile 1; recover datafile 1; (4) 将datafile 1 置于online (5) alter database open; alter database datafile 2 offline; 2、 模拟tablespace丢失或损坏进行恢复 (1) backup tablespace apollo_data (2) drop tablespace apollo_data 提示表空间非空,查看下里面的内容,是建的一些测试表。 select * from dba_segments where tablespace_name='APOLLO_DATA' and segment_name=’ AMIS_IC_MEMBER’ ; 没关系那就加上including contents选项删除吧 (3) 停库起到mount模式 (4) 进入sqplus将表空间offline alter tablespace apollo_data offline; (5) 进入rman使用restore和recover恢复表空间 restore tablespace apollo_data; recover tablespace apollo_data; 备注:从(4)、(5)开始的执行都没有成功,因为drop表空间后即使在系统表里 面也不再有改表空间的信息,模拟失败待后续研究! (1) 在rman里面备份表空间apollo_data (2) 模拟表空间里面的对象破坏进行恢复吧 select * from dba_segments where tablespace_name='APOLLO_DATA' and (3) alter tablespace apollo_data offline; (4) restore tablespace apollo_data; (5) recover tablespace apollo_data (6) alter tablespace apollo_data online; (7) apollo_data.已经恢复 备注:其实datafile和tablespace的恢复步骤是一样的。 3、 模拟controlfile丢失或损坏进行恢复 (1) 丢失controlfile (2) startup nomount; (3) restore controlfile from $BACKUP_CONTROLFILE_PATH; 如果开启CONFIGURE CONTROLFILE AUTOBACKUP ON;就可以 restore controlfile from autobackup; (4) alter database mount; (5) recover database; (6) alter database open resetlog; 4、 模拟spfile丢失或损坏进行恢复 (1) startup nomount; (2) set dbid 1330128391; (3) store spfile from autobackup; (4) shutdown immediate; (5) set dbid 1330128391; (6) startup; 5、 模拟整个database恢复 (1) startup nomount; (2) restore controlfile form autobakcup; (3) alter database mount; (4) restore database; (5) recover database; (6) alter database open resetlogs 6、 模拟redolog file恢复(其实下面操作在sqlplus里面,不在rman执行) (1) shutdown immediate; (2) startup mount; (3) recover database until cancel; (4) alter database resetlog;

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值