RMAN实战11:数据文件的恢复

在数据库处于open模式式恢复数据文件

在数据中使数据文件脱机,在数据库open时只能使处理SYSTEM和UNDO表空间之外的数据文件脱机

sqlplus 中脱机数据文件


sys@PYANG1> col file_name format a66
sys@PYANG1> set linesize 188
sys@PYANG1> select file_name,tablespace_name,file_id from dba_data_files;
FILE_NAME                                                          TABLESPACE_NAME                   FILE_ID
------------------------------------------------------------------ ------------------------------ ----------
C:\APP\ORACLE\ORADATA\CYANG\DATAFILE\O1_MF_SYSTEM_BYCMNHWC_.DBF    SYSTEM                               7
C:\APP\ORACLE\ORADATA\CYANG\DATAFILE\O1_MF_SYSAUX_BYCMNHW0_.DBF    SYSAUX                               8
C:\APP\ORACLE\ORADATA\CYANG\DATAFILE\O1_MF_USERS_BYCMNHWP_.DBF     USERS                                9
C:\APP\ORACLE\ORADATA\CYANG\DATAFILE\O1_MF_EXAMPLE_BYCMNHVM_.DBF   EXAMPLE                             10

sys@PYANG1> alter database datafile 8,9,10 offline;

数据库已更改。

sys@PYANG1> alter database datafile 7 offline;
alter database datafile 7 offline
*
第 1 行出现错误:
ORA-01541: 系统表空间无法脱机; 如有必要请关闭

RMAN中恢复数据文件

# 连接可插拔数据库
C:\app\oracle\product\12.1.0\dbhome_1\BIN>rman target sys/dbPass00@localhost:1521/pyang1

恢复管理器: Release 12.1.0.2.0 - Production on 星期二 1222 19:55:54 2015

Copyright (c) 1982, 2014, Oracle and/or its affiliates.  All rights reserved.

已连接到目标数据库: CYANG (DBID=3752195400)

RMAN> backup database plus archivelog;


启动 backup 于 2015-12-22 19:56:13
使用目标数据库控制文件替代恢复目录
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: SID=370 设备类型=DISK
说明与资料档案库中的任何归档日志都不匹配
由于没有要备份的文件而取消了备份
完成 backup 于 2015-12-22 19:56:14

启动 backup 于 2015-12-22 19:56:14
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 正在启动全部数据文件备份集
通道 ORA_DISK_1: 正在指定备份集内的数据文件
输入数据文件: 文件号=00010 名称=C:\APP\ORACLE\ORADATA\CYANG\DATAFILE\O1_MF_EXAMPLE_BYCMNHVM_.DBF
输入数据文件: 文件号=00008 名称=C:\APP\ORACLE\ORADATA\CYANG\DATAFILE\O1_MF_SYSAUX_BYCMNHW0_.DBF
输入数据文件: 文件号=00007 名称=C:\APP\ORACLE\ORADATA\CYANG\DATAFILE\O1_MF_SYSTEM_BYCMNHWC_.DBF
输入数据文件: 文件号=00009 名称=C:\APP\ORACLE\ORADATA\CYANG\DATAFILE\O1_MF_USERS_BYCMNHWP_.DBF
通道 ORA_DISK_1: 正在启动段 12015-12-22 19:56:14
通道 ORA_DISK_1: 已完成段 12015-12-22 19:56:29
段句柄=C:\APP\ORACLE\FAST_RECOVERY_AREA\CYANG\809378F024254A0AAF1C7D06CC6D9706\BACKUPSET\2015_12_22\O1_MF_NNNDF_TAG20151222T195614_C7LGLYKM_.BKP 标记=TAG20151222T195614
 注释=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:15
完成 backup 于 2015-12-22 19:56:29

启动 backup 于 2015-12-22 19:56:29
使用通道 ORA_DISK_1
说明与资料档案库中的任何归档日志都不匹配
由于没有要备份的文件而取消了备份
完成 backup 于 2015-12-22 19:56:29

启动 Control File and SPFILE Autobackup 于 2015-12-22 19:56:30
段 handle=C:\APP\ORACLE\FAST_RECOVERY_AREA\CYANG\AUTOBACKUP\2015_12_22\O1_MF_S_899150190_C7LGMGKY_.BKP comment=NONE
完成 Control File and SPFILE Autobackup 于 2015-12-22 19:56:31

# 进行诊断,结果无法使用
RMAN> list failure;

RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: list 命令 (在 12/22/2015 19:59:16 上) 失败
RMAN-07536: 在连接至可插入数据库时不允许使用命令

RMAN> restore datafile 8,9,10;

启动 restore 于 2015-12-22 19:59:35
使用通道 ORA_DISK_1

