由于希望测试一个DG问题,所以在Vmware上搭建测试环境,primary和standby放在同一台主机上。   
搭建过程就不赘述,但是在最后,遇到了一些问题,这里记录一下,以备后续查阅。

----搭建过程中的一些命令-----

1
2
3
4
5
6
7
1 . backup database format  '/tmp/bk_%U' ;
2 . backup current controlfile  for  standby format  '/tmp/stdbyctl.bkp' ;
3 . catalog start  with  '/tmp/' ;
4 set  controlfile autobackup format  for  device type disk to  '/tmp/%F' ;
    restore standby controlfile from  '/tmp/stdbyctl.bkp'
5 . RMAN> CONNECT TARGET SYS/oracle@db;
RMAN> CONNECT AUXILIARY SYS/oracle@stddb;

6. 最会std的pfile文件内容

1
2
3
4
5
6
7
8
9
10
11
12
13
db_file_name_convert=  '+data/db/' , '+reco/stddb/' 
log_file_name_convert=  '+RECO/db/archivelog/' , '+RECO/stddb/archivelog_std/' 
log_archive_format=%t_%s_%r.arc 
standby_file_management=auto 
compatible= '11.2.0.0.0' 
control_files= '+RECO/stddb/controlfile/current.260.834947597'     <<<<<<在恢复control之前,先设定为control_files= '+RECO' 恢复之后,根据实际位置更改 
db_block_size= 8192 
processes= 150 
remote_login_passwordfile= 'EXCLUSIVE' 
undo_tablespace= 'UNDOTBS1' 
undo_management=auto 
log_archive_config= 'dg_config=(primdb,stbdb)' 
log_archive_dest_1= 'location=+RECO/stddb/archivelog_std/  valid_for=(all_logfiles,all_roles)  db_unique_name=stbdb'

问题一:

在设置listener的过程中,由于设定静态监听,在standby启动之后,同时又会注册一个动态监听,目前有两个监听,其中动态监听状态为blocked。   
遇到的问题就是,在duplicate连接的时候,就会发生ORA-12528错误,而不能正常连接到standby。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[oracle@OEL ~]$ lsnrctl status
LSNRCTL  for  Linux: Version  11.2 . 0.1 . 0  - Production on  30 -DEC- 2013  10 : 46 : 03
Copyright (c)  1991 2009 , Oracle.  All rights reserved.
Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT= 1521 ))
STATUS of the LISTENER 
------------------------ 
Alias                     LISTENER 
Version                   TNSLSNR  for  Linux: Version  11.2 . 0.1 . 0  - Production 
Start  Date                 27 -NOV- 2013  12 : 40 : 26 
Uptime                     32  days  22  hr.  5  min.  37  sec 
Trace Level               off 
Security                  ON: Local OS Authentication 
SNMP                      OFF 
Listener Parameter File   /u01/app/ 11.2 . 0 /grid/network/admin/listener.ora 
Listener Log File         /u01/app/oracle/diag/tnslsnr/OEL/listener/alert/log.xml 
Listening Endpoints Summary... 
   (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521))) 
   (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=OEL.localdomain)(PORT= 1521 ))) 
Services Summary... 
Service  "+ASM"  has  1  instance(s). 
   Instance  "+ASM" , status READY, has  1  handler(s)  for  this  service... 
Service  "PRIMDB"  has  1  instance(s). 
   Instance  "db" , status READY, has  1  handler(s)  for  this  service... 
Service  "dbXDB"  has  1  instance(s). 
   Instance  "db" , status READY, has  1  handler(s)  for  this  service... 
Service  "stbdb"  has  1  instance(s). 
   Instance  "stbdb" , status UNKNOWN, has  1  handler(s)  for  this  service...    <<<<<<<<<<<<<<<<<<<<<< 
Service  "stddb"  has  1  instance(s). 
   Instance  "stddb" , status READY, has  1  handler(s)  for  this  service...     <<<<<<<<<<<<<<<<<<<<<< 
