您的位置:首页 > 其它

DataGuard-RAC到单实例

2016-02-16 17:18 288 查看
物理standbyrac到单机搭建OS:CentOS6.6
DB:11204

数据库类型DB_UNIQUE_NAME
---------------------------------------------
primaryxedb
physicalstandby
stxedb1.创建standby数据库:步骤1:在主库设置强制日志:sql>alterdatabaseforcelogging;步骤2:启用主数据库归档:
sql>shutdownimmediate;
sql>startupmount;
sql>alterdatabasearchivelog;
sql>alterdatabaseopen;步骤3:配置主数据库standbyredo日志搭建DataGuard环境,Oracle推荐主数据库配置Standbyredo日志。主数据库随时准备快速转换为standby角色,所以需要提前在主数据库配置好standbyredo,以便能够顺利的接收实时传送的日志,使整个切换过程更加平滑。查看主库的联机日志:
sql>selectthread#,bytes/1024/1024"size(MB)",membersfromv$log;
THREAD#size(MB)MEMBERS
------------------------------15021502
2502

2502


当前环境只有2个节点,有2个日志组,每个日志组50M,每个日志组又两个成员。执行下面的sql为每个线程创建3个大小为50M,每个日志组2个成员。为datadg1磁盘组。注意:无论什么时候添加一个redo日志组到主数据库,也必须添加日志组到standby数据库。否则,standby数据库可能变得不同步,这可能导致零数据丢失配置临时失败,或者导致最大保护模式下的主数据库被关闭。sql>alterdatabaseaddstandbylogfile
thread1('+DATADG01')size50M;
sql>alterdatabaseaddstandbylogfile
thread1('+DATADG01')size50M;
sql>alterdatabaseaddstandbylogfile
thread1('+DATADG01')size50M;
sql>alterdatabaseaddstandbylogfile
thread2('+DATADG01')size50M;
sql>alterdatabaseaddstandbylogfile
thread2('+DATADG01')size50M;
sql>alterdatabaseaddstandbylogfile
thread2('+DATADG01')size50M;
查看所有redo文件列表,select*fromv$logfileorderby1;SQL>select*fromv$logfileorderby1;GROUP#STATUSMEMBER----------------------------------------------------------------------1ONLINE+DATADG01/xedb/onlinelog/group_1.257.8941875731ONLINE+DATADG01/xedb/onlinelog/group_1.272.8956623512ONLINE+DATADG01/xedb/onlinelog/group_2.258.8941875732ONLINE+DATADG01/xedb/onlinelog/group_2.271.8956623553ONLINE+DATADG01/xedb/onlinelog/group_3.265.8941894633ONLINE+DATADG01/xedb/onlinelog/group_3.270.8956623614ONLINE+DATADG01/xedb/onlinelog/group_4.266.8941894654ONLINE+DATADG01/xedb/onlinelog/group_4.273.8956623655ONLINE+DATADG01/xedb/onlinelog/group_5.275.8980780735ONLINE+DATADG01/xedb/onlinelog/group_5.278.8980782156ONLINE+DATADG01/xedb/onlinelog/group_6.277.8980781476ONLINE+DATADG01/xedb/onlinelog/group_6.279.8980782317STANDBY+DATADG01/xedb/onlinelog/group_7.282.9017098038STANDBY+DATADG01/xedb/onlinelog/group_8.283.901709811
9STANDBY+DATADG01/xedb/onlinelog/group_9.284.901709815
10STANDBY+DATADG01/xedb/onlinelog/group_10.285.901709823
11STANDBY+DATADG01/xedb/onlinelog/group_11.286.901709827
12STANDBY+DATADG01/xedb/onlinelog/group_12.287.901709829
6rowsselected.3.源端:rman备份run{allocatechannelc1typedisk;allocatechannelc2typedisk;backupdatabaseformat'/oradata/backup/full_%d_%T_%s_%p';sql'altersystemarchivelogcurrent';sql'altersystemarchivelogcurrent';sql'altersystemarchivelogcurrent';backuparchivelogallformat'/oradata/backup/arch_%d_%T_%s_%p';
}创建目标端控制文件,也可以用rman备份SQL>alterdatabasecreatestandbycontrolfileas'/oradata/ctl_bf';
rmantarget/
backupcurrentcontrolfileforstandbyformat'/oradata/backup/ctl_bf'步骤4:设置主数据库的初始化参数在主数据库通过定义log_archive_dest_n控制redo传输服务。当主数据库被转换为standby角色,需要添加额外的参数,控制redo数据的接收和应用服务。4.1源端创建pfile:
sql>createpfile='/tmp/test.ora'fromspfile;

