当前位置: 首页 > 科技观察

DataGuard单实例转RAC搭建

时间:2023-03-12 03:40:07 科技观察

本文是一个Windows平台RAC数据库迁移到Linux平台RAC的笔记,基本步骤是:1.从WindowsRAC构建DataGuard到Linux单实例数据库2.做切换修改standbydatabaseIP为原RAC数据库的scanip3.搭建单实例到LinuxRAC的DataGuard(scanip与原RAC不同),做switchover切换4.修改RAC数据库的scanip为scanip原RAC,并将单节点备份数据库的IP改为原备份数据库IP,修改monitor和tnsnames.ora文件,恢复容灾备份数据库操作。数据库版本为Oracle11.2.0.4,RAC为Windows平台的两个节点,数据量约2.5T,宕机时间约15分钟。本文仅包含步骤3的相关操作,介绍如何从单节点搭建DataGuard到RAC。本例中两个RAC节点的IP为192.168.100.101/102,VIP为103/104,scanip为105,单实例主库IP为192.168.100.100。实现步骤:1、准备阶段:该阶段主要是为一些数据库前期的配置做准备,比如是否开启归档等。单实例主库:1)selectforce_loggingfromv$database;--确保主库开启forcelogging2)archiveloglist;--确保主库是archive模式3)单实例主库添加standbyredo,好处是做switchover不需要添加stanbyredo,使用完这个full后会自动创建standbyredo备份而无需手动添加。一般standbyredo比normalredo多一个group,每个group的成员数是可选的,一般是1个。。RAC备库:1)按正常步骤在两个节点上安装RAC,但不建数据库,需要提前建好+DATA磁盘组。2)为节点1添加数据库和实例:srvctladddatabase-dorcl_st-norcl-o$ORACLE_HOME-sopen-a"DATA,FRA"-rphysical_standbysrvctladdinstance-dorcl_st-iorcl1-nnode12。参数文件:主库采用在线修改方式:altersystemsetLOG_ARCHIVE_CONFIG='DG_CONFIG=(orcl,orcl_st)'scope=bothsid='*';altersystemsetLOG_ARCHIVE_DEST_1='LOCATION=USE_DB_RECOVERY_FILE_DESTVALID_FOR=(ALL_LOGFILES,ALL_ROLES)DB_UNIQUE_NAME='bope='sc';altersystemsetLOG_ARCHIVE_DEST_2='SERVICE=orcl_streopen=120lgwrasyncVALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)DB_UNIQUE_NAME=orcl_st'scope=bothsid='*';altersystemsetfal_server=orvercl_stscope=bothsid='文件/数据/文件或';alter_system'+数据/或数据文件/datafile','/oradata/orcl/tempfile','+data/orcl/TEMPFILE'scope=spfilesid='*';altersystemsetlog_file_name_convert='/oradata/orcl/onlinelog','+data/orcl/ONLINELOG'scope=spfilesid='*';altersystemsetstandby_file_management=AUTOscope=bothsid='*';请注意,log_file_name_convert不会更改db_recovery_file_dest下的路径也有映射,因为主库闪回区的onlinelog会自动映射到备库闪回区的相关位置。如果数据文件比较分散,需要将所有数据文件的路径全部映射到'+data/orcl/datafile',方便管理。备份修改参考文件:*.__oracle_base='/u01/app/oracle'#ORACLE_BASEsetfromenvironment*.audit_file_dest='/u01/app/oracle/admin/orcl/adump'--此目录需要提交创建*.audit_trail='db'*.compatible='11.2.0.4.0'*.cluster_database=true*.control_files='+DATA/orcl/controlfile/control01.ctl'#RestoreControlfile*.db_block_size=8192*.db_domain=''*.db_name='orcl'*.db_unique_name='orcl_st'*.db_recovery_file_dest='+FRA'*.db_recovery_file_dest_size=5218762752*.diagnostic_dest='/u01/app/oracle'*.fal_server='ORCL'*.log_archive_config='DG_CONFIG=(orcl,orcl_st)'*.log_archive_dest_1='LOCATION=USE_DB_RECOVERY_FILE_DESTVALID_FOR=(ALL_LOGFILES,ALL_ROLES)DB_UNIQUE_NAME=orcl_st'*.log_archive_dest_2='service=orclreopen=120lgwrasyncvalid_for=(online_logfiles,primary_role)db_unique_name=orcl'*.log_archive_dest_state_2='enable'*.log_archive_format='%t_%s_%r.dbf'*.memory_target=1073741824*.open_cursors=500*.processes=150*.remote_login_passwordfile='EXCLUSIVE'*.resource_manager_plan=''*.standby_file_management='AUTO'orcl1.instance_name=orcl1orcl1.instance_number=1orcl1.undo_tablespace='UNDOTBS1'orcl1.thread=1orcl1.local_listener='(address=(protocol=TCP)(HOST=192.168.100.103)(PORT=1521))'--这里填写节点1的VIP*.remote_listener='(address=(protocol=TCP)(HOST=192.168.100.105)(PORT=1521))'--这里填写RAC的scanip,修改其修改后命名为initorcl1。ora并放到$ORACLE_HOME/dbs目录下3.修改tnsnames.ora文件修改单实例主库的tnsnames.ora文件如下,复制到备库所有节点。ORCL=(描述=(地址=(协议=TCP)(主机=192.168.100.100)(端口=1521))(连接数据=(服务器=专用)(服务名称=orcl)))ORCL_ST=(描述=(地址=(PROTOCOL=TCP)(HOST=192.168.100.101)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SID=orcl1)))4.复制单实例主库的密码文件orapw<$ORACLE_SID>转到备用数据库中的所有节点,并将它们重命名为orapworcl1和orapworcl25。对主库中的数据库进行全量备份,复制到备库节点1。(略)在做这一步之前,确保主库的备份计划已经停止,或者rman中的ARCHIVELOGDELETIONPOLICY设置为appliedonstandby;6、备份转移到备库后,在主库备份currentcontrolfile中备份standbycontrolfile为standbyformat'xxx';7、将备份的备控制文件复制到备节点1。8、使用备库参数文件启动节点1实例到nomount状态。启动nomount;九、使用RMAN恢复备节点上的备控制文件1.restorestandbycontrolfilefrom'xxx';--xxx路径为步骤7.alterdatabasemount中standby控制文件所在位置;10、在备库中注册备份集,恢复数据文件。目录以'xxx'开头;--这里填写备份所在的目录路径。备份:run{allocatechannelc1typedisk;allocatechannelc2typedisk;allocatechannelc3typedisk;allocatechannelc4typedisk;allocatechannelc5typedisk;allocatechannelc6typedisk;allocatechannelc7typedisk;allocatechannelc8typedisk;setnewnamefordatafile1to'+DATA/setffilesystemforcl1.datafile;'+DATA/orcl/datafile/sysaux01??.dbf';setnewnamefordatafile3to'+DATA/orcl/datafile/undotbs101.dbf';setnewnamefordatafile4to'+DATA/orcl/datafile/users01.dbf';...--多少个数据文件主库里有多少行,这里要写多少行,格式为:--setnewnamefordatafilefile_idto'file_name';restoredatabase;switchdatafileall;}11.以上操作完成后,在备库节点1上开始监控。netca或者netmgr就可以了,pmon进程会自动注册节点1的实例进行监控。默认的service_name是db_unique_name,在这个例子中是orcl_st。12、在备库启动MRP进程(此时处于挂载状态)ALTERDATABASERECOVERMANAGEDSTANDBYDATABASEUSINGCURRENTLOGFILEDISCONNECT;;取消MRP的语句是:ALTERDATABASERECOVERMANAGEDSTANDBYDATABASECANCEL;13、观察备库节点1日志alert,了解同步进度。14、增量完成后,取消MRP进程,打开备库,重启MRP进程。以上就是从单机到RAC构建DataGuard的完整步骤。后期需要切换,修改db_unique_name,修改scanip,添加节点。此外,您需要设置合适的备份和存档清理计划。步骤比较繁琐,这里不再赘述。更多细节。