oracle rman 全库备份 异地恢复 之更改数据文件路径恢复(使用到Linux的nfs网络磁盘共享挂载)

一、linux下将远程nfs共享磁盘mount到本地

参考文章:
https://blog.csdn.net/paladinzh/article/details/88954425
https://blog.csdn.net/GX_1_11_real/article/details/82622391

在服务端机器上编辑/etc/exports文件指定本地目录给远程主机:
/opt/oracle/flash_recovery_area/ORCL/backupset 192.168.3.55(rw,no_root_squash)
说明:将/opt/oracle/flash_recovery_area/ORCL/backupset目录共享给客户机器192.168.3.55

在客户机器192.168.3.55上挂载:
mount -t nfs -o rw,bg,hard,nointr,rsize=32768,wsize=32768,timeo=600,actimeo=0 192.168.3.65:/opt/oracle/flash_recovery_area/ORCL/backupset /home/oracle/oracle/oradata2/flash_recovery_area/backupset
说明:将服务端机器192.168.3.65的/opt/oracle/flash_recovery_area/ORCL/backupset目录挂载到客户机器的/home/oracle/oracle/oradata2/flash_recovery_area/backupset(挂载点)上

二、全库备份及异地恢复

相关配置查询命令:
archive log list; --查看归档模式
show parameter DB_RECOVERY_FILE_DEST; --查看快闪恢复区
alter system set db_recovery_file_dest='/usr/date/oracle/flash_recovery_area'; --更改快闪恢复区径路(恢复时从快闪恢复区恢复)
alter system set db_recovery_file_dest_size='/usr/date/oracle/flash_recovery_area'; --更改快闪恢复区大小
oracle用户下登录: rman target /
查看rman配置参数:show all;

rman中执行
CONFIGURE DEVICE TYPE DISK PARALLELISM 4 BACKUP TYPE TO BACKUPSET; --设置RMAN备份和恢复的并行度,默认一个,设置通道数量越多备份和恢复越快。备份文件类型为备份集。
CONFIGURE CONTROLFILE AUTOBACKUP ON; --设置控制文件自动备份,一旦数据库结构变化或者备份数据库过程中,控制文件会自动再备份到指定目录下。
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/usr/date/oracle/flash_recovery_area/ORCL/autobackup/%F'; --配置控制文件自动备份到磁盘上的指定目录。
CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT '/usr/date/oracle/flash_recovery_area/ORCL/backupset/%d_db_%u'; --配置数据文件自动备份到磁盘上的指定目录,并指定文件格式。

alter database backup controlfile to trace as '/opt/oracle/flash_recovery_area/ORCL/autobackup/hbkcontrol.log'; --备份controlfile,这条命令会把控制文件的信息转存出来,包括数据文件信息等等,然后就可以查看到控制文件中的信息了。此处转储为.log文件

1. A机上全库备份

A库上登录到rman并记录A库的DBID,然后进行一次全库备份(备份文件类型为备份集):

[oracle@localhost ~]$ rman target / --登录到rman
Recovery Manager: Release 10.2.0.1.0 - Production on 2 20:45:29 2022
Copyright (c) 1982, 2005, Oracle.  All rights reserved.
connected to target database: ORCL (DBID=1543378393) --记住A库DBID

RMAN> backup as compressed backupset database include current controlfile plus archivelog; --全库、控制文件、归档文件备份。as compressed压缩备份

备份完成后拷贝备份集文件到B机的快闪恢复区目录进行B库恢复。

2. B机上恢复

由于A机和B机的数据文件路径不同所以需要使用set newname命令设置新的路径如下:

注:可以是A库原路径 to B库的新路径,也可以是A库的数据文件ID to B库的新路径。且必须一代码块执行。如下:
run {
set newname for datafile '/opt/oracle/oradata/orcl/example01.dbf' to '/usr/date/oracle/102/data/example01.dbf';
restore database;
switch datafile all;
}

run {
set newname for datafile 3 to '/usr/date/oracle/102/data/example01.dbf';
restore database;
switch datafile all;
}
--switch datafile命令在恢复database后执行来使控制文件中信息保持一致(保持为更改后的新路径)