The command completed successfully 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

通过设置tnsnames.ora,可以解决这个问题。

1
2
3
4
5
6
7
8
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
stddb = 
(DESCRIPTION = 
   (ADDRESS_LIST = 
     (ADDRESS = (PROTOCOL = TCP)(HOST = OEL.localdomain)(PORT =  1521 )) 
  
  (CONNECT_DATA = (SERVICE_NAME = stddb)(UR=A)) <--------------------In order to avoid error ORA- 12528  )
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

问题二:

在执行下面命令之后,直接primary就crash掉,经过查询alert发现,是redo broken导致的   
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;

查询standby alert,发现如下信息:   
(在ALTER DATABASE RECOVER...开始之后,第一件事情就是clear redo log,这样就直接导致primary crash)

1
2
3
4
5
6
7
8
9
10
11
12
13
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
# tail -f alert_stddb.log 
Clearing online redo logfile  1  complete 
Clearing online redo logfile  2  +DATA/db/redo02.log 
Clearing online log  2  of thread  1  sequence number  5 
Clearing online redo logfile  2  complete 
Clearing online redo logfile  3  +DATA/db/redo03.log 
Clearing online log  3  of thread  1  sequence number  3 
Tue Dec  24  14 : 32 : 49  2013 
Clearing online redo logfile  3  complete 
Tue Dec  24  14 : 32 : 49  2013 
Media Recovery Waiting  for  thread  1  sequence  4 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

在重建几次之后,问题依然。   
由于datafile和archivelog都使用convert参数转换了,但是redo是无法转换的,如何解决这个问题呢?    
经过分析,发现在duplicate的最后,有一些警告信息:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
~~~~~~~~~duplicate the standby databsae~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
RMAN> CONNECT TARGET SYS/oracle@db; 
RMAN> CONNECT AUXILIARY SYS/oracle@stddb;
connected to auxiliary database: DB (not mounted)
RMAN> duplicate target database  for  standby;
Starting Duplicate Db at  24 -DEC- 13
allocated channel: ORA_AUX_DISK_1 
channel ORA_AUX_DISK_1: SID= 13  device type=DISK
contents of Memory Script:
    restore clone standby controlfile; 
executing Memory Script
Starting restore at  24 -DEC- 13
using channel ORA_AUX_DISK_1
channel ORA_AUX_DISK_1: starting datafile backup  set  restore
channel ORA_AUX_DISK_1: restoring control file 
channel ORA_AUX_DISK_1: reading from backup piece /tmp/stdbyctl.bkp 
channel ORA_AUX_DISK_1: piece handle=/tmp/stdbyctl.bkp tag=TAG20131224T133449 
channel ORA_AUX_DISK_1: restored backup piece  1 
channel ORA_AUX_DISK_1: restore complete, elapsed time:  00 : 00 : 08 
output file name=+RECO/stddb/controlfile/current. 259.835018533 
Finished restore at  24 -DEC- 13
contents of Memory Script:
    sql clone  'alter database mount standby database'
executing Memory Script
sql statement: alter database mount standby database
contents of Memory Script:
    set  newname  for  tempfile   1  to 
  "+RECO/stddb/temp01.dbf"
    switch  clone tempfile all; 
    set  newname  for  datafile   1  to 
  "+RECO/stddb/system01.dbf"
    set  newname  for  datafile   2  to 
  "+RECO/stddb/sysaux01.dbf"
    set  newname  for  datafile   3  to 
  "+RECO/stddb/undotbs01.dbf"
    set  newname  for  datafile   4  to 
  "+RECO/stddb/users01.dbf"
    restore 
    clone database 
   
executing Memory Script
executing command: SET NEWNAME
renamed tempfile  1  to +RECO/stddb/temp01.dbf  in  control file
executing command: SET NEWNAME
executing command: SET NEWNAME
executing command: SET NEWNAME
executing command: SET NEWNAME
Starting restore at  24 -DEC- 13
using channel ORA_AUX_DISK_1
channel ORA_AUX_DISK_1: starting datafile backup  set  restore
channel ORA_AUX_DISK_1: specifying datafile(s) to restore from backup  set 
channel ORA_AUX_DISK_1: restoring datafile  00001  to +RECO/stddb/system01.dbf 
channel ORA_AUX_DISK_1: restoring datafile  00002  to +RECO/stddb/sysaux01.dbf 
channel ORA_AUX_DISK_1: restoring datafile  00003  to +RECO/stddb/undotbs01.dbf 
channel ORA_AUX_DISK_1: restoring datafile  00004  to +RECO/stddb/users01.dbf 
channel ORA_AUX_DISK_1: reading from backup piece /tmp/bk_01osanei_1_1 
channel ORA_AUX_DISK_1: piece handle=/tmp/bk_01osanei_1_1 tag=TAG20131224T132953 
channel ORA_AUX_DISK_1: restored backup piece  1 
channel ORA_AUX_DISK_1: restore complete, elapsed time:  00 : 04 : 27 
Finished restore at  24 -DEC- 13
contents of Memory Script:
    switch  clone datafile all; 
executing Memory Script
datafile  1  switched to datafile copy
input datafile copy RECID= 1  STAMP= 835019033  file name=+RECO/stddb/system01.dbf 
datafile  2  switched to datafile copy 
input datafile copy RECID= 2  STAMP= 835019033  file name=+RECO/stddb/sysaux01.dbf 
datafile  3  switched to datafile copy 
input datafile copy RECID= 3  STAMP= 835019033  file name=+RECO/stddb/undotbs01.dbf 
datafile  4  switched to datafile copy 
input datafile copy RECID= 4  STAMP= 835019033  file name=+RECO/stddb/users01.dbf 
ORACLE error from auxiliary database: ORA- 01511 : error  in  renaming log/data files      <<<<<<<<<<<<<<<<<<<<<<<< 
ORA- 01275 : Operation RENAME  is  not allowed  if  standby file management  is  automatic.    <<<<<<<<<<<<<<<<<<<<<<<<
RMAN- 05535 : WARNING: All redo log files were not defined properly.
ORACLE error from auxiliary database: ORA- 01511 : error  in  renaming log/data files 
ORA- 01275 : Operation RENAME  is  not allowed  if  standby file management  is  automatic.
RMAN- 05535 : WARNING: All redo log files were not defined properly.
ORACLE error from auxiliary database: ORA- 01511 : error  in  renaming log/data files 
ORA- 01275 : Operation RENAME  is  not allowed  if  standby file management  is  automatic.
RMAN- 05535 : WARNING: All redo log files were not defined properly.
Finished Duplicate Db at  24 -DEC- 13 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

后手动修改当standby_file_management为MANUAL模式,可以duplicate并且rename成功,并rename正broken0~2.   
(这个是我在pfile中有这个standby_file_management=auto)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
   checkpoint  is  977553
   last deallocation scn  is  959057 
   Undo Optimization current scn  is  974128 
Tue Dec  24  15 : 16 : 57  2013 
Switch of datafile  1  complete to datafile copy 
   checkpoint  is  977553 
Switch of datafile  2  complete to datafile copy 
   checkpoint  is  977553 
Switch of datafile  3  complete to datafile copy 
   checkpoint  is  977553 
Switch of datafile  4  complete to datafile copy 
   checkpoint  is  977553 
alter database rename file  '+DATA/db/redo01.log'  to  'broken0' 
Completed: alter database rename file  '+DATA/db/redo01.log'  to  'broken0'    <<<<<<<< 
alter database rename file  '+DATA/db/redo02.log'  to  'broken1' 
Completed: alter database rename file  '+DATA/db/redo02.log'  to  'broken1' 
alter database rename file  '+DATA/db/redo03.log'  to  'broken2' 
Completed: alter database rename file  '+DATA/db/redo03.log'  to  'broken2' 
RFS connections are allowed

在执行ALTER DATABASE RECOVER...的时候,依然需要去清空redo,只不过,应经将redo rename了,所以不会影响主库的redo log了

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
~~~~~~~~~~~~~~~~~~~~~
Tue Dec  24  15 : 45 : 37  2013 
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION 
Attempt to start background Managed Standby Recovery process (stddb) 
Tue Dec  24  15 : 45 : 37  2013 
MRP0 started  with  pid= 21 , OS id= 21343 
MRP0: Background Managed Standby Recovery process started (stddb) 
  started logmerger process 
Tue Dec  24  15 : 45 : 43  2013 
Managed Standby Recovery not using Real Time Apply 
Parallel Media Recovery started  with  2  slaves 
Waiting  for  all non-current ORLs to be archived... 
All non-current ORLs have been archived. 
Errors  in  file /u01/app/oracle/product/ 11.2 . 0 /dbhome_1/log/diag/rdbms/stddb/stddb/ trace /stddb_mrp0_21343.trc: 
ORA- 00313 : open failed  for  members of log group  1  of thread  1 
ORA- 00312 : online log  1  thread  1 '/u01/app/oracle/product/11.2.0/dbhome_1/dbs/broken0'      <<<<<<<<<<<<<<<< 
ORA- 27037 : unable to obtain file status 
Linux-x86_64 Error:  2 : No such file or directory 
Additional information:  3 
...... 
Completed: ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION 
Clearing online redo logfile  1  complete 
Errors  in  file /u01/app/oracle/product/ 11.2 . 0 /dbhome_1/log/diag/rdbms/stddb/stddb/ trace /stddb_mrp0_21343.trc: 
ORA- 00313 : open failed  for  members of log group  2  of thread  1 
ORA- 00312 : online log  2  thread  1 '/u01/app/oracle/product/11.2.0/dbhome_1/dbs/broken1' 
ORA- 27037 : unable to obtain file status 
Linux-x86_64 Error:  2 : No such file or directory 
Additional information:  3 
...... 
Tue Dec  24  15 : 45 : 48  2013 
Clearing online redo logfile  2  complete 
Errors  in  file /u01/app/oracle/product/ 11.2 . 0 /dbhome_1/log/diag/rdbms/stddb/stddb/ trace /stddb_mrp0_21343.trc: 
ORA- 00313 : open failed  for  members of log group  3  of thread  1 
ORA- 00312 : online log  3  thread  1 '/u01/app/oracle/product/11.2.0/dbhome_1/dbs/broken2' 
ORA- 27037 : unable to obtain file status 
Linux-x86_64 Error:  2 : No such file or directory 
Additional information:  3 
...... 
Clearing online redo logfile  3  complete 
Media Recovery Waiting  for  thread  1  sequence  4

总结:由于之前的DG搭建,都是在两个不同的主机上实施,也没有关心过这个问题,因为standby清空primary redo的动作一定是失败的。但是现在是在一个主机上,standby能发现原primary的redo,并且由于rename失败,所以就直接clear primary redo导致primary 无法启动。    
       而root cause就是我在编辑pfile的时候,多写了standby_file_management=auto,其实不写的话,默认值是manual的,就不会出现这个问题。

本文转自 hsbxxl 51CTO博客,原文链接:http://blog.51cto.com/hsbxxl/1346635,如需转载请自行联系原作者

Dataguard搭建问题小记相关推荐

  1. Oracle 11g Dataguard搭建及知识梳理

    Oracle 11g Dataguard搭建及知识梳理 配置了一次dataguard,发现还挺麻烦,梳理了一些知识点,并记录下来. 一.DataGuard的三种模式 最大性能模式(Maximum Pe ...

  2. 【Data Guard】Oracle DataGuard 搭建

    DataGuard 搭建 一 . 准备工作 1. 规划 主库 备库 ip 192.168.131.100 192.168.131.101 instance_name orcl1 o rcl 1 ser ...

  3. Oracle 11gR2 dataguard搭建说明 --- duplicate方式

    Oracle 11gR2 dataguard 介绍 Oracle 11gR2 dataguard搭建说明 --- rman方式 1.配置参数文件 主库参数文件 dg.__db_cache_size=2 ...

  4. Oracle 10G DataGuard搭建

    前面我们有讲到Oracle 11G DataGuard的搭建,10G的搭建也是大同小异.不过Oracle 10G不支持Standby open 环境: 角色 主机名 IP 数据库版本 操作系统版本 P ...

  5. Oracle 11g DataGuard 搭建笔记(Windows Server 2016)

    0.目录 目录 0.目录 1.需求 2.开发环境 3.DataGuard主从库参数环境规划 4.网络环境 5.主库-DataGuard配置 5.1查询及启用强制记录日志 5.3查询及启用归档 5.4主 ...

  6. mysql wow_WOW私服搭建过程小记 | 学步园

    今天早晨终于把魔兽世界的私服搭建成功可以运行了.挺happy. 记录一下搭建的全过程: 1)先下载私服服务器端:从mangoscn.com下载大芒果的:ftp://www.mangoscn.com/T ...

  7. oracle 12c dataguard 部署,ORACLE 12C DataGuard 搭建

    一.主库全备份 rman target / run { backup as compressed backupset filesperset 1 format '/home/oracle/dg/ful ...

  8. centos7搭建jenkins小记

    背景 手贱又上百度查 centos7安装jenkins,五花八门好吧.看着官方文档开搞吧,记录遇到的一些小坑 安装java环境 1.查看服务器版本 centos7,继续. cat /etc/redha ...

  9. DataGuard搭建

    1.环境说明: 主库:Oracle11g,rac+asm 备库:Oracle11g单机 2.主库参数配置: *.log_archive_config='dg_config=(rac-pri,std)' ...

最新文章

  1. P2253 好一个一中腰鼓!
  2. 这应该是目前最快速有效的ASP.NET Core学习方式(视频)
  3. sqlmap安装_黑客神器系列篇章之“sqlmapquot;
  4. 说说如何使用 Ant 把文件推送到 Linux
  5. weka和matlab完成完整分类实验
  6. c语言未声明的标识符什么意思_C语言中%d和%f是什么意思啊?
  7. mysql 5.6 linux 64_Linux64位服务器编译安装MySQL5.6(CentOS6.4)
  8. 树莓派搭建VSFTP记录---自用简记
  9. 不存在有效_文水2单位存在安全隐患!
  10. ZEMAX | 如何使用极探测器和 IESNA / EULUMDAT 光源数据
  11. 启发式搜索解决八数码问题
  12. 打印机驱动的PCL与PS的区别
  13. ISTQB FL初级认证系列01:ISTQB FL初级认证考试说明
  14. 11.2. Yate Client
  15. Tracer 记录 Controller 日志
  16. Linux学习:Linux启动管理器GRUB2
  17. 亚马逊云科技的十年创新之路
  18. 物联网就业前景分析:只要有人的地方就有物联网
  19. 银河麒麟操作系统开机root自动登录
  20. 家里有两只猫给挖坑,还有世界美食的诱惑,我就被无监督学习彻底收服了!...

热门文章

  1. 信息安全系统设计基础第七周期中总结
  2. 喜迎国庆,居家五黑,自己写个组队匹配叭
  3. synergy工具常见错误处理方式
  4. 各类时间转换(FILETIME,time_t,tm,QDateTime,SystemTime,LocalTime)
  5. C语言构建环形缓冲区
  6. 有必要使用服务器端渲染(SSR)吗?
  7. 手机陀螺仪的注册监听事件
  8. C#面向对象设计模式4:生成器(Builder)
  9. python中竖杠用法_python中@的用法,你知多少
  10. 诚之和:什么是异常值?如何在统计数据中查找异常值