oracle11gr2dataguard日常维护及故障处理.docx
- 文档编号:8938859
- 上传时间:2023-02-02
- 格式:DOCX
- 页数:9
- 大小:21.06KB
oracle11gr2dataguard日常维护及故障处理.docx
《oracle11gr2dataguard日常维护及故障处理.docx》由会员分享,可在线阅读,更多相关《oracle11gr2dataguard日常维护及故障处理.docx(9页珍藏版)》请在冰豆网上搜索。
oracle11gr2dataguard日常维护及故障处理
Oracle11GR2DataGuard日常维护及故障处理
[日期:
2016-02-20]
来源:
Linux社区 作者:
fengwan
[字体:
大 中 小]
1.关于ForcedLogging模式有一些DDL语句可以通过指定NOLOGGING子句的方式避免写redolog(目的是提高速度,某些时候确实有效),指定数据库为FORCELOGGING模式后,数据库将会记录除临时表空间或临时回滚段外所有的操作而忽略类似NOLOGGING之类的指定参数。
如果在执行forcelogging时有nologging之类的语句在执行,则forcelogging会等待直到这类语句全部执行。
FORCELOGGING是做为固定参数保存在控制文件中,因此其不受重启之类操作的影响(只执行一次即可)
打开forcelogging
SQL>alterdatabaseforcelogging;
关闭forcelogging
SQL>alterdatabasenoforcelogging;
查看forcelogging的状态:
SQL>selectFORCE_LOGGINGfromv$database;
2.关于主备库的密码
密码文件位置$Oracle_HOME/dbs/orapwSID,主备库的密码必须要一致,否则可能出现日志无法传输故障,最好是使用scp传过去较为方便
3.关于listener.ora和tnsnames.ora
listener.ora为数据库的监听配置文件,tnsnames.ora为网络服务名配置文件
修改listener.ora是需要重启监听程序,而tnsnames.ora是不需要重启的,我们可以使用默认的listener.ora
LISTENER= (DESCRIPTION_LIST= (DESCRIPTION= (ADDRESS=(PROTOCOL=TCP)(HOST=localhost.localdomain)(PORT=1521)) ) )ADR_BASE_LISTENER=/opt/oracle
以上是动态注册,如果是静态注册的话,则是
SID_LIST_LISTENER= (SID_LIST= (SID_DESC= (SID_NAME=PLSExtProc) (ORACLE_HOME=/opt/oracle/product/11.2.0/db_1) (PROGRAM=extproc) ) (SID_DESC= (GLOBAL_DBNAME= db1) (ORACLE_HOME=/opt/oracle/product/11.2.0/db_1) (SID_NAME= db1) ) )
tnsnames.ora则只需要添加服务名
db1 = (DEST_NAME (DESCRIPTION= (ADDRESS_LIST= (ADDRESS=(PROTOCOL=TCP)(HOST= db1)(PORT=1521)) ) (CONNECT_DATA= (SERVER=DEDICATED) (SERVICE_NAME= db1) ) )db2 = (DESCRIPTION= (ADDRESS_LIST= (ADDRESS=(PROTOCOL=TCP)(HOST= db2)(PORT=1521)) ) (CONNECT_DATA= (SERVER=DEDICATED) (SERVICE_NAME= db2) ) )
以上按照自己的实际情况进行修改以上配置好了,就可以相互的tnsping db1或tnspingdb2进行测试
4.参数文件说明
参数文件说明:
增加以下参数,如果在初始化参数已经有配置,则看需要做相应的修改。
1、与主库角色相关的初始化参数说明:
DB_NAME注意保持同一个DataGuard环境中所有数据库DB_NAME相同DB_UNIQUE_NAME为每一个数据库指定一个唯一的名称,以标示同一个dataguard环境中不同的数据库。
LOG_ARCHIVE_CONFIG 该参数通过DG_CONFIG属性罗列同一个DataGuard中所有DB_UNIQUE_NAME(含主库db及备库db),以逗号分隔。
例如:
LOG_ARCHIVE_CONFIG='DB_CONFIG=(db1,db22)'LOG_ARCHIVE_DEST_n 归档文件的生成路径。
该参数非常重要,dataguard就是通过这里的设置传输日志的。
LOG_ARCHIVE_DEST_STATE_n指定参数值为ENABLE,标示对应的LOG_ARCHIVE_DEST_n参数是否有效。
REMOTE_LOGIN_PASSWORDFILE推荐设置参数值为EXCLUSIVE或者SHARED,注意保证相同DataGuard配置中所有db服务器sys密码相同。
如果不同日志传输会失败。
数据库默认是EXCLUSIVE,一般不用修改。
LOG_ARCHIVE_FORMAT指定归档文件格式。
一般也不用修改,保持默认即可2、以下参数为备库角色相关的参数,建议在主库的初始化参数中也进行设置,这样在主备库角色相互转换后不需要做修改dataguard也能正常运行。
FAL_SERVER 指定备库到主数据库的连接服务名,FAL_SERVER=orcl2日志所在服务器。
FAL_CLIENT 指定主库到备库的连接服务名,FAL_CLIENT=orcl日志接收客户端。
STANDBY_FILE_MANAGEMENT如果主库的数据文件发生修改(如新建,重命名等)则按照本参数的设置在备库中做相应修改。
设为AUTO表示自动管理。
设为MANUAL表示需要手工管理。
例如:
STANDBY_FILE_MANAGEMENT=AUTO下面开始修改主库的初始化参数。
db_name参数已经设置,不用修改SQL>altersystemsetdb_unique_name=’db1’scope=spfile;SQL>altersystemsetlog_archive_config='dg_config=(db1,db2)'scope=spfile;---这里的db1和db2为db_unique_name
SQL>altersystemsetlog_archive_dest_1='location=/opt/oracle/flash_recovery_area'scope=spfile;--/opt/oracle/flash_recovery_area为本地的归档目录,需要手动创建该目录,当然也可以指定别的路径。
注意oracle账号对该目录又可读写的权限。
SQL>altersystemsetlog_archive_dest_state_1=enablescope=spfile;--这个通常不用修改,系统默认的就是enable。
SQL>altersystemsetlog_archive_dest_2='service=db2valid_for=(online_logfiles,primary_role)archasyncNOAFFIRMdb_unique_name=db2'scope=spfile;-----这里的service为主库连接到备库的服务名,后面会在tnsnames.ora文件中配置valid_for参数说明这个归档日志目的地在本数据库为主库的角色下才需要把online_logfile传输到备库去。
archasyncNOAFFIRM说明的是同步的方式,同步的方式有三种:
最大保护,最大性能,最大可用。
SQL>altersystemsetlog_archive_dest_state_2=enablescope=spfile;以上修改的是作为主库角色需要的参数,为了方便以后主备库切换,建议在主库中也配置作为备库角色的相关参数。
SQL>altersystemsetfal_server=db2scope=spfile;SQL>altersystemsetfal_client=dbscope=spfile;SQL>altersystemsetstandby_file_management=autoscope=spfile;生成静态参数文件,以备后面给备库使用。
SQL>createpfilefromspfile;重新启动主库,使参数生效。
6.DataGuard启动停止及维护:
DataGuard停止:
先主后备
DataGuard启动:
先备后主
7.DataGuard日常监控视图
a.主库查看日志归档路径是否可用,如果远程归档目录不可用则error会显示错误信息
SQL>selectdest_name,status,errorfromv$archive_dest;DEST_NAME STATUS ERROR------------------------------------------------------------LOG_ARCHIVE_DEST_1 VALIDLOG_ARCHIVE_DEST_2 VALIDLOG_ARCHIVE_DEST_3 INACTIVELOG_ARCHIVE_DEST_4 INACTIVELOG_ARCHIVE_DEST_5 INACTIVELOG_ARCHIVE_DEST_6 INACTIVELOG_ARCHIVE_DEST_7 INACTIVELOG_ARCHIVE_DEST_8 INACTIVELOG_ARCHIVE_DEST_9 INACTIVELOG_ARCHIVE_DEST_10INACTIVE10rowsselected.如上记录则代表备库归档日志目录有效且正常
b.查询数据库的主备角色,以及当前DataGuard的运行模式,在主备查询结果不同
主库:
SQL>selectdatabase_role,LOG_MODE,PROTECTION_MODE,PROTECTION_LEVELfromv$database;DATABASE_ROLE LOG_MODE PROTECTION_MODE PROTECTION_LEVEL--------------------------------------------------------------------PRIMARY ARCHIVELOG MAXIMUMPERFORMANCE MAXIMUMPERFORMANCE
备库:
SQL>selectdatabase_role,LOG_MODE,PROTECTION_MODE,PROTECTION_LEVELfromv$database;DATABASE_ROLE LOG_MODE PROTECTION_MODE PROTECTION_LEVEL--------------------------------------------------------------------PHYSICALSTANDBYARCHIVELOG MAXIMUMPERFORMANCE MAXIMUMPERFORMANCE
c.获取归档日志的应用情况,主备库结果不同。
在主库上对于每个归档文件会有2条记录
SQL>selectname,SEQUENCE#,APPLIEDfromv$archived_logorderbysequence#;
备库:
/opt/oracle/flash_recovery_area/1_11_904130046.dbf 11 YES/opt/oracle/flash_recovery_area/1_12_904130046.dbf 12 YES/opt/oracle/flash_recovery_area/1_13_904130046.dbf 13 YES/opt/oracle/flash_recovery_area/1_14_904130046.dbf 14 YES/opt/oracle/flash_recovery_area/1_15_904130046.dbf 15 YES/opt/oracle/flash_recovery_area/1_16_904130046.dbf 16 YES/opt/oracle/flash_recovery_area/1_17_904130046.dbf 17 YES/opt/oracle/flash_recovery_area/1_18_904130046.dbf 18 YES/opt/oracle/flash_recovery_area/1_19_904130046.dbf 19 YES/opt/oracle/flash_recovery_area/1_20_904130046.dbf 20 YES/opt/oracle/flash_recovery_area/1_21_904130046.dbf 21 YES/opt/oracle/flash_recovery_area/1_22_904130046.dbf 22 YES/opt/oracle/flash_recovery_area/1_23_904130046.dbf 23 YES/opt/oracle/flash_recovery_area/1_24_904130046.dbf 24 IN-MEMORY
如果有发现日志不连续,则需要对照主库的归档日志序列,判断是否有丢失的日志,如果有则需要手动注册日志并应用归档。
(方法:
从主库的归档目录拷贝相应的归档文件到备库上注册alterdatabaseregisterphysicallogfile'/opt/oracle/flash_recovery_area/归档文件名’;
然后手动应用日志alterdatabaserecoverautomaticstandbydatabase;在测试过程中发现oracle10G下把丢失的归档日志文件考入指定目录会自动注册,不需手动注册。
)
d.查询主备库的进程信息
SQL>selectprocess,statusfromv$managed_standby;--查询主备库上的进程信息
主库:
SQL>selectprocess,statusfromv$managed_standby;PROCESS STATUS---------------------ARCH CLOSINGARCH CLOSINGARCH CLOSINGARCH CLOSINGLNS WRITING
备库:
SQL>selectprocess,statusfromv$managed_standby;PROCESS STATUS---------------------ARCH CONNECTEDARCH CONNECTEDARCH CLOSINGARCH CONNECTEDRFS IDLERFS IDLEMRP0 APPLYING_LOG
注意以上2个红色部分
f.查看dataguard的状态信息
SQL>selectmessage_num,messagefromv$dataguard_status;
g.检查备库是否有日志缺失
SQL>select*fromv$archive_gap;
6.主备库的切换
switchover (计划中的切换,不会丢失数据)
failover (当主库出现故障的时候需要主备库切换角色)
a.switchover的切换
主库端:
selectswitchover_statusfromv$database;如果是tostandby表可以正常切换.直接执行alterdatabasecommittoswitchovertophysicalstandby;否则执行:
alterdatabasecommittoswitchovertophysicalstandbywithsessionshutdown;shutdownimmediate;startupnomount;alterdatabasemountstandbydatabase;alterdatabaserecovermanagedstandbydatabasedisconnectfromsession;
备库端:
selectswitchover_statusfromv$database;如果是to_primary表可以正常切换.执行:
alterdatabasecommittoswitchovertoprimary;否则执行:
alterdatabasecommittoswitchovertoprimarywithsessionshutdown;shutdownimmediate;startup;
b.failover的切换
(1)判断主数据库确实出现严重的硬件故障或其他原因导致主数据库无法启动。
(2)在物理备用数据库上检查是否有archiveredologgapsSQL>SELECTTHREAD#,LOW_SEQUENCE#,HIGH_SEQUENCE#FROMV$ARCHIVE_GAP;(3)消除archiveredologgaps从主数据库上或其他备份的地方把没有传到物理备用数据库的archiveredolog传到物理备用数据库上,并注册到物理备用数据库的controlfile中。
SQL>ALTERDATABASEREGISTERPHYSICALLOGFILE'archiveredolog文件名称';重复2,3步骤直到V$ARCHIVE_GAP视图无记录存在。
(4)在物理备用数据库上发起failover操作SQL>ALTERDATABASERECOVERMANAGEDSTANDBYDATABASEFINISHFORCE;(5)把物理备用数据库转化成主用角色SQL>ALTERDATABASECOMMITTOSWITCHOVERTOPRIMARY;(6)把新的主用数据库重新启动SQL>SHUTDOWNIMMEDIATE;SQL>STARTUP;
(7)对新的主用数据库做全备份.
7.归档日志的处理a.物理备库中已经应用的归档日志需定期删除.rman>DELETEARCHIVELOGALLCOMPLETEDBEFORE'SYSDATE-7';删除7天前的归档日志文件。
删除之后最好做一个全备份。
b.先手动删除归档日志文件,然后再RMAN里执行下面2条命令以更新控制文件crosscheckarchivelogall;deleteexpiredarchivelogall;c.取消对备库传送日志ALTERSYSTEMSETlog_archive_dest_state_2=’DEFER’;
8.常见故障:
a.备库重启后,在主库上归档出现ORA-03113错误
SQL>selectdest_name,status,errorfromv$archive_dest;DEST_NAME STATUS ERROR--------------------------------------LOG_ARCHIVE_DEST_1 VALIDLOG_ARCHIVE_DEST_2 ERROR ORA-03113:
end-of-fileon communicationchannel解决办法:
在主库执行SQL>altersystemsetlog_archive_dest_state_2=enable;这个命令式手动触发主库区尝试连接备库。
其实这种情况下,只要保证主备库之间的网络和配置是正确的。
dataguard会自动恢复这个错误。
这个周期默认是300秒,也可以在log_archive_dest_2的参数中添加reopen参数指定这个主备库之间失败后继续尝试的周期。
b.ORA-01031:
insufficientprivileges错误SQL>selectdest_name,status,errorfromv$archive_dest;DEST_NAME STATUS ERROR---------------------------------------------------------------------LOG_ARCHIVE_DEST_1 VALIDLOG_ARCHIVE_DEST_2 ERROR ORA-01031:
insufficientPrivileges解决办法:
统一主备库的数据库密码文件,或者重建密码文件,sys密码设置成一样。
然后在主库执行SQL>altersystemsetlog_archive_dest_state_2=enable;
c.ORA-16191:
PrimarylogshippingclientnotloggedonstandbySQL>selectdest_name,status,errorfromv$archive_dest;DEST_NAME STATUS ERROR-----------------------------------------LOG_ARCHIVE_DEST_1 VALIDLOG_ARCHIVE_DEST_2 ERROR ORA-16191:
Primarylog shippingclientnotloggedonstandby解决办法:
统一主备库的数据库密码文件,或者重建密码文件,sys密码设置成一样。
然后在主库执行SQL>altersystemsetlog_archive_dest_state_2=enable;
d.发现备库一直无法应用日志,MRP0进程显示WAIT_FOR_GAP的问题发现从主库传来的日志无法应用在备库检查,SQL>selectsequence#,appliedfromv$archived_log; SEQUENCE#APP———-— 930NO 931NO 932NO 933NO 934NO 935
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- oracle11gr2dataguard 日常 维护 故障 处理