dataguard日志传输模式解析_主备库内存不一致的Data Guard环境搭建

前几天朋友问了我一个问题,一个单节点RAC,要做一套Data Guard。但是备库能给数据库的内存只有主库的一半左右,能不能成功。不知道,没做过,试试呗。一.概况1. 涉及的技术点
1)RAC作为primary database,nonRAC作为standby database
2)使用RMAN作为数据库的备份方式
3)使用Backup-based duplication方式创建备库
4)主库使用ASM存储方式,备库使用filesystem作为存储
5)使用standby logfile,开启日志实时更新2. 主备库信息表概要

8fd6a143f6ece6136562ba88bea6c068.png


二.Primary主库配置1.查看Managed Standby组件

2f2f252e25323f5e81a2228994938132.png


#请确保该值为true2.检查remote_login_passwordfile的设置

540ca8192f627a7361bba62d6ff129d0.png


#若该参数不为exclusive,则按照以下命令修改,并重启使其生效

56643121d870a01f65ea5dc129bc5946.png


3.检查数据库是否为归档模式

80d4a7a7d18a1ba8224e5e85c202d305.png


#若为非归档模式,则需要干净的关闭数据库后,启动到mount模式,修改为归档模式后再开库

b0a16a0deba5bc94a316050b2caf847d.png

4.检查数据库是否开启force logging

e29d9c323a7529e5c52869bcbdeec68b.png


#若数据库未开启force logging,则

fd30193c9cf0157bfd68b99f4ee7b35d.png

5.检查主库口令文件的MD5值

f2327fa869456b6359b14451c49cd048.png


#要确保主备库口令文件的MD5值相同,即使sys的密钥相同也不行6.主库参数修改

507bdff24f5c47e293513b4f46f9a75c.png


三.Standby备库配置1.准备standby的口令文件
#拷贝主库的口令文件传至备库的$ORACLE_HOME/dbs目录下,并重命名为orapwstbcs1

2a4ca625b16268557fdd61af7506e6e2.png


#检查备库口令文件的MD5值,确保和主库相同

6f322e3643977a05dbf42d65545533d6.png


2.准备standby的参数文件
在主库生成pfile,并将其传至备库修改

1660a058408f0a140933c2abb9e572cd.png

0bd7c975e550afb2c2938c5eccab7d1f.png


#此处需要注意的是由于实验需求,备库参数文件里的sga_target和pga_aggregate_target需修改为主库的一半
#在11g中取消的参数:

157f0be2fa86c01962b96d2cbd8b8b43.png


3.创建必要的目录结构

5e6ae09ca9cab39db112f5decf1ff945.png

4.创建spfile,并启动instance

9363e84147a448859ba67767fb688c9e.png

更多咨询请关注“恩墨学院”公主号,回复“2019数据嘉年华”获得大会PPT资料四.Backup-based duplication复制physical standby1.listener.ora配置
#由于standby端只有oracle软件,实例无法启动到mount状态,此时PMON进程无法完成自动注册,故采用静态监听。
主库:

0a4aed2c9b2ceaa002845db0fde07633.png


备库:

c35a664fc0c874a6686e3d356c2c5d17.png

2.tnsnames.ora配置
往主备库的$ORACLE_HOME/network/admin/tnsnames.ora中添加:

a715b6c8798430f03fceae7371e26a6f.png

3.备份primary数据库
1)查看数据库物理结构

7c1809b099c1c3a227c287926ed27caf.png

862dd2cfd813970e5b18c724d4ed2b46.png


2)备份数据库和控制文件

c3e10c28ae8986a62e21c1f28450c1f3.png

3)备份归档日志

1bbffd25b05036c4436e2b8dcb3b83cb.png


4)将备份传至备库机

45d12a89324e29a904ddce41584c051b.png


4.使用duplicate进行数据库恢复
1)创建脚本

e3eddbcc5d3be687d60085b13feb3440.png


#由于没有temp_file_name_convert这个参数,故在duplicate前需要给tempfile set newname操作
#手动分配复制通道时,必须要加上allocate auxiliary channel,否则会提示:

72564e93d6961ffd38e8a32827e8c3d3.png



如果duplicate的时候使用关键词from active database(通过网络直传不落地的active database duplication方式,不需要主库的备份,节省了磁盘空间和传输备份的时间,但在复制的过程中对主库有一定压力,需要一定的网络带宽),则必须为主库分配通道,否则会提示:

