前几天朋友问了我一个问题,一个单节点RAC,要做一套Data Guard。但是备库能给数据库的内存只有主库的一半左右,能不能成功。不知道,没做过,试试呗。一.概况1. 涉及的技术点
1)RAC作为primary database,nonRAC作为standby database
2)使用RMAN作为数据库的备份方式
3)使用Backup-based duplication方式创建备库
4)主库使用ASM存储方式,备库使用filesystem作为存储
5)使用standby logfile,开启日志实时更新2. 主备库信息表概要
二.Primary主库配置1.查看Managed Standby组件
#请确保该值为true2.检查remote_login_passwordfile的设置
#若该参数不为exclusive,则按照以下命令修改,并重启使其生效
3.检查数据库是否为归档模式
#若为非归档模式,则需要干净的关闭数据库后,启动到mount模式,修改为归档模式后再开库
4.检查数据库是否开启force logging
#若数据库未开启force logging,则
5.检查主库口令文件的MD5值
#要确保主备库口令文件的MD5值相同,即使sys的密钥相同也不行6.主库参数修改
三.Standby备库配置1.准备standby的口令文件
#拷贝主库的口令文件传至备库的$ORACLE_HOME/dbs目录下,并重命名为orapwstbcs1
#检查备库口令文件的MD5值,确保和主库相同
2.准备standby的参数文件
在主库生成pfile,并将其传至备库修改
#此处需要注意的是由于实验需求,备库参数文件里的sga_target和pga_aggregate_target需修改为主库的一半
#在11g中取消的参数:
3.创建必要的目录结构
4.创建spfile,并启动instance
更多咨询请关注“恩墨学院”公主号,回复“2019数据嘉年华”获得大会PPT资料四.Backup-based duplication复制physical standby1.listener.ora配置
#由于standby端只有oracle软件,实例无法启动到mount状态,此时PMON进程无法完成自动注册,故采用静态监听。
主库:
备库:
2.tnsnames.ora配置
往主备库的$ORACLE_HOME/network/admin/tnsnames.ora中添加:
3.备份primary数据库
1)查看数据库物理结构
2)备份数据库和控制文件
3)备份归档日志
4)将备份传至备库机
4.使用duplicate进行数据库恢复
1)创建脚本
#由于没有temp_file_name_convert这个参数,故在duplicate前需要给tempfile set newname操作
#手动分配复制通道时,必须要加上allocate auxiliary channel,否则会提示:
如果duplicate的时候使用关键词from active database(通过网络直传不落地的active database duplication方式,不需要主库的备份,节省了磁盘空间和传输备份的时间,但在复制的过程中对主库有一定压力,需要一定的网络带宽),则必须为主库分配通道,否则会提示:
2)使用nohup调用脚本,使其在后台运行
5.启动physical standby
五.DATAGUARD使用standby logfile1.standby logfile创建要求
#确保主备库的日志文件大小相同,建议备库的standby logfile要比主库的redo logfile多一组,目的是确保备库随时都有一组空闲日志可使用。
#当使用rman生成controlfile for standby的备份时,alert日志中会有相关的提示信息,如下:
2.备库添加standby logfile
#首先查看主库online redo logfiles的信息
#确保主库ORLs日志组大小相同,再配置SRLs,且在备库添加standby logfile时,要先停掉MRP进程:
#由于主库有三组ORLs,在创建SRLs的时候若不指定组数,默认会是4-7,那么后续在主库添加日志组的话就会产生混乱,故从第11组开始配置standby redo logfiles。
#还有就是当主库多实例的时候,备库也要配置上多个thread,目的是为了能开启real time apply,但是如果备库只创建了thread 1,并不会影响archive log的传输和应用,但是备库并不会采用real time apply,主库online redo无法做到实时传输应用,只在归档切换后备库才会应用。3.主库添加standby logfile
#在配置备库的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环境。
如果喜欢,点个赞、收藏再走呗!