同一环境下新建Standby RAC库
需求:在同一个环境下新建Standby RAC库,即和Primary RAC在相同的磁盘组。
说明:生产环境一般不建议这样配置DG,因为存储层面是相同磁盘组,灾备的实际意义不大。我这里是用作读写分离。
基本信息:
db_name: jyzhao
Primary RAC db_unique_name:jyzhao
Standby RAC db_unique_name:jyzhaodg
Standby RAC instance_name: jyzhaodg1, jyzhaodg2
版本:GI 11.2.0.4 + DB 11.2.0.4
确认RAC Standby存储是在和RAC Primary相同的ASM磁盘组内(PS:灾备效果不明显),创建RAC Standby存储目录(根据db_unique_name)
mkdir+DATA/JYZHAODGmkdir+FRA/JYZHAODG1.2 配置tnsnames.ora
cd $ORACLE_HOME/network/admin/
cat tnsnames.ora
添加主库备库的连接信息(所有节点):
JYZHAO=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=oradb-scan)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=jyzhao)))jyzhaodg=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=oradb-scan)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=jyzhaodg)))1.3 密码文件
节点1:
exportORACLE_SID=jyzhaodg1密码文件;cd$ORACLE_HOME/dbsorapwdfile=orapwjyzhaodg1password=oracleentries=5或者直接copy之前的密码文件,然后mv重命名:cporapwjyzhao1orapwjyzhaodg1
节点2:
exportORACLE_SID=jyzhaodg2密码文件;cd$ORACLE_HOME/dbsorapwdfile=orapwjyzhaodg2password=oracleentries=5或者直接copy之前的密码文件,然后mv重命名:cporapwjyzhao2orapwjyzhaodg2
最后测试相互连接可用
sqlplussys/oracle@jyzhaoassysdbasqlplussys/oracle@jyzhaodgassysdba第二章 源数据库备份
vi backup.sh
备份脚本如下:
rmantarget/<<EOFrun{allocatechannelc1devicetypedisk;allocatechannelc2devicetypedisk;backupascompressedbackupsetdatabasefilesperset1format'/u01/orabak/salehrdb_%d_%T_%s.bak';backupcurrentcontrolfileformat'/u01/orabak/control.bak';releasechannelc1;releasechannelc2;}EOF
后台执行备份任务:
nohupshbackup.sh&
注意:如果使用backup as copy database format方案,就不用再备份到磁盘后再恢复了,可以节省时间。
backup as copy 方案备份脚本 backupcp.sh内容如下:
rmantarget/<<EOFrun{allocatechannelc1devicetypedisk;allocatechannelc2devicetypedisk;backupascopydatabaseformat'+DATA/JYZHAODG/DATAFILE/%u.dbf';releasechannelc1;releasechannelc2;}EOF
注意:这种方式,路径包含的目录需手动创建。
mkdir+DATA/JYZHAODG/DATAFILE第三章 参数文件3.1 修改主库参数文件
确认当前环境ORACLE_SID:
echo$ORACLE_SIDexportORACLE_SID=jyzhao1
根据spfile文件创建pfile:
create pfile='/tmp/pfile.ora' from spfile;
Primary RAC 添加参数
--为不停止primaryRAC,所以尽可能动态修改参数:showparameterlog_archive_configshowparameterdb_file_name_convertshowparameterlog_file_name_convertshowparameterfal_clientshowparameterfal_servershowparameterlog_archive_dest_3altersystemsetlog_archive_config='dg_config=(jyzhao,jyzhaodg)';altersystemsetdb_file_name_convert='+DATA/jyzhaodg','+DATA/jyzhao'scope=spfile;altersystemsetlog_file_name_convert='+DATA/jyzhaodg','+DATA/jyzhao'scope=spfile;altersystemsetfal_client='jyzhao';altersystemsetfal_server='jyzhaodg';altersystemsetlog_archive_dest_3='service=jyzhaodgvalid_for=(online_logfiles,primary_role)db_unique_name=jyzhaodg';--暂时defer传输链路,防止此时主库告警生成相关错误SQL>altersystemsetlog_archive_dest_state_3=defer;3.2 修改Standby RAC 参数
根据主库之前导出的参数文件修改备库的参数文件:
cp /tmp/pfile.ora /tmp/pfile_std.ora
vi /tmp/pfile_std.ora
*._high_priority_processes='LMS*'*.audit_file_dest='/u01/app/oracle/admin/jyzhaodg/adump'*.audit_trail='db'*.cluster_database=true*.compatible='11.2.0.4.0'*.control_files='+DATA/jyzhaodg/controlfile/current.260.931878631','+FRA/jyzhaodg/controlfile/current.256.931878631'*.db_block_size=8192*.db_create_file_dest='+DATA'*.db_domain=''*.db_name='jyzhao'*.db_recovery_file_dest='+FRA'*.db_recovery_file_dest_size=4621074432*.diagnostic_dest='/u01/app/oracle'*.dispatchers='(PROTOCOL=TCP)(SERVICE=jyzhaoXDB)'jyzhaodg2.instance_number=2jyzhaodg1.instance_number=1*.log_archive_format='%t_%s_%r.dbf'*.memory_target=313286272*.open_cursors=300*.processes=150*.remote_listener='oradb-scan:1521'*.remote_login_passwordfile='exclusive'jyzhaodg2.thread=2jyzhaodg1.thread=1jyzhaodg2.undo_tablespace='UNDOTBS2'jyzhaodg1.undo_tablespace='UNDOTBS1'#adddb_unique_name='jyzhaodg'log_archive_config='dg_config=(jyzhao,jyzhaodg)'#db_unique_namedb_file_name_convert='+DATA/jyzhao','+DATA/jyzhaodg'log_file_name_convert='+DATA/jyzhao','+DATA/jyzhaodg'standby_file_management=autofal_client='jyzhaodg'#tnsnames.orafal_server='jyzhao'#salehrdblog_archive_dest_3='service=jyzhaovalid_for=(online_logfiles,primary_role)db_unique_name=jyzhao'
主要是注意后面#add之后的内容。
3.3 在ASM中创建standby的spfile在ASM中创建standby的spfile,并确定各节点的参数文件内容指向磁盘中的spfile。
节点1:
echo$ORACLE_SIDexportORACLE_SID=jyzhaodg1createspfile='+DATA/jyzhaodg/spfilejyzhaodg.ora'frompfile='/tmp/pfile_std.ora';--catinitjyzhaodg1.oraSPFILE='+DATA/jyzhaodg/spfilejyzhaodg.ora'
节点2:
echo$ORACLE_SIDexportORACLE_SID=jyzhaodg2catinitjyzhaodg2.oraSPFILE='+DATA/jyzhaodg/spfilejyzhaodg.ora'
创建adump目录(所有节点)
mkdir-p/u01/app/oracle/admin/jyzhaodg/adump3.4 Standby RAC启动到nomount
节点1:
echo$ORACLE_SIDexportORACLE_SID=jyzhaodg1startupnomount
节点2:
echo$ORACLE_SIDexportORACLE_SID=jyzhaodg2startupnomount第四章 rman恢复控制文件
在Primary RAC上创建备库使用的控制文件:
echo$ORACLE_SIDexportORACLE_SID=jyzhao1SQL>alterdatabasecreatestandbycontrolfileas'/tmp/control01.ctlbak';
在Standby RAC的节点1上恢复控制文件并启动到mount:
echo$ORACLE_SIDexportORACLE_SID=jyzhaodg1restorecontrolfilefrom'/tmp/control01.ctlbak';alterdatabasemount;crosscheckbackupset;--如果是之前copy到磁盘组的备份没加载到控制文件中,可以手动catalogcatalogstartwith'+data/jyzhaodg/DATAFILE';--同样,如果是之前的备份集没加载到控制文件中,一样手动catalogcatalogstartwith'/u01/orabak/';
查看此时standby记录的各文件路径是否符合预期:
SQL>selectnamefromv$datafile;NAME--------------------------------------------------------------------------------+DATA/jyzhaodg/datafile/system.256.931878537+DATA/jyzhaodg/datafile/sysaux.257.931878537+DATA/jyzhaodg/datafile/undotbs1.258.931878537+DATA/jyzhaodg/datafile/users.259.931878537+DATA/jyzhaodg/datafile/undotbs2.264.931878827+DATA/jyzhaodg/datafile/dbs_d_jingyu.268.9375151736rowsselected.SQL>selectmemberfromv$logfile;MEMBER--------------------------------------------------------------------------------+DATA/jyzhaodg/onlinelog/group_2.262.931878637+FRA/jyzhao/onlinelog/group_2.258.931878639+DATA/jyzhaodg/onlinelog/group_1.261.931878635+FRA/jyzhao/onlinelog/group_1.257.931878637+DATA/jyzhaodg/onlinelog/group_3.265.931879021+FRA/jyzhao/onlinelog/group_3.259.931879023+DATA/jyzhaodg/onlinelog/group_4.266.931879027+FRA/jyzhao/onlinelog/group_4.260.9318790298rowsselected.SQL>selectnamefromv$tempfile;NAME--------------------------------------------------------------------------------+DATA/jyzhaodg/tempfile/temp.263.931878661SQL>selectnamefromv$controlfile;NAME--------------------------------------------------------------------------------+DATA/jyzhaodg/controlfile/current.288.937645851+FRA/jyzhaodg/controlfile/current.275.937645851
发现日志文件有不符合预期的路径,进行修正:
SQL>showparameterconvertNAMETYPEVALUE-----------------------------------------------------------------------------db_file_name_convertstring+DATA/jyzhao,+DATA/jyzhaodglog_file_name_convertstring+DATA/jyzhao,+DATA/jyzhaodgSQL>altersystemsetlog_file_name_convert='+DATA/jyzhao','+DATA/jyzhaodg','+FRA/jyzhao','+FRA/jyzhaodg'scope=spfile;SQL>shutdownimmediate;ORA-01109:databasenotopenDatabasedismounted.ORACLEinstanceshutdown.SQL>startupmount;ORACLEinstancestarted.TotalSystemGlobalArea313159680bytesFixedSize2252824bytesVariableSize222302184bytesDatabaseBuffers83886080bytesRedoBuffers4718592bytesDatabasemounted.SQL>selectmemberfromv$logfile;MEMBER--------------------------------------------------------------------------------+DATA/jyzhaodg/onlinelog/group_2.262.931878637+FRA/jyzhaodg/onlinelog/group_2.258.931878639+DATA/jyzhaodg/onlinelog/group_1.261.931878635+FRA/jyzhaodg/onlinelog/group_1.257.931878637+DATA/jyzhaodg/onlinelog/group_3.265.931879021+FRA/jyzhaodg/onlinelog/group_3.259.931879023+DATA/jyzhaodg/onlinelog/group_4.266.931879027+FRA/jyzhaodg/onlinelog/group_4.260.9318790298rowsselected.第五章 rman恢复数据库
Standby RAC节点1:
确定ORACLE_SID变量:
echo$ORACLE_SIDexportORACLE_SID=jyzhaodg1
a. 如果是使用从备份集恢复的方式
vi restore.sh
rmantarget/<<EOF!>db_restore.logrun{allocatechanneld1typedisk;allocatechanneld2typedisk;restoredatabase;releasechanneld1;releasechanneld2;}exit;EOF!
nohup sh restore.sh &
b. 如果是直接使用copy到磁盘组的
直接switch database to copy即可。
RMAN>switchdatabasetocopy;usingtargetdatabasecontrolfileinsteadofrecoverycatalogdatafile1switchedtodatafilecopy"+DATA/jyzhaodg/datafile/0eru6m4s.dbf"datafile2switchedtodatafilecopy"+DATA/jyzhaodg/datafile/0fru6m4s.dbf"datafile3switchedtodatafilecopy"+DATA/jyzhaodg/datafile/0hru6meo.dbf"datafile4switchedtodatafilecopy"+DATA/jyzhaodg/datafile/0iru6mg5.dbf"datafile5switchedtodatafilecopy"+DATA/jyzhaodg/datafile/0jru6mg6.dbf"datafile6switchedtodatafilecopy"+DATA/jyzhaodg/datafile/0gru6men.dbf"第六章 备库开启日志应用
确认Primary RAC的日志传输链路打开:
echo$ORACLE_SIDexportORACLE_SID=jyzhao1SQL>altersystemsetlog_archive_dest_state_3=enable;
Standby RAC节点1在mount状态下开启日志应用:
echo$ORACLE_SIDexportORACLE_SID=jyzhaodg1SQL>alterdatabaserecovermanagedstandbydatabasedisconnectfromsession;第七章 创建standby log
停止备库应用:
SQL>alterdatabaserecovermanagedstandbydatabasecancel;
查看日志信息:
SQL>select*fromv$Log;GROUP#THREAD#SEQUENCE#BYTESBLOCKSIZEMEMBERSARCSTATUSFIRST_CHANGE#FIRST_TIMENEXT_CHANGE#NEXT_TIME--------------------------------------------------------------------------------------------------------------------------------1169524288005122YESCURRENT245093403-MAR-172.8147E+14210524288005122YESUNUSED244070603-MAR-17245093403-MAR-17320524288005122YESUNUSED244081703-MAR-17245093903-MAR-174236524288005122YESCURRENT245093903-MAR-172.8147E+14SQL>colmemberfora70SQL>selectgroup#,type,memberfromv$logfile;GROUP#TYPEMEMBER---------------------------------------------------------------------------------------2ONLINE+DATA/jyzhaodg/onlinelog/group_2.298.9376485632ONLINE+FRA/jyzhaodg/onlinelog/group_2.278.9376485651ONLINE+DATA/jyzhaodg/onlinelog/group_1.297.9376485591ONLINE+FRA/jyzhaodg/onlinelog/group_1.279.9376485613ONLINE+DATA/jyzhaodg/onlinelog/group_3.299.9376485673ONLINE+FRA/jyzhaodg/onlinelog/group_3.389.9376485694ONLINE+DATA/jyzhaodg/onlinelog/group_4.300.9376485734ONLINE+FRA/jyzhaodg/onlinelog/group_4.390.9376485738rowsselected.
根据检查结果,合理为数据库添加standby logfile:
alterdatabaseaddstandbylogfilethread1group11('+DATA','+FRA')size52428800;alterdatabaseaddstandbylogfilethread1group12('+DATA','+FRA')size52428800;alterdatabaseaddstandbylogfilethread1group13('+DATA','+FRA')size52428800;alterdatabaseaddstandbylogfilethread2group21('+DATA','+FRA')size52428800;alterdatabaseaddstandbylogfilethread2group22('+DATA','+FRA')size52428800;alterdatabaseaddstandbylogfilethread2group23('+DATA','+FRA')size52428800;
添加完再次查看:
SQL>selectgroup#,type,memberfromv$logfile;GROUP#TYPEMEMBER---------------------------------------------------------------------------------------2ONLINE+DATA/jyzhaodg/onlinelog/group_2.298.9376485632ONLINE+FRA/jyzhaodg/onlinelog/group_2.278.9376485651ONLINE+DATA/jyzhaodg/onlinelog/group_1.297.9376485591ONLINE+FRA/jyzhaodg/onlinelog/group_1.279.9376485613ONLINE+DATA/jyzhaodg/onlinelog/group_3.299.9376485673ONLINE+FRA/jyzhaodg/onlinelog/group_3.389.9376485694ONLINE+DATA/jyzhaodg/onlinelog/group_4.300.9376485734ONLINE+FRA/jyzhaodg/onlinelog/group_4.390.93764857311STANDBY+DATA/jyzhaodg/onlinelog/group_11.301.93764877311STANDBY+FRA/jyzhaodg/onlinelog/group_11.391.93764877512STANDBY+DATA/jyzhaodg/onlinelog/group_12.302.937648777GROUP#TYPEMEMBER---------------------------------------------------------------------------------------12STANDBY+FRA/jyzhaodg/onlinelog/group_12.392.93764877913STANDBY+DATA/jyzhaodg/onlinelog/group_13.303.93764877913STANDBY+FRA/jyzhaodg/onlinelog/group_13.393.93764878121STANDBY+DATA/jyzhaodg/onlinelog/group_21.304.93764878321STANDBY+FRA/jyzhaodg/onlinelog/group_21.394.93764878322STANDBY+DATA/jyzhaodg/onlinelog/group_22.305.93764878522STANDBY+FRA/jyzhaodg/onlinelog/group_22.395.93764878723STANDBY+DATA/jyzhaodg/onlinelog/group_23.306.93764878723STANDBY+FRA/jyzhaodg/onlinelog/group_23.396.93764878920rowsselected.
继续开启备库应用,确定恢复完成日志没报错信息后取消日志应用,打开数据库,开启ADG:
alterdatabaserecovermanagedstandbydatabasedisconnectfromsession;alterdatabaserecovermanagedstandbydatabasecancel;alterdatabaseopen;alterdatabaserecovermanagedstandbydatabaseusingcurrentlogfiledisconnectfromsession;
查看DG同步状态:
SQL>SELECTOPEN_MODE,DATABASE_ROLE,SWITCHOVER_STATUS,FORCE_LOGGING,DATAGUARD_BROKER,GUARD_STATUSFROMV$DATABASE;OPEN_MODEDATABASE_ROLESWITCHOVER_STATUSFORDATAGUARGUARD_S--------------------------------------------------------------------------READONLYWITHAPPLYPHYSICALSTANDBYNOTALLOWEDNODISABLEDNONESQL>setlines1000SQL>select*fromv$dataguard_stats;NAMEVALUEUNITTIME_COMPUTEDDATUM_TIME------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------transportlag+0000:09:37day(2)tosecond(0)interval03/03/201710:03:2003/03/201710:03:13applylag+0000:09:38day(2)tosecond(0)interval03/03/201710:03:2003/03/201710:03:13applyfinishtimeday(2)tosecond(3)interval03/03/201710:03:20estimatedstartuptime40second03/03/201710:03:20--可以在PrimaryRAC上归档当前日志模拟业务切换归档:SQL>SELECTOPEN_MODE,DATABASE_ROLE,SWITCHOVER_STATUS,FORCE_LOGGING,DATAGUARD_BROKER,GUARD_STATUSFROMV$DATABASE;OPEN_MODEDATABASE_ROLESWITCHOVER_STATUSFORDATAGUARGUARD_S--------------------------------------------------------------------------READWRITEPRIMARYTOSTANDBYNODISABLEDNONESQL>altersystemarchivelogcurrent;Systemaltered.--再次在StandbyRAC上查看DG同步状态:SQL>r1*select*fromv$dataguard_statsNAMEVALUEUNITTIME_COMPUTEDDATUM_TIME------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------transportlag+0000:00:00day(2)tosecond(0)interval03/03/201710:04:4503/03/201710:04:44applylag+0000:00:00day(2)tosecond(0)interval03/03/201710:04:4503/03/201710:04:44applyfinishtimeday(2)tosecond(3)interval03/03/201710:04:45estimatedstartuptime40second03/03/201710:04:45
至此,已完成RAC Standby库在同环境下的创建。
第八章 检查资源状态我们可以将RAC Standby也加入到crs资源中:
[oracle@oradb23~]$srvctladddatabase-djyzhaodg-o$ORACLE_HOME-ijyzhaodg1-njyzhao[oracle@oradb23~]$srvctladdinstance-djyzhaodg-ijyzhaodg1-noradb23[oracle@oradb23~]$srvctladdinstance-djyzhaodg-ijyzhaodg2-noradb24--启动数据库[oracle@oradb23~]$srvctlstartdatabase-dsalehrdg--查看资源状态:[grid@oradb23~]$crsctlstatres-t
总结:同环境下搭建Standby RAC,最重要的注意事项就是一定要细心,操作前确保自己操作的是正确的ORACLE_SID,备库的路径也要反复确认无误再操作。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。