由于rac共享spfile文件,所以修改参数文件的操作只需要在一个节点完成。4.2.scp参数文件到目标端
scprman备份到目标端4.3.vi参数文件,控制文件路径改一下添加如下内容*.db_name='xedb'*.fal_client='STXEDB'*.fal_server='XEDB'*.log_archive_config='dg_config=(xedb,stxedb)'*.log_archive_dest_1='location=+ARCH_DG/arc1'valid_for=(all_logfiles,all_roles)db_unique_name=xedb'*.log_archive_dest_2='service=stxedblgwrsyncaffirmvalid_for=(online_logfiles,primary_role)db_unique_name=stxedb'*.log_archive_dest_state_1='ENABLE'*.log_archive_dest_state_2='ENABLE'*.log_file_name_convert='+DATADG01','/oradata/stxedb'*.db_file_name_convert='+DATADG01','/oradata/stxedb'*.standby_archive_dest='location=/oradata/arch'
*.standby_file_management='AUTO'----------------------------------------------------------------------------
如果主库不停机可直接设置:
altersystemsetlog_archive_config='dg_config=(xedb,standbyxedb)'scope=spfile;
altersystemsetlog_archive_dest_1='LOCATION=+ARCH_DG/ARC1'valid_for=(all_logfiles,all_roles)db_unique_name=xedb'scope=spfile;altersystemsetlog_archive_dest_2='service=standbyxedblgwrsyncaffirmvalid_for=(online_logfiles,primary_role)db_unique_name=standbyxedb'scope=spfile;altersystemsetlog_archive_dest_state_1=enablescope=spfile;altersystemsetlog_archive_dest_state_2=enablescope=spfile;altersystemsetremote_login_passwordfile=exclusivescope=spfile;altersystemsetfal_server=standbyxedbscope=spfile;
altersystemsetstandby_file_management=autoscope=spfile;
-----------------------------------------------------------------------------
参数说明:log_archive_dest_1:location属性指定LOCATION=+ARCH_DG/ARC1表明本地归档Redo日志存放位置valid_for表明无论数据库是什么角色,各种类型的日志都要归档到这个目的地;log_archive_dest_1指定的db_unique_name必须在dg_config
中出现,必须要与归档位置所在的数据库db_unique_name初始化参数相同。log_archive_dest_2:service指定远程服务器,通过oraclenet连接串,lgwrsyncaffirm表明redo日志由lgwr进程以实时同步的方式传送到standby数据库中的Standby
redo日志,并且在同步完成后给出响应;valid_for表明该数据库是主数据库的时候,联机redo日志会被归档到该目录位置。fal_server和standby_file_management参数是当主数据库被转换为standby角色的时候变得有效,fal_server指定本地oraclenet服务名,从11g开始不需要fal_client参数。db_file_name_convert='+DATADG01','/oradata/standynode'
log_file_name_convert='+DATADG01','/oradata/standynode'注意:对于db_file_name_convert和log_file_name_convert两个参数的配置要特别注意。如果有两台服务器A和B组成的DataGuard环境,服务器A是主服务器,服务器B是Standby数据库服务器,那么在A服务器的参数文件配置从服务器B转换为A的目录,在B服务器中的参数文件配置从服务器A转换到服务器B的目录。在主数据库的参数文件配置完成后,copy到备服务器的$ORACLE_HOME/dbs目录下步骤5:位standby数据库创建初始化参数文件直接在standby数据库中对从主数据库拷贝过来的参数文件进行修改,修改后按照init<SID>.ora的命名规则重命名参数文件。
修改传递过来的参数文件,去掉有关rac配置以及修改相关的DG配置。修改后的初始化参数文件如下:*.db_name='xedb'
*.db_unique_name='stxedb'
*.fal_client='stxedb'*.fal_server='xedb'*.log_archive_config='dg_config=(xedb,stxedb)'*.log_archive_dest_1='location=/oradata/arch'*.log_archive_dest_2='service=stxedblgwrsyncaffirmvalid_for=(online_logfiles,primary_role)db_unique_name=stxedb'*.log_archive_dest_state_1='enable'*.log_archive_dest_state_2='enable'
*.log_file_name_convert='+datadg01/xedb/onlinelog','/oradata/stxedb','+arch_dg/xedb/archivelog','/oradata/arch','+arch_dg/arc1','/oradata/arch'
*.db_file_name_convert='+DATADG01/xedb/datafile','/oradata/stxedb','+DATADG01/xedb/tempfile','/oradata/stxedb'
*.remote_login_passwordfile='exclusive'
*.standby_file_management='auto'如果主数据库与standby数据库的目录不同,还需要添加如下参数,指定数据文件目录和日志文件目录的转换
db_file_name_convert='+DATADG01','/oradata'log_file_name_convert='+DATADG01/arc','/oradata/arc'