--下面是自己写的两个改变数据文件路径的SQL语句(在原库执行)
select 'set newname for datafile '''||file_name||''' to ''/usr/date/oracle/102/data'||substr(file_name,instr(file_name,'/',-1))||''';' from dba_data_files
order by tablespace_name
select 'set newname for datafile '||file_id||' to ''/usr/date/oracle/102/data'||substr(file_name,instr(file_name,'/',-1))||''';' from dba_data_files
order by tablespace_name

从快闪恢复区获取备份文件恢复,备份文件类型为备份集的恢复过程:

注意:如图复制run命令代码块时多出的undefined字母请去掉

SQL> startup nomount --先shutdown immediate数据库再启动到nomount状态

RMAN> set DBID=1543378393 --设置要恢复的A库的DBID

RMAN> restore controlfile from "/usr/date/oracle/flash_recovery_area/ORCL/autobackup/c-1543378393-20220112-00"; --指定恢复控制文件

RMAN> alter database mount;

RMAN> run {
set newname for datafile '/opt/oracle/oradata/orcl/example01.dbf' to '/usr/date/oracle/102/data/example01.dbf';
set newname for datafile '/opt/oracle/oracle/udata/PRODUCTION_INDEX.dbf' to '/usr/date/oracle/102/data/PRODUCTION_INDEX.dbf';
set newname for datafile '/opt/oracle/oradata/orcl/sysaux01.dbf' to '/usr/date/oracle/102/data/sysaux01.dbf';
set newname for datafile '/opt/oracle/oradata/orcl/system01.dbf' to '/usr/date/oracle/102/data/system01.dbf';
set newname for datafile '/opt/oracle/oradata/orcl/undotbs01.dbf' to '/usr/date/oracle/102/data/undotbs01.dbf';
set newname for datafile '/opt/oracle/oradata/orcl/users01.dbf' to '/usr/date/oracle/102/data/users01.dbf';
restore database;
switch datafile all;
}

--拷贝当前联机日志然后recover database; 恢复,A机拷贝到B机
scp /opt/oracle/oradata/orcl/redo01.log oracle@192.168.0.51:/opt/oracle/oradata/orcl
scp /opt/oracle/oradata/orcl/redo02.log oracle@192.168.0.51:/opt/oracle/oradata/orcl
scp /opt/oracle/oradata/orcl/redo03.log oracle@192.168.0.51:/opt/oracle/oradata/orcl

RMAN> recover database;
RMAN> alter database open resetlogs; --因为是新库,日志文件已经没有了,所以以resetlogs模式启动,重做日志序列号将重置从1开始


总结

1. alter database backup controlfile to trace as '/opt/oracle/flash_recovery_area/ORCL/autobackup/hbkcontrol.log'; --备份controlfile,这条命令会把控制文件的信息转存出来,包括数据文件信息等等,然后就可以查看到控制文件中的信息了。此处转储为.log文件

2.  注意B机上重新定义的数据文件存放目录的权限问题是否是oracle用户。因为恢复时的操作用户为oracle用户(根据你自己创建的操作用户来)。

3. 报如下错误:RMAN-03002: failure of recover command at 01/11/2022 22:18:07
RMAN-06054: media recovery requesting unknown log: thread 1 seq 47523 lowscn 38611778350

ORA-01547: warning: RECOVER succeeded but OPEN RESETLOGS would get error below
ORA-01190: control file or data file 1 is from before the last RESETLOGS
ORA-01110: data file 1: '/opt/oracle/oradata/orcl/system01.dbf'
时可以使用recover database until scn 47523;或recover database noredo;进行重做日志不完全恢复。

4. 临时表空间temp01.dbf数据文件有坏块可以重建:
alter tablespace temp add tempfile '/opt/oracle/oradata/orcl/temp02.dbf' size 1024m reuse autoextend on next 256m maxsize unlimited;
alter database tempfile '/opt/oracle/oradata/orcl/temp01.dbf' drop; 

5. 报如下错误:RMAN-03002: failure of alter db command at 01/27/2022 16:31:47
ORA-00344: unable to re-create online log '/home/oracle/oracle/oradata/orcl/redo01.log'
ORA-27040: file create error, unable to create file
Linux-x86_64 Error: 2: No such file or directory
复制到B机的重做日志文件径路错误报错时可以修改路径后再: recover database;如下:
alter database rename file '/home/oracle/oracle/oradata/orcl/redo01.log' to '/opt/oracle/oradata/orcl/redo01.log';
alter database rename file '/home/oracle/oracle/oradata/orcl/redo02.log' to '/opt/oracle/oradata/orcl/redo02.log';
alter database rename file '/home/oracle/oracle/oradata/orcl/redo03.log' to '/opt/oracle/oradata/orcl/redo03.log';
 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值