DataGuard 实施方案XX期货.docx
- 文档编号:8318243
- 上传时间:2023-01-30
- 格式:DOCX
- 页数:26
- 大小:192.24KB
DataGuard 实施方案XX期货.docx
《DataGuard 实施方案XX期货.docx》由会员分享,可在线阅读,更多相关《DataGuard 实施方案XX期货.docx(26页珍藏版)》请在冰豆网上搜索。
DataGuard实施方案XX期货
目录
目录i
服务概述1
环境描述1
系统部署图2
灾备环境配置3
保护模式选择3
主库hsvipdb1环境准备3
安装Oracle软件,10.2.0.5补丁,dbca建库3
参数文件修改4
主库最终参数文件如下4
在主库创建密码文件、参数文件、以及standby控制文件。
4
主库tns文件配置5
备库hsvipdb2环境准备5
数据库软件安装5
创建对应目录5
参数文件修改内容5
备库最终参数文件如下6
口令文件配置6
dataguard正式配置6
确认主库为归档模式6
传输备份集7
启动备库(hsvipdb2)7
简单测试7
备库tns文件配置7
创建standbyredolog8
Switchover切换步骤9
正常Switchover切换9
主库切换为备库9
备库切换为主库10
Failover切换步骤10
备库的Failover切换10
主/备数据库状态检查及注意事项10
备份standby库当前的状态11
日志差异检查11
进行failover切换12
日常维护12
检查灾备12
检查保护模式12
检查DataGuard状态13
检查进程13
检查归档状态13
检查备库归档应用状态14
检查主库未传输的日志15
相关视图15
正常开关机顺序15
测试用例16
网络中断16
测试过程16
测试结果16
不正常的开关机顺序16
测试过程16
测试结果16
后续建议17
归档日志清理17
测试时问题解决方法17
Failover切换测试后问题恢复17
参考文件18
服务概述
本次服务在HPDL580G7机器搭建期货交易数据库系统的DataGuard环境,并针对各测试场景进行切换测试。
本文档涉及本次服务的各个环节,可作为DataGuard日常维护的参考手册。
按本手册操作时注意文档中的命令最好在文本文件中将引号、单引号、分号替换为英语半角的符号。
平时对灾备检查参考“日常维护”章节,确认备库日志应用情况,保证日志应用相差很小。
以下配置主要介绍的是采用archasync使用归档日志切换时才发送归档日志文件到,备库端重演事务对于采用LGWRSYNC或者LGWRASYNC方式同步的没有在此介绍有兴趣的可以自己再去做详细的测试
环境描述
hsvipdb1(primary)
hsvipdb2(standby)
主机
HPDL580G7
HPDL580G7
主机名
hsvipdb1
hsvipdb2
OS
RedhatAS5.6
RedhatAS5.6
DB
Oracle10.2.0.5
Oracle10.2.0.5
Db_unique_name
hsvipdb1
hsvipdb2
数据文件路径
/oradata
800G
/oradata
800G
在线重做日志
/redolog
/redolog
归档日志
/arch
150G
/arch
150G
系统部署图
灾备环境配置
保护模式选择
OraclePhysicalDataGuard提供了三种保护模式。
最大保护模式(maximumprotection),最大可用模式(maximumavailability),最大性能模式(maximumperformance)。
最大保护模式(maximumprotection)--这种保护模式确保当主数据库故障不会发生数据丢失。
要提供这种级别的保护,恢复每个事务所需的重做数据必须在事务提交之前同时写到本地联机重做日志和备数据库上的重做日志。
要确保不发生数据丢失,如果故障导致主数据库无法将恢复事务所需的流写入备库重做日志时主数据库会自动关闭,避免数据丢失以保护两个数据库的一致性。
这种模式它要求备数据库必须配置StandbyRedoLog,而主数据库必须使用LGWR、SYNC、AFFIRM方式归档
最大可用模式(maximumavailability)--这种保护模式尽最大可能保持主/备库数据的一致性,它是最大性能与最大可用两个模式的一个折中。
与最大保护模式相同,恢复事务所需的重做日志流在写到本地联机重做日志和备数据库上的重做日志之前,事务将不会提交。
与最大保护模式不同的是,如果故障导致主数据库无法将重做流写到异地备重做日志时,主数据库不会关闭。
这时主库自动转换为最大性能模式运行,直到故障消除并且备库再次能够与主库同步之后,主库才能再次自动转换为最大可用模式运行。
这种模式尽可能的确保主/备库的一致性,但是绝对保证不了数据库的完全一致。
比如转换为最大性能模式之后主/备库之间同步还没有恢复但事务继续进行恰巧这时主库挂掉了,那么就会导致主/备库之间的数据存在了差异性。
这种模式它要求备数据库必须配置StandbyRedoLog,而主数据库必须使用LGWR、SYNC、AFFIRM方式归档
最大性能模式(maximumperformance)--这种保护模式(默认)提供了可能的最高低别的数据保护,它更加侧重于对于主库的可用性不造成而不影响也就是说更加观注主库的整体性能。
主库上面事务的redo日志只要写到本地联机重做日志文件就可能立即提交事务,而不必等待恢复事务所需重做日志流至备库传递完成。
这种模式主要使用LGWRASYNC或者ARCH实现,且备库也不需要使用StandbyRedoLog
主库hsvipdb1环境准备
安装Oracle软件,10.2.0.5补丁,dbca建库
确保主数据库都必须启用日志归档模式
修改主库属性:
alterdatabaseforcelogging;
##查看状态
selectFORCE_LOGGINGfromv$database;
这样数据库后期事务操作会忽略nologging关键字属性,所有事务操作都会强制记录日志
注意:
其实在后面对于standby角色的备库也要确保启用归档及forcelogging,因为要考虑到primary与standby角色之间的转换。
参数文件修改
altersystemsetdb_unique_name=hsvipdb1scope=spfile;
altersystemsetlog_archive_config='DG_CONFIG=(hsvipdb1,hsvipdb2)'scope=spfile;
altersystemsetlog_archive_dest_1='LOCATION=/arch/VALID_FOR=(ALL_LOGFILES,ALL_ROLES)DB_UNIQUE_NAME=hsvipdb1'scope=spfile;
altersystemsetlog_archive_dest_2='SERVICE=hsvipdb2archasyncVALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)DB_UNIQUE_NAME=hsvipdb2'scope=spfile;
altersystemsetlog_archive_dest_state_1='ENABLE'scope=spfile;
altersystemsetlog_archive_dest_state_2='ENABLE'scope=spfile;
altersystemsetfal_server='hsvipdb1'scope=spfile;
altersystemsetfal_client='hsvipdb2'scope=spfile;
altersystemsetSTANDBY_FILE_MANAGEMENT='AUTO'scope=spfile;
主库最终参数文件如下
在主库创建密码文件、参数文件、以及standby控制文件。
createpfile='/u01/hsvipdb2.txt'fromspfile;
orapwdfile=’/u01/orapwhsvipdb2.ora’password=change_on_installentries=10
alterdatabasecreatestandbycontrolfileas'/u01/controlstb.ctl';
以上三个命令创建的文件主要是给备库使用,其实对于密码文件可以直接将主库的密码文件拷贝过去就OK了,具体操作下面会讲解。
主库tns文件配置
在已有tnsnames.ora中加入如下内容:
hsvipdb1=
(DESCRIPTION=
(ADDRESS=(PROTOCOL=TCP)(HOST=10.24.80.101)(PORT=1521))
(CONNECT_DATA=
(SERVER=DEDICATED)
(SERVICE_NAME=hsvipdb1)
)
)
hsvipdb2=
(DESCRIPTION=
(ADDRESS=(PROTOCOL=TCP)(HOST=10.24.80.102)(PORT=1521))
(CONNECT_DATA=
(SERVER=DEDICATED)
(SERVICE_NAME=hsvipdb2)
)
)
备库hsvipdb2环境准备
数据库软件安装
在hsvipdb2机器上安装Oracle10gR2软件,并安装10.2.0.5补丁。
创建对应目录
在备库:
#mount/arch
#su–oracle
mkdir-p$ORACLE_BASE/admin/hsvipdb2/adump
mkdir-p$ORACLE_BASE/admin/hsvipdb2/bdump
mkdir-p$ORACLE_BASE/admin/hsvipdb2/cdump
mkdir-p$ORACLE_BASE/admin/hsvipdb2/udump
如果目录属主不是oracle.oinstall或者oracle.dba需要修改目录权限
参数文件修改内容
altersystemsetdb_unique_name=hsvipdb2scope=spfile;
altersystemsetlog_archive_config='DG_CONFIG=(hsvipdb2,hsvipdb1)'scope=spfile;
altersystemsetlog_archive_dest_1='LOCATION=/archive/VALID_FOR=(ALL_LOGFILES,ALL_ROLES)DB_UNIQUE_NAME=hsvipdb2'scope=spfile;
altersystemsetlog_archive_dest_2='SERVICE=hsvipdb1archasyncVALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)DB_UNIQUE_NAME=hsvipdb1'scope=spfile;
altersystemsetlog_archive_dest_state_1='ENABLE'scope=spfile;
altersystemsetlog_archive_dest_state_2='ENABLE'scope=spfile;
altersystemsetfal_server='hsvipdb2'scope=spfile;
altersystemsetfal_client='hsvipdb1'scope=spfile;
备库最终参数文件如下
口令文件配置
orapwdfile='/u01/app/oracle/product/10.2.0/db/dbs/orapwzhqhdb'password=oracleentries=10force=y
或者使用scp将主库上的口令文件拷贝到相对应的目录。
dataguard正式配置
系统中的正式库准备完成后开始对系统中的备库进行配置。
确认主库为归档模式
在主库(hsvipdb1):
#su–oracle
$sqlplus“/assysdba”
SQL>alterdatabaseforcelogging;
--检查模式
SQL>selectlog_mode,force_loggingfromv$database;
LOG_MODEFORCE_LOGGING
-------------------------
ARCHIVELOGYES
注:
确认上述模式正确,若不正常重新执行上述的alter操作。
传输备份集
$sqlplus“/assysdba”
SQL>ALTERDATABASECREATESTANDBYCONTROLFILEAS‘/u01/controlstb.ctl‘;
创建standby控制文件
shutdownimmediate关闭主库
通过scp把主库的密码文件、刚创建的standbycontrolfile、数据文件、参数文件传到备库主机上;
然后将密码文件拷贝到备库对应的$ORACLE_HOME/dbs/目录下,将名称由orapwhsvipdb1改为orapwhsvipdb2
启动备库(hsvipdb2)
在主库
SQL>startup
在备库
SQL>shutdownimmediate;
拷贝standbycontrolfile,使用standby控制文件来启动
[oracle@vipdb2~]$cp/u01/controlstb.ctl/redolog/control01.ctl
[oracle@vipdb2~]$cp/u01/controlstb.ctl/redolog/control02.ctl
[oracle@vipdb2~]$cp/u01/controlstb.ctl/redolog/control03.ctl
SQL>startupnomount;
SQL>createspfilefrompfile;
SQL>shutdownimmediate
SQL>startupmount;
SQL>alterdatabaserecovermanagedstandbydatabasedisconnectfromsession;
简单测试
在主库通过执行altersystemswitchlogfile;切换日志可以观察到备库会自动应用通过主库传过来的日志,分别进入主/备数据库的归档目录然后对比归档日志文件的文件个数/大小/时间/名称
如果主库从不过来归档,可以通过在主库侧手工修改参数如下:
ALTERSYSTEMSETlog_archive_dest_state_2='DEFER'SCOPE=MEMORY;
ALTERSYSTEMSETlog_archive_dest_state_2='ENABLE'SCOPE=MEMORY;
启动灾备后请参考”日常维护”章节进行检查
备库tns文件配置
配置tnsnames.ora内容如下:
hsvipdb1=
(DESCRIPTION=
(ADDRESS=(PROTOCOL=TCP)(HOST=10.24.80.101)(PORT=1521))
(CONNECT_DATA=
(SERVER=DEDICATED)
(SERVICE_NAME=hsvipdb1)
)
)
hsvipdb2=
(DESCRIPTION=
(ADDRESS=(PROTOCOL=TCP)(HOST=10.24.80.102)(PORT=1521))
(CONNECT_DATA=
(SERVER=DEDICATED)
(SERVICE_NAME=hsvipdb2)
)
)
配置完成后sqlplus“sys/密码@hsvipdb2assysdba”确认可以登录
创建standbyredolog
在使用最大保护模式或是最大可用模式的时候需要在standby数据库创建standbyredolog,对于最大性能模式可以不用创建standbyredolog
alterdatabaseaddstandbylogfile
group5('/redolog/standbyredolog/std_redo05a.log','/redolog/standbyredolog/std_redo05b.log')size1000m,
group6('/redolog/standbyredolog/std_redo06a.log','/redolog/standbyredolog/std_redo06b.log')size1000m,
group7('/redolog/standbyredolog/std_redo07a.log','/redolog/standbyredolog/std_redo07b.log')size1000m,
group8('/redolog/standbyredolog/std_redo08a.log','/redolog/standbyredolog/std_redo08b.log')size1000m,
group9('/redolog/standbyredolog/std_redo09a.log','/redolog/standbyredolog/std_redo09b.log')size1000m;
在主数据库添加"standby联机日志文件",这里要保证standby日志文件与主库联机日志文件相同大小,其实这个也可不加的,如果没有手工创建那么主数据库会自动创建standby日志文件如下图,只是如果自己手工创建的话便于自己管理
添加standby日志文件的规则:
standby日志最少应该比redolog多一组。
推荐的备重做日志数依赖于主数据库上的线程数。
(每线程日志文件最大数目+1)*线程数
否则standby日志在应用时报如下信息:
RFS[1]:
Nostandbyredologfilescreated
RFS[1]:
ArchivedLog:
'/arch/1_30_633287861.dbf'
在主库添加完standbylogfile后,当主库切换为standby角色后会自动使用standbyredologfile,具体应用信息如下:
RFS[1]:
Successfullyopenedstandbylog5:
'/redolog/standbyredelog/std_redo05a.log'
切换后在alert日志中可以看到具体的详细信息仅供参考:
Switchover切换步骤
无损转换,通常是用户手动触发或者有计划的让其自动触发,比如硬件升级啦,软件升级啦之类的。
通常它给你带来的工作量非常小并且都是可预计的。
其执行分两个阶段,第一步,primary数据库转换为standby角色,第二步,standby数据库(之一)转换为primary角色,primary和standby只是简单的角色互换,这也就是说primary/standby的角色转换是动态的没有固定说谁就是主的其它就是从的
正常Switchover切换
主库切换为备库
在主库(hsvipdb1)
#su–oracle
$sqlplus“/assysdba”
SQL>selectSWITCHOVER_STATUS,DATABASE_ROLE,PROTECTION_MODE
FROMv$database;
SWITCHOVER_STATUS
------------------
TOSTANDBY
如果SWITCHOVER_STATUS返回的结果是SESSIONSACTIVE或TOSTANDBY表示支持将主的转换成备的,否则的话你就需要重新检查一下Data Guard配置,比如看看LOG_ARCHIVE_DEST_n之类参数值是否正确有效等等。
将数据库从primary转换成standby模式,下面两个sql语句建议用每二个sql
conn/assysdba
alterdatabasecommittoswitchovertophysicalstandby
或者
alterdatabasecommittoswitchovertophysicalstandbywithsessionshutdown;
停止数据库
shutdownimmediate
启动数据库到mount模式,下面提供两种方法建议用第一种方法
startupnomount
alterdatabasemountstandbydatabase;
或者直接启动到mount模式
startupmount
将主库改为数据库以不连接方式进行恢复管理
alterdatabaserecovermanagedstandbydatabasedisconnect;
注:
A、如果仅做切换测试,最好在切换前备份原来的spfile,切换完成后再确认参数是否正常。
B、切换测试之前请按照《检查备库归档应用状态》检查主备库incarnation的一致性和日志应用状况。
备库切换为主库
在备库(hsvipdb2)
#su–oracle
$sqlplus“/assysdba”
将从数据库转换为主数据库
SQL>selectSWITCHOVER_STATUS,DATABASE_ROLE,PROTECTION_MODE
FROMv$database;
如果SWITCHOVER_STATUS的值为TOPrimary或SESSIONSACTIVE,执行脚本
待原来的主库从primary的库转换为standby模式后,如果SWITCHOVER_STATUS返回的结果是SESSIONSACTIVE或TOPRIMARY表示支持将从的转换成主的,否则的话你就需要重新检查一下Data Guard配置,比如看看LOG_ARCHIVE_DEST_n之类参数值是否正确有效等等。
将数据库从standby转换成primary模式,下面两个sql语句建议用每二个sql
conn/assysdba
alterdatabasecommittoswitchovertoprimary
或者
alterdatabasecommittoswitchovertoprimarywithsessionshutdown;
然后打开数据库
alterdatabaseopen;
注意:
如果数据库处于openread-only模式下,那么必须要将数据库shutdownimmediate然后再直接startup数据库
--如果是DataG
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- DataGuard 实施方案XX期货 实施方案 XX 期货