1、先查找备库控制文件路径

先在备库上找出控制文件的路径,通过和主库一样,不过为了以防万一,还是check为好。

SQL>  select name from v$controlfile;

NAME

--------------------------------------------------------------------------------

/Oracle/app/oracle/oradata/powerdes/control01.ctl

/oracle/app/oracle/fast_recovery/powerdes/control02.ctl

SQL>

2、准备控制文件备份文件

在主库上备份当前的控制文件,记得生成的备份文件要在执行全备之前生成,而且命令行也是带for standby字样的backup current controlfile for standby format'/home/oracle/ctlfile.bak'才行,也可以手动提前生成。

RMAN> backup current controlfile for standby format '/home/oracle/ctlfile.bak';

Starting backup at 2016-11-23 21:20:41

using channel ORA_DISK_1

channel ORA_DISK_1: starting full datafile backup set

channel ORA_DISK_1: specifying datafile(s) in backup set

including standby control file in backup set

channel ORA_DISK_1: starting piece 1 at 2016-11-23 21:20:42

channel ORA_DISK_1: finished piece 1 at 2016-11-23 21:20:43

piece handle=/home/oracle/ctlfile.bak tag=TAG20161123T212041 comment=NONE

channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01

Finished backup at 2016-11-23 21:20:43

RMAN>

然后等备份任务结束后,在主库上,将备份前生成的控制文件、最近的一份备份文件到备库的相同目录:

scp /oracle/app/oracle/oradata/powerdes/control01.ctl 192.168.3.112:/home/oracle/

scp -r /data/backup/data/2016-11-23 192.168.3.112:/home/oracle/

3、检查主库备库环境

获取备库的tns:(我的是earth_m2)

cat $ORACLE_HOME/network/admin/tnsnames.ora

earth_m2 =

(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.3.112)(PORT = 1521))

)

(CONNECT_DATA =

(SERVICE_NAME = powerdes)

)

)

(1)查看主库备库SID名字是否统一,这个很重要

# 备库:

[oracle@t1_dbm1_3_112 data]$  echo $ORACLE_SID

powerdes

[oracle@t1_dbm1_3_112 data]$

# 主库:

[oracle@t1_dbm1_3_111 ~]$  echo $ORACLE_SID

powerdes

[oracle@t1_dbm1_3_111 ~]$

(2)查看主库备份传输密码是否一致:

# 备库:

[oracle@t1_dbm1_3_112 dbs]$ cd $ORACLE_HOME/dbs