注意:确保compatible初始化参数在主数据库和standby数据库中的设置是相同的。如果值不同,redo传输服务可能不能从主数据库传送redo数据到standby数据库。步骤6:创建相应的目录结构6.1创建文件系统目录
根据参数文件的内容,创建相应的目录结构,并修改所有者和权限。11g要创建这些目录
rm-rf$ORACLE_BASE/admin/$ORACLE_SID
mkdir-p$ORACLE_BASE/admin/$ORACLE_SID/adump
mkdir-p$ORACLE_BASE/admin/$ORACLE_SID/dpdump
mkdir-p$ORACLE_BASE/admin/$ORACLE_SID/pfile
mkdir-p$ORACLE_BASE/admin/$ORACLE_SID/scripts
chmod-R750$ORACLE_BASE/adminrm-rf$ORACLE_BASE/diag/rdbms/$ORACLE_SID
mkdir-p$ORACLE_BASE/diag/rdbms/$ORACLE_SID/$ORACLE_SID/alert
mkdir-p$ORACLE_BASE/diag/rdbms/$ORACLE_SID/$ORACLE_SID/cdump
mkdir-p$ORACLE_BASE/diag/rdbms/$ORACLE_SID/$ORACLE_SID/hm
mkdir-p$ORACLE_BASE/diag/rdbms/$ORACLE_SID/$ORACLE_SID/incident
mkdir-p$ORACLE_BASE/diag/rdbms/$ORACLE_SID/$ORACLE_SID/incpkg
mkdir-p$ORACLE_BASE/diag/rdbms/$ORACLE_SID/$ORACLE_SID/ir
mkdir-p$ORACLE_BASE/diag/rdbms/$ORACLE_SID/$ORACLE_SID/lck
mkdir-p$ORACLE_BASE/diag/rdbms/$ORACLE_SID/$ORACLE_SID/metadata
mkdir-p$ORACLE_BASE/diag/rdbms/$ORACLE_SID/$ORACLE_SID/stage
mkdir-p$ORACLE_BASE/diag/rdbms/$ORACLE_SID/$ORACLE_SID/sweep
mkdir-p$ORACLE_BASE/diag/rdbms/$ORACLE_SID/$ORACLE_SID/trace
chmod-R750$ORACLE_BASE/diag/rdbms/$ORACLE_SID确保参数文件的配置目录都已经创建,并且有合适权限上面的操作也可以通过asmcmd工具的mkdir命令完成步骤7:配置Redo传输认证DataGuard通过oralenet会话在DataGuard配置的成员之间传送redo数据和控制消息。redo传输会话可以使用ssl协议或者远程登陆密码文件进行认证。如果没有使用ssl认证,每个DataGuard配置中的成员必须配置使用远程登陆密码文件和每个物理Standby数据库必须有一个来自主数据库的最新密码文件拷贝。注意:无论什么时候,在主数据库授权或者收回sysdba权限,或者改变这些权限用户的登陆密码,都必须从主数据库拷贝最新的密码文件到DataGuard配置中的每个standby数据库以替换密码文件,或者将每个standby
数据库修改为相同密码。从主数据库的$ORACLE_HOME/dbs目录传递密码文件到standby数据库的相同目录,并重命名为orapwrtddg1,修改权限和用户组步骤8:配置主备数据库监听器用netmanager为各自的数据库配置监听器,在11gR2中,监听器的创建和管理要使用grid用户来完成。
对于standby数据库而言,由于需要在节点使用rman连接standby数据库执行duplicate操作,所以需要配置静态的服务名,用于主数据库RMAN工具
的连接。在grid用户下的$GRID_HOME/network/admin/listener.ora文件加入以下内容:
SID_LIST_LISTENER=(SID_LIST=(SID_DESC=(GLOBAL_DBNAME=rtdg1)(ORACLE_HOME=/u01/app/oracle/product/11.2.0/db_1)(SID_NAME=rtdg1)))

