Oracle 11g Data Guard搭建过程中问题解决两例

 

Oracle安装配置过程中,是与操作系统、存储、网络密切相关的。特别是在LinuxAIX环境中,配置过程相对复杂,一个环节错误可能就会引起后续一系列的问题故障。

此外,随着Oracle版本的变化,相同安装项目执行的步骤方法有很大变化。比如Data Guard,发展到11g有三种安装方法,每种方法的配置都有所差异不同。我们很多朋友在安装过程中,往往不在意版本差异,只是简单从网络上搜索一些文章就去实验使用。网络资源的确丰富了我们解决问题的思路和广度,但是网络中一些只言片语、张冠李戴的说法做法,也的确会给我们造成麻烦。

本篇记录了笔者安装Data Guard过程中遇到的两个小问题解决方法,记录下来留待需要的朋友不时之需。

 

1、环境背景介绍

 

使用Oracle 11.2.0.4进行实验,项目是进行Active Data Guard搭建过程。由于环境条件所限,笔者实现在一台物理机上实现PrimaryStandby

 

SQL> select * from v$version;

BANNER

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

Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - Production

PL/SQL Release 11.2.0.4.0 - Production

CORE    11.2.0.4.0      Production

TNS for Linux: Version 11.2.0.4.0 - Production

NLSRTL Version 11.2.0.4.0 - Production

 

2/dev/shm过小引起故障

 

其他配置过程和官方推荐安装Active Dataguard方法相同。进行参数配置、密码文件创建、Oracle Net文件配置和Standby端参数文件创建后,使用RMAN进行duplicate过程,脚本如下:

 

run {

  duplicat target database for standby from active database

  spfile

     parameter_value_convert 'ora11g','ora11gsy'

     set db_unique_name='ora11gsy'

     set log_archive_max_processes='5'

     set fal_client='ora11gsy'

     set fal_server='ora11g'

     set standby_file_management='AUTO'

     set log_archive_config='dg_config=(ora11g,ora11gsy)'

     set log_archive_dest_2='service=ora11g async valid_for=(ONLINE_LOGFILE,PRIMARY_ROLE) db_unique_name=ora11g';

}

 

此时primarystandby实例都在启动状态,运行RMAN连接并执行脚本。

 

[oracle@SimpleLinux dbs]$ rman nocatalog

 

Recovery Manager: Release 11.2.0.4.0 - Production on Thu Apr 10 11:21:49 2014

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

 

RMAN> connect target sys/oracle@ora11g

 

connected to target database: ORA11G (DBID=4239941846)

using target database control file instead of recovery catalog

 

RMAN> connect auxiliary sys/oracle@ora11gsy  

connected to auxiliary database: ORA11GSY (not mounted)

 

执行脚本:

 

RMAN> @cr_phy_standby

 

