rman 异机备份

1 篇文章 0 订阅
1 篇文章 0 订阅

rman 异机备份

1 环境准备

服务器A:Linux7

ip地址:192.168.236.152

oracle版本:11.2.0.4

建库:orcl

服务器B:Linux7

ip地址:192.168.236.154

oracle版本:11.2.0.4

2 rman备份

[oracle@oracle11g ~]$ rman target /
RMAN> backup database;
RMAN> list backupset;

3 传备份文件到备库

#生成pfile文件
SQL> create pfile from spfile;

[oracle@oracle11g 2023_04_11]$ ll
总用量 1169936
-rw-r-----. 1 oracle dba    9830400 4月  11 14:35 o1_mf_ncsn0_TAG20230411T143400_l39zwtyd_.bkp
-rw-r-----. 1 oracle dba 1188184064 4月  11 14:34 o1_mf_nnnd0_TAG20230411T143400_l39ztrdr_.bkp
[oracle@oracle11g 2023_04_11]$ scp * 192.168.236.154:/opt/oracle/fast_recovery_area/ORCL/backupset/2023_04_11/

[oracle@oracle11g ~]$ cd $ORACLE_HOME
[oracle@oracle11g dbhome_1]$ cd dbs/
#将pfile文件发送到服务器B
[oracle@oracle11g dbs]$ scp initorcl.ora 192.168.236.154:/opt/oracle/oracle/product/11.2.0/dbhome_1/dbs/initorcl.ora

4 创建目录

在B服务器上创建目录

[oracle@oracle11g_02 ~]$ mkdir -p /opt/oracle/admin/orcl/adump
[oracle@oracle11g_02 ~]$ mkdir -p /opt/oracle/oradata/orcl/
[oracle@oracle11g_02 ~]$ mkdir -p /opt/oracle/fast_recovery_area/orcl/

5 恢复

使用a服务器上拷贝过来的pfile启动数据库到nomount状态

SQL> startup nomount pfile='/opt/oracle/oracle/product/11.2.0/dbhome_1/dbs/initorcl.ora';

恢复控制文件

[oracle@oracle11g_02 dbs]$ rman target /
RMAN> restore controlfile from '/opt/oracle/fast_recovery_area/ORCL/backupset/2023_04_11/o1_mf_ncsn0_TAG20230411T143400_l39zwtyd_.bkp';
#挂载
SQL> alter database mount;

恢复数据文件

RMAN> restore database;
RMAN> recover database;

错误:

RMAN> recover database;

Starting recover at 11-APR-23
using channel ORA_DISK_1

starting media recovery

unable to find archived log
archived log thread=1 sequence=9
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of recover command at 04/11/2023 16:33:18
RMAN-06054: media recovery requesting unknown archived log for thread 1 with sequence 9 and starting SCN of 1060285

在11g官方文档error messages中对错误描述如下:

RMAN-06054: media recovery requesting unknown archived log for thread string with sequence string and starting SCN of string
Cause: Media recovery is requesting a log whose existence is not recorded in the recovery catalog or target database control file.
Action: If a copy of the log is available, then add it to the recovery catalog and/or control file via a CATALOG command and then retry the RECOVER command. If not, then a point-in-time recovery up to the missing log is the only alternative and database can be opened using ALTER DATABASE OPEN RESETLOGS command.

可见,出先此错误的原因是恢复需要的日志记录在控制文件或恢复目录中找不到。原因由于备份时有一个日志还是online redo,没有copy过来。解决方法分两种情况:
1.如果相关的日志存在且可用的话,就将此日志记录添加到控制文件或恢复目录中。
2.如果相关的日志已经被删除了或不可用了,那么就按照错误的提示scn将数据库恢复到此scn,本案例是1060285。也就是说此时数据库只能进行不完全恢复了,在打开数据库时得使用resetlogs打开。

RMAN> recover database until scn 1060285;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Oracle数据库中,使用RMAN进行异机异目录恢复需要以下步骤: 1. 在目标数据库服务器上创建与源数据库相同的目录结构。 2. 在目标数据库服务器上创建与源数据库相同的数据库实例,包括实例名、SID、监听器、参数文件等。 3. 将备份文件从源数据库服务器拷贝到目标数据库服务器上的对应目录中。 4. 在目标数据库服务器上使用RMAN连接到目标数据库实例。 5. 执行RMAN命令进行恢复操作,包括设置恢复目标、设置恢复策略、设置备份文件位置等。 6. 执行完毕后,关闭数据库并重启实例。 具体步骤如下: 1. 在目标数据库服务器上创建与源数据库相同的目录结构。 需要创建与源数据库相同的目录结构,包括控制文件、数据文件、归档日志和备份文件等目录。 2. 在目标数据库服务器上创建与源数据库相同的数据库实例。 需要创建与源数据库相同的数据库实例,包括实例名、SID、监听器、参数文件等。 3. 将备份文件从源数据库服务器拷贝到目标数据库服务器上的对应目录中。 需要将备份文件从源数据库服务器拷贝到目标数据库服务器上的对应目录中,保证备份文件在恢复时能被找到。 4. 在目标数据库服务器上使用RMAN连接到目标数据库实例。 使用以下命令连接到目标数据库实例: ``` rman target sys/password@targetdb ``` 其中,sys/password是目标数据库的用户名和密码,targetdb是目标数据库的服务名或SID。 5. 执行RMAN命令进行恢复操作。 首先,设置恢复目标: ``` run { set until time "to_date('2022-12-31 23:59:59', 'YYYY-MM-DD HH24:MI:SS')"; set newname for datafile '/path/to/source/datafile01.dbf' to '/path/to/target/datafile01.dbf'; set newname for datafile '/path/to/source/datafile02.dbf' to '/path/to/target/datafile02.dbf'; ... set newname for datafile '/path/to/source/datafileN.dbf' to '/path/to/target/datafileN.dbf'; restore database; switch datafile all; recover database; } ``` 其中,set until time语句指定恢复到的时间点,set newname语句指定恢复后的数据文件路径和名称。 然后,设置恢复策略: ``` run { set archivelog destination to '/path/to/target/archivelog'; restore archivelog all; } ``` 其中,set archivelog destination语句指定归档日志的恢复目录,restore archivelog all语句恢复所有的归档日志。 最后,设置备份文件位置: ``` run { allocate channel ch1 type 'sbt_tape'; set controlfile autobackup format for device type sbt to '/path/to/controlfile_%F.bkp'; backup current controlfile for standby; } ``` 其中,allocate channel语句指定备份设备类型和通道,set controlfile autobackup format语句指定自动备份控制文件的格式,backup current controlfile for standby语句备份当前的控制文件。 6. 执行完毕后,关闭数据库并重启实例。 在所有操作执行完毕后,关闭数据库并重启实例,然后可以进行测试。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值