[oracle@t1_dbm1_3_112 dbs]$  strings orapwpowerdes

]\[Z

ORACLE Remote Password file

INTERNAL

89F7167638478F13

0Cv#

B6E56CBCA47429E2

[oracle@t1_dbm1_3_112 dbs]$

# 主库:

[oracle@t1_dbm1_3_111 ~]$ cd $ORACLE_HOME/dbs

[oracle@t1_dbm1_3_111 dbs]$ strings orapwpowerdes

]\[Z

ORACLE Remote Password file

INTERNAL

89F7167638478F13

0Cv#

B6E56CBCA47429E2

[oracle@t1_dbm1_3_111 dbs]$

4、启动备库到nomount状态

在备库上,直接copy覆盖控制文件

cp /home/oracle/ctlfile.bak /oracle/app/oracle/oradata/powerdes/control01.ctl

cp /home/oracle/ctlfile.bak /oracle/app/oracle/fast_recovery/powerdes/control02.ctl

然后启动到nomount状态

SQL> startup nomount

ORACLE instance started.

Total System Global Area 8551575552 bytes

Fixed Size              2270360 bytes

Variable Size              7247760232 bytes

Database Buffers    1291845632 bytes

Redo Buffers                 9699328 bytes

SQL>

5、使用duplicate恢复备库

在主库上,使用rman登录远程备库earth_m2

[oracle@t1_dbm1_3_111 ~]$ rlwrap rman target / auxiliary sys/04181123@earth_m2

Recovery Manager: Release 11.2.0.4.0 - Production on Wed Nov 23 20:05:54 2016

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

connected to target database: POWERDES (DBID=3481287162)

connected to auxiliary database: POWERDES (not mounted)

RMAN>

在rman命令行里面执行恢复命令:

run {
allocate auxiliary channel c1 devicetype disk;
allocate auxiliary channel c2 devicetype disk;
duplicate target database for standbynofilenamecheck dorecover;
release channel c1;
release channel c2;
}
#nofilenamecheck:必须指定NOFILENAMECHECK参数,避免覆盖primary数据库的当前的数据文件。另外主从路径一致,不需要执行文件路径以及check了
#release :这是关闭 前两行开启的通道

执行过程比较漫长,屏幕滚动信息比较多,这里不贴出来了,省略过……

执行命令后,需要很长时间,需要等待,因为需要写入文件到备库的数据文件目录里面,找个时候,在备库的alert log后台有如下记录日志,表明正在写数据文件:

Full restore complete of datafile 4 /oracle/app/oracle/oradata/powerdes/users01.dbf.  Elapsed time: 0:00:00

checkpoint is 32945676

last deallocation scn is 3

Wed Nov 23 20:14:42 2016

Full restore complete of datafile 3 /oracle/app/oracle/oradata/powerdes/undotbs01.dbf.  Elapsed time: 0:00:05

checkpoint is 32945676

last deallocation scn is 32897307

Undo Optimization current scn is 32934775

Wed Nov 23 20:15:50 2016

Full restore complete of datafile 5 /oracle/app/oracle/oradata/powerdes/example01.dbf.  Elapsed time: 0:01:18

checkpoint is 32945676

last deallocation scn is 32806636

…………

6、ORA-01152:问题

最后rman命令行里面duplicate命令执行完,窗口界面上有如下报错信息:

Signalling error 1152 for datafile 1!

Errors in file /oracle/app/oracle/diag/rdbms/earth_m2/powerdes/trace/powerdes_pr00_4069.trc:

ORA-01547: warning: RECOVER succeeded but OPEN RESETLOGS would get error below

ORA-01152: file 1 was not restored from a sufficiently old backup

ORA-01110: data file 1: '/oracle/app/oracle/oradata/powerdes/system01.dbf'

ORA-1547 signalled during: alter database recover cancel...

^C

有报错没有关系,接下来直接开始应用日志,启动归档日志传输,通过应用归档日志来保证主备数据的一致性:

# 先开始启动传输开始应用日志

SQL> alter database recover managed standby database using current logfile disconnect from session;

Database altered.

SQL># 实时观察应用日志状态

SQL> select sequence#,applied from v$archived_log order by sequence# asc;

……

SEQUENCE# APPLIED

---------- ---------

2334 YES

2335 YES

2301 rows selected.

SQL> # 等观察应用日志结束后,退出日志传输

SQL> alter database recover managed standby database cancel;

Database altered.

SQL> # 将备库从mount启动到open状态

SQL> alter database open;

Database altered.

SQL> # 查看备库状态,就会变成READ ONLY

SQL> select database_role,open_mode from v$database;

DATABASE_ROLE     OPEN_MODE

---------------- --------------------

PHYSICAL STANDBY READ ONLY

SQL> # 然后再次启动日志应用

SQL> alter database recover managed standby database using current logfile disconnect from session;

Database altered.

SQL>  # 查看open_mode,有了READ ONLY WITH APPLY字样,OK

SQL> select database_role,open_mode from v$database;

DATABASE_ROLE     OPEN_MODE

---------------- --------------------

PHYSICAL STANDBY READ ONLY WITH APPLY

SQL>

至此,Data Guard备库修复完成,如果遇到了ORA-01152问题,不需要慌张,可以试试应用日志来恢复数据。

ORACLE 11g 用Duplicate恢复Data Guard 备库详细过程的更多相关文章

  1. oracle data guard备库备份恢复

    客户有套data guard环境,主库在阿里云上,备库在本地机房,现在想定期做备份,但是因为一些原因,备份阿里云上的主库实现会有些问题,所以只能备份本地的备库.目前需求就是测试备库的备份文件是否可以进 ...

  2. Oracle 11gR2 Database和Active Data Guard迁移案例

    客户一套核心系统由一台Oracle Database 11.2.0.3.4单机和一台Active Data Guard组成,分别运行在两台PC服务器上,Oracle Linux 5.8 x86_64b ...

  3. 【Oracle RAC】Linux系统Oracle11gR2 RAC安装配置详细过程V3.1(图文并茂)

    [Oracle RAC]Linux系统Oracle11gR2 RAC安装配置详细过程V3.1(图文并茂) 2 Oracle11gR2 RAC数据库安装准备工作2.1 安装环境介绍2.2 数据库安装软件 ...

  4. 怎样使用 RMAN 增量备份恢复 data guard log gap(日志断档)

    主库查询最小scn 信息: SQL> col current_scn for 999999999999999 SQL>  SELECT CURRENT_SCN FROM V$DATABAS ...

  5. 搭建DG(data guard),及搭建过程中遇到的一些小问题

    一.准备工作:主库:虚拟机名称host06 主机名:host06 IP:192.168.100.60 db_name&SID:ENMO  db_unique_name:PROD 存储:文件系统 ...

  6. Oracle 11G DataGuard生产环境又一次启动具体过程

     场景,重新启动数据库,不重新启动linux系统,所以不用考虑监听程序,#linux输入lsnrctl start1 数据库关闭1.1 关闭主库SHUTDOWN IMMEDIATE; SQL> ...

  7. Oracle 11g R2创建数据库之手工建库方式

    在之前的博文当中梳理了关于DBCA静默方式创建数据库的过程,本文就手工通过SQL*PLUS客户端采用CREATE DATABASE语句创建数据库.这种建库方式就是完全使用手工SQL语句创建数据库,通常 ...

  8. kingbaseES V8R6集群备份恢复案例之---备库作为repo主机执行物理备份

    ​ 案例说明: 此案例是在KingbaseES V8R6集群环境下,当主库磁盘空间不足时,执行sys_rman备份,将集群的备库节点作为repo主机,执行备份,并将备份存储在备库的磁盘空间. 集群架构 ...

  9. Oracle 11g 异机恢复参考文档

      原库 目标库 操作系统 CentOS 6.4 CentOS 6.4 主机名 sht-sgmhadoopnn-01 sht-sgmhadoopnn-02 IP 172.16.101.55 172.1 ...

随机推荐

  1. php无缝连接滚动

    最近用到了,仿照别人的写了一个 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "ht ...

  2. 《使用this作为返回值的相关问题》

    //使用this作为返回值的相关问题: /* 如果在某个方法中把this作为返回值,则可以多次连续的调用同一个方法,从而使得代码 更加简洁,但是,这种把this作为返回值的方法可能造成实际意义的模糊, ...

  3. .net 找回密码的第一步 第二步 第三步的进程条

    先写一个div作为存放这个进程条的容器 开始写js 根据jQuery选择器找到需要加载ystep1的容器 loadstep方法可以初始化 steps参数表示步骤名称,content则是鼠标移动到当前位 ...

  4. 收藏的博客--PHP

    32位Win7下安装与配置PHP环境(一至三)  http://blog.csdn.net/yousuosi/article/details/9448903

  5. Windows下adb push 总是提示Failed to copy "XX.apk" to 'system/app':Read-only file system

    一般情况看到这种提示我们会想到需要root权限,然后敲上adb remount,但是当我们执行过adb remount后,提示成功,但执行push命令依旧无法完成push. 那么此时我们的做法应该是重 ...

  6. Corporative Network_并查集

    Description A very big corporation is developing its corporative network. In the beginning each of t ...

  7. android:windowSoftInputMode及其他部分属性用法

    本文来自http://blog.csdn.net/liuxian13183/ ,引用必须注明出处! 今天我们来讲讲android:windoSoftInputMode的用法,许多同学会为软键盘的弹出. ...

  8. 4、网页制作Dreamweaver(样式表CSS)

    样式表style 制作一个风格统一的网页,需要样式表对颜色.字体等属性的规范,同时也省去在body中多次定义的麻烦,所以一个样式表是必不可少的. 样式表有两种引用的方法:一种是直接写在html的< ...

  9. Google Polymer以及Web UI框架

    时代在进步,原本前端只是用来简单的数据显示以及提交数据到后端处理逻辑的地方,而随着SPA的发展,前端的逻辑也越来越是庞大,恰巧,今天看微博的时候,发现一个概念讨论的比较多,就是 Web Compone ...

  10. Shell字符串截取

    shell中截取字符串的方法有很多中, ${expression}一共有9种使用方法. ${parameter:-word} ${parameter:=word} ${parameter:?word} ...