RMAN> run {

2>   duplicate target database for standby from active database

3>   spfile

4>      parameter_value_convert 'ora11g','ora11gsy'

5>      set db_unique_name='ora11gsy'

(篇幅原因,有省略……

sql statement: alter system set  log_archive_config =  ''dg_config=(ora11g,ora11gsy)'' comment= '''' scope=spfile

 

sql statement: alter system set  log_archive_dest_2 =  ''service=ora11g async valid_for=(ONLINE_LOGFILE,PRIMARY_ROLE) db_unique_name=ora11g'' comment= '''' scope=spfile

 

Oracle instance shut down

 

connected to auxiliary database (not started)

RMAN-00571: ===========================================================

RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============

RMAN-00571: ===========================================================

RMAN-03002: failure of Duplicate Db command at 04/10/2014 11:51:19

RMAN-05501: aborting duplication of target database

RMAN-03015: error occurred in stored script Memory Script

RMAN-04014: startup failed: ORA-00845: MEMORY_TARGET not supported on this system

 

duplicate过程报错,执行失败。

从分析看,应该是Oracle运行和内部共享内存分配有关。Linux中的/dev/shm对应tmpfs,也就是临时共享内存结构。当前大小为:

 

[root@SimpleLinux ~]# df -lh

Filesystem      Size  Used Avail Use% Mounted on

/dev/sda2        48G   13G   33G  28% /

tmpfs           448M  160M  288M  36% /dev/shm

 

当前系统中包括两个实例对象,消耗的共享内存要超过一个实力的情况。所以需要调节增大这部分大小。

 

[root@SimpleLinux ~]# vi /etc/fstab

 

#

# /etc/fstab

# Created by anaconda on Wed Mar 12 08:33:33 2014

#

# Accessible filesystems, by reference, are maintained under '/dev/disk'

# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info

#

UUID=19248f54-250c-46a0-8e5d-ec26a6a08342 /                       ext4    defaults        1 1

UUID=5ce24d42-a713-4b6c-8d9b-0d780346e093 swap                    swap    defaults        0 0

tmpfs                   /dev/shm                tmpfs   defaults,size=2G     0 0

devpts                  /dev/pts                devpts  gid=5,mode=620  0 0

sysfs                   /sys                    sysfs   defaults        0 0

proc                    /proc                   proc    defaults        0 0

~

 

在存储空间允许的情况下,调节tmpfs方法就是在fstab中增加size参数,直接指定大小。

 

[root@SimpleLinux ~]# mount /dev/shm

[root@SimpleLinux ~]# df -h

Filesystem      Size  Used Avail Use% Mounted on

/dev/sda2        48G   13G   33G  28% /

tmpfs           2.0G     0  2.0G   0% /dev/shm

 

再次执行脚本,依然报错,但是故障提示变化。

 

   startup clone nomount;

}

executing Memory Script

 

sql statement: alter system set  control_files =   ''/u01/app/oradata/ORA11G/controlfile/o1_mf_9mnjwpko_.ctl'', ''/u01/app/fast_recovery_area/ORA11G/controlfile/o1_mf_9mnjwpw2_.ctl'' comment= ''Set by RMAN'' scope=spfile

 

Starting backup at 10-APR-14

using channel ORA_DISK_1

channel ORA_DISK_1: starting datafile copy

copying standby control file

RMAN-00571: ===========================================================

RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============

RMAN-00571: =========================================

RMAN-03002: failure of Duplicate Db command at 04/10/2014 12:18:19

RMAN-05501: aborting duplication of target database

RMAN-03015: error occurred in stored script Memory Script

RMAN-03009: failure of backup command on ORA_DISK_1 channel at 04/10/2014 12:18:19

ORA-17628: Oracle error 19505 returned by remote Oracle server

 

RMAN> **end-of-file**

 

3control_files参数

 

在脚本中,我们是没有设置control_files参数的。主要考虑是基于OMF的特性。传统构建standby数据库的时候,是需要从Primary中创建出一个standby control file拷贝到standby站点。而Active DataGuardduplicate策略,实际上是基于备份集合的操作。所以,原理上standby端控制文件从内容到路径是有来源的。

 

run {

  duplicat target database for standby from active database

  spfile

     parameter_value_convert 'ora11g','ora11gsy'

     set db_unique_name='ora11gsy'

     set log_archive_max_processes='5'

     set fal_client='ora11gsy'

     set fal_server='ora11g'

     set standby_file_management='AUTO'

     set log_archive_config='dg_config=(ora11g,ora11gsy)'

     set log_archive_dest_2='service=ora11g async valid_for=(ONLINE_LOGFILE,PRIMARY_ROLE) db_unique_name=ora11g';

}

 

报错信息中,第一条记录就是在步骤出现的:

 

Starting backup at 10-APR-14

using channel ORA_DISK_1

channel ORA_DISK_1: starting datafile copy

copying standby control file

 

RMAN试图从主库Primary中拷贝出standby control file,但是创建失败。一种可能就是拷贝失败、另一种是在standby端创建失败,最后一种可能是定位OMF目录失败。

尝试修改的手段就是在脚本中显示指定出control_files的信息。同时为了避免出现名称映射转换错误,增加db_file_name_convertlog_file_name_convert参数。

 

run {

  duplicate target database for standby from active database

  spfile

     parameter_value_convert 'ora11g','ora11gsy'

     set db_unique_name='ora11gsy'

     set control_files='/u01/app/oradata/ORA11GSY/controlfile/ora11gsby01.ctl'

     set db_file_name_convert='ORA11G','ORA11GSY'

     set log_file_name_convert='ORA11G','ORA11GSY'

     set log_archive_max_processes='5'

     set fal_client='ora11gsy'

     set fal_server='ora11g'

     set standby_file_management='AUTO'

     set log_archive_config='dg_config=(ora11g,ora11gsy)'

     set log_archive_dest_2='service=ora11g async valid_for=(ONLINE_LOGFILE,PRIMARY_ROLE) db_unique_name=ora11g';

}

 

执行最后,成功。

 

datafile 4 switched to datafile copy

input datafile copy RECID=8 STAMP=844526899 file name=/u01/app/oradata/ORA11GSY/datafile/o1_mf_users_9mnjs074_.dbf

Finished Duplicate Db at 10-APR-14

 

4、结论

 

Data Guard搭建过程随着版本有很多变化差异,实际中非常容易出现错误。作为我们来讲,最好的参考资料来源就是官方文档和MOS文章。特别是MOS文章,一些step by step的方法是我们配置成功的保证。


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/17203031/viewspace-1144687/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/17203031/viewspace-1144687/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值