3358c3daf9cf4ad31e96bd6376e6fd8b.png


2)使用nohup调用脚本,使其在后台运行

9acac867860535251198fe7023a2bd98.png

5.启动physical standby

9c5bfcbedfc296d5dc2eb78f4a685ce7.png

五.DATAGUARD使用standby logfile1.standby logfile创建要求
#确保主备库的日志文件大小相同,建议备库的standby logfile要比主库的redo logfile多一组,目的是确保备库随时都有一组空闲日志可使用。
#当使用rman生成controlfile for standby的备份时,alert日志中会有相关的提示信息,如下:

aa6a8631db92b0f32e02d958b971bd66.png

2.备库添加standby logfile
#首先查看主库online redo logfiles的信息

766a692d77af38309e3ff0f71837cc86.png


#确保主库ORLs日志组大小相同,再配置SRLs,且在备库添加standby logfile时,要先停掉MRP进程:

79906354588e789330f291477e0e2983.png



#由于主库有三组ORLs,在创建SRLs的时候若不指定组数,默认会是4-7,那么后续在主库添加日志组的话就会产生混乱,故从第11组开始配置standby redo logfiles。
#还有就是当主库多实例的时候,备库也要配置上多个thread,目的是为了能开启real time apply,但是如果备库只创建了thread 1,并不会影响archive log的传输和应用,但是备库并不会采用real time apply,主库online redo无法做到实时传输应用,只在归档切换后备库才会应用。3.主库添加standby logfile

936fd6fe88633756f504950dcd0a92dc.png


#在配置备库的standby logfile的时候,也需要在主库上预配置,目的是用于未来切换使用。六.部分参数说明1.db_name
数据库名称,一套Data Guard环境中,需要保持主备库的db_name相同。2.db_unique_name
DG环境中用于区分主备库的唯一名字,即使主备库角色互换,db_unique_name也不会更改。3.log_archive_config
该参数通过dg_configs设置同一个Data Guard环境中的所有db_unique_name,以逗号分隔,定义该参数能确保主备数据库能够发送或接收日志。4.log_archive_dest_1
通过location设置日志归档的本地路径,主备库需要定义各自的Online Redo Log的归档地址。本例log_archive_dest_1=‘location=+DATA valid_for=(all_logfiles,all_roles) db_unique_name=cs’,可以理解为对主库(cs)而言,不管她是主库还是备库(all_roles),她都会自己完成归档动作,并将日志归档于本地路径+DATA下。5.log_archive_dest_2
该参数仅当数据库角色为primary时生效,指定primary传输redo log到该参数定义的standby database上,其中service的设置为tnsnames.ora中定义的Oracle Net名称。log_archive_dest_2可以说是dataguard上最重要的参数之一,它定义了redo log的传输方式(sync or async)以及传输目标(即standby apply node),直接决定了dataguard的数据保护级别。6.fal_server
fal即fatch archive log,其值为tnsnames.ora中远端数据库服务的Oracle Net名称,fal_server为备库中设置的参数,一旦备库产生gap,会通过fal_server参数向主库请求传输缺失的日志,当然为了switchover,主库上也要预配置该参数。7.db_file_name_convert
定义主备库的数据文件路径转换,远端在前,本地端在后。若有多个,逐一指明对映关系。8.log_file_name_convert
定义主备库在线日志文件路径转换,远端在前,本地端在后。若有多个,逐一指明对映关系。9.standby_file_management
备库参数,用来控制是否主动将主库增加表空间或数据文件的改动,传播到物理备库。
auto:主库执行的表空间创建操作会被传播到物理备库上执行。
manual:default,需要手工复制新创建的数据文件到物理备库服务器。10.service_name(tnsnames.ora中的参数)
service_name是在多实例出现后,为了方便应用连接数据库提出的参数,该参数直接对应数据库而不是某个实例,故该参数与sid没有直接关系,不必与sid一样。当服务器端listener.ora中配置了静态监听后,客户端tnsnames.ora中service_name与服务器端静态监听中的GLOBAL_DBNAME相对应,且可不必与服务器端数据库中service_names参数对应。但若没有配置静态监听,客户端tnsnames.ora里的service_name需要从服务器端数据库中的service_names中取值。
以上,主备库内存不一致,可以搭建Data Guard环境。
如果喜欢,点个赞、收藏再走呗!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值