通道 ORA_DISK_1: 正在开始还原数据文件备份集
通道 ORA_DISK_1: 正在指定从备份集还原的数据文件
通道 ORA_DISK_1: 将数据文件 00008 还原到 C:\APP\ORACLE\ORADATA\CYANG\DATAFILE\O1_MF_SYSAUX_BYCMNHW0_.DBF
通道 ORA_DISK_1: 将数据文件 00009 还原到 C:\APP\ORACLE\ORADATA\CYANG\DATAFILE\O1_MF_USERS_BYCMNHWP_.DBF
通道 ORA_DISK_1: 将数据文件 00010 还原到 C:\APP\ORACLE\ORADATA\CYANG\DATAFILE\O1_MF_EXAMPLE_BYCMNHVM_.DBF
通道 ORA_DISK_1: 正在读取备份片段 C:\APP\ORACLE\FAST_RECOVERY_AREA\CYANG\809378F024254A0AAF1C7D06CC6D9706\BACKUPSET\2015_12_22\O1_MF_NNNDF_TAG20151222T195614_C7LGLYKM_.
BKP
通道 ORA_DISK_1: 段句柄 = C:\APP\ORACLE\FAST_RECOVERY_AREA\CYANG\809378F024254A0AAF1C7D06CC6D9706\BACKUPSET\2015_12_22\O1_MF_NNNDF_TAG20151222T195614_C7LGLYKM_.BKP 标记
 = TAG20151222T195614
通道 ORA_DISK_1: 已还原备份片段 1
通道 ORA_DISK_1: 还原完成, 用时: 00:00:15
完成 restore 于 2015-12-22 19:59:50

RMAN> recover datafile 8,9,10;

启动 recover 于 2015-12-22 20:00:14
使用通道 ORA_DISK_1

正在开始介质的恢复
介质恢复完成, 用时: 00:00:00

完成 recover 于 2015-12-22 20:00:15

RMAN> alter database datafile 8,9,10 online;

已处理语句

RMAN> sql 'select * from test1';

sql 语句: select * from test1

RMAN> select * from test1;

        ID
----------
         1
         2
         3
         4
         5

# 12C中,在RMAN里面执行sql语句,不用再使用如下格式,直接写sql就可以,如果沿用老格式会有错误的:
RMAN> sql 'select * from test1';

sql 语句: select * from test1

RMAN> set echo on

回显已打开

RMAN> sql 'select * from test1';
sql 'select * from test1';
sql 语句: select * from test1


RMAN>

在库非OPEN状态的时候进行数据文件的恢复

这儿可以为所欲为了,可以还原任何数据文件包里system和undo表空间下的。
命令和步骤和上吗一样,简要命令:

$ rman target /
RMAN> shutdown abort;
RMAN> startup mount;
RMAN> restore datafile 1;
RMAN> recover datafile 1;
RMAN> alter database open;

#采用文件的绝对路径进行恢复
$ rman target /
RMAN> shutdown abort;
RMAN> startup mount;
RMAN> restore datafile '/u01/dbfile/o12c/system01.dbf';
RMAN> recover datafile '/u01/dbfile/o12c/system01.dbf';
RMAN> alter database open;

将数据文件恢复到非默认位置

当原磁盘坏掉的时候,我们新建立一个文件系统将备份的数据文件恢复到别的路径,这是一个很常见的场景,如同sql中的 ALTER DATABASE RENAME FILE 命令类似。


# 脱机模式下
$ rman target /
RMAN> startup mount;
#运行run{}代码块
run{
set newname for datafile 4 to '/u02/dbfile/o12c/users01.dbf';
set newname for datafile 5 to '/u02/dbfile/o12c/users02.dbf';
restore datafile 4, 5;
switch datafile all; # Updates repository with new datafile location.
recover datafile 4, 5;
alter database open;
}

# 12c以前的版本,open模式下
run{
sql 'alter database datafile 4, 5 offline';
set newname for datafile 4 to '/u02/dbfile/o12c/users01.dbf';
set newname for datafile 5 to '/u02/dbfile/o12c/users02.dbf';
restore datafile 4, 5;
switch datafile all; # Updates repository with new datafile location.
recover datafile 4, 5;
sql 'alter database datafile 4, 5 online';
}

# 12C中,open模式下
run{
alter database datafile 4, 5 offline;
set newname for datafile 4 to '/u02/dbfile/o12c/users01.dbf';
set newname for datafile 5 to '/u02/dbfile/o12c/users02.dbf';
restore datafile 4, 5;
switch datafile all; # Updates repository with new datafile location.
recover datafile 4, 5;
alter database datafile 4, 5 online;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

贤时间

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值