在listener.ora文件的SID_LIST列表中加入SID_DESC的描述,确保配置中的SID_NAME和ORACLE_HOME与oracle系统用户的ORACLE_SID和ORACLE_HOME环境变量值是一致的。配置完成后用grid用户重启监听,是配置生效。注意:配置是修改grid用户下的GRID_HOME/network/admin/listener.ora配置文件,改文件配置中制定的ORACLE_HOME是oracle用户的ORACLE_HOME,而非grid用户的ORACLE_HOME复制密码文件:步骤9:创建OracleNet服务名以oracle用户登录服务器,修改主备数据库的$ORACLE_HOME/network/tnsname.ora文件,完成后tnsping验证一下。步骤10:启动standby数据库到nomount模式SQL>startupnomountpfile='/oradata/test.ora';
sql>createspfilefrompfile;
sql>startupnomount;
注意:standby先创建spfile,再启动到nomount模式步骤11:从主数据库复制文件到standby数据库,这里用rman从主数据库复制文件到standby数据库,最简单的方法莫过于使用rman的duplicate复制命令,在10g中使用rman的duplicate命令复制standby数据库需要先将主数据库进行备份再复制,从11g开始使用该命令支持直接对活动的数据库进行复制,这对于数据量大的系统来说可以大大减少DataGuard部署需要花费的时间。RMAN>restorestandbycontrolfilefrom'/oradata/backup/ctl_bf';Startingrestoreat29-DEC-14usingtargetdatabasecontrolfileinsteadofrecoverycatalogallocatedchannel:ORA_DISK_1channelORA_DISK_1:SID=20devicetype=DISKchannelORA_DISK_1:restoringcontrolfilechannelORA_DISK_1:restorecomplete,elapsedtime:00:00:03outputfilename=/oradata/ogg02/control01.ctloutputfilename=/oradata/ogg02/control02.ctlFinishedrestoreat29-DEC-14alterdatabasemount;
RMAN>alterdatabasemount;databasemountedreleasedchannel:ORA_DISK_1验证有没有生效
selectnamefromv$datafile;12.rman恢复run
{
setnewnamefordatafile'+DATADG01/xedb/datafile/system.259.894187575'to'/oradata/stxedb/system.259.894187575';
setnewnamefordatafile'+DATADG01/xedb/datafile/sysaux.260.894187589'to'/oradata/stxedb/sysaux.260.894187589';
setnewnamefordatafile'+DATADG01/xedb/datafile/undotbs1.261.894187601'to'/oradata/stxedb/undotbs1.261.894187601';
setnewnamefordatafile'+DATADG01/xedb/datafile/undotbs2.263.894187615'to'/oradata/stxedb/undotbs2.263.894187615';
setnewnamefordatafile'+DATADG01/xedb/datafile/users.264.894187621'to'/oradata/stxedb/users.264.894187621';
setnewnamefordatafile'+DATADG01/xedb/datafile/users.268.895081225'to'/oradata/stxedb/users.268.895081225';
setnewnamefordatafile'+DATADG01/xedb/datafile/users.269.895582787'to'/oradata/stxedb/users.269.895582787';
setnewnamefordatafile'+DATADG01/xedb/datafile/users.280.898078315'to'/oradata/stxedb/users.280.898078315';
restoredatabase;switchdatafileall;}run{allocatechannelc1typedisk;recoverdatabase;}主库先备份归档:RMAN>backuparchivelogallformat'/oradata/backup/arch_%d_%T_%s_%p';将归档备份集Scp到备库;备库再注册归档备份集:
RMAN>catalogbackuppiece'/oradata/backup/arch_XEDB_20160121_25_1';RMAN>recoverdatabase;
RMAN-06054:mediarecoveryrequestingunknownarchivedlogforthread1withsequence11andstartingSCNof964852828注意:所有的standby数据库复制工作结束后,删除之前在standby数据库监听器中配置的静态服务名。步骤13:启动redoapply13.1查看实例状态
sql>selectstatusfromv$instance;shutdownimmediate;startupnomount;alterdatabasemountstandbydatabase;SQL>selectcontrolfile_typefromv$database;CONTROL-------
STANDBY13.2以只读方式打开standby
sql>alterdatabaseopenreadonly;13.3启动redoapply
sql>alterdatabaserecovermanagedstandbydatabaseusingcurrentlogfiledisconnectfromsession;从11gR2开始,物理standby数据库在打开的情况下也能应用日志,成为ActiveDataGuard注意:如果standby数据库是一个rac数据库,所有节点传送的日志放在共享存储上,只有一个节点会启动MRP进程应用日志
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: