文档oracle11g物理DG日常巡检手册演示教学.docx
《文档oracle11g物理DG日常巡检手册演示教学.docx》由会员分享,可在线阅读,更多相关《文档oracle11g物理DG日常巡检手册演示教学.docx(18页珍藏版)》请在冰豆网上搜索。
![文档oracle11g物理DG日常巡检手册演示教学.docx](https://file1.bdocx.com/fileroot1/2023-2/24/2e4e46bb-6ab5-4336-842f-35fc997f4aed/2e4e46bb-6ab5-4336-842f-35fc997f4aed1.gif)
文档oracle11g物理DG日常巡检手册演示教学
文件编号:
ORACLE11gDataguard物理Standby
日常巡检操作手册
编写:
_____________
校对:
_____________
日期:
_____________
1、DG环境的日常巡检
1.1、主库环境检查
1.1.1、主库实例启动状态检查
操作命令:
SQL>selectinstance_name,statusfromv$instance;
操作结果:
INSTANCE_NAMESTATUS
---------------------------------------------------
cs02OPEN
操作说明:
如果主库在对外提供服务,那其实例状态应一定是OPEN的。
1.1.2、主库启动模式检查
操作命令:
SQL>selectname,open_modefromv$database;
操作结果:
NAMEOPEN_MODE
--------------------------------------------
CS02READWRITE
操作说明:
如果主库在对外提供服务,那其数据库状态应一定是READWRITE的。
1.1.3、主库DG环境的保护模式检查
操作位置:
主库
操作命令:
SQL>selectdatabase_role,protection_mode,protection_levelfromv$database;
操作结果:
DATABASE_ROLEPROTECTION_MODEPROTECTION_LEVEL
----------------------------------------------------------------------------------------------------
PRIMARYMAXIMUMPERFORMANCEMAXIMUMPERFORMANCE
1.1.4、主库用于控制日志同步的参数检查
操作命令:
SQL>showparameterlog_archive_dest_2
操作结果:
NAMETYPEVALUE
--------------------------------------------------------------------------------------------------------------------------------------------------
log_archive_dest_2stringservice=cs01valid_for=(online_logfiles,primary_role)db_unique_name=cs01
操作说明:
通过该参数设置的网络服务名,主库能够找到该DG环境当中的备库,通过将主库的归档日志同步到备库;
查询结果并没有看到lgwr/arch、sync/async、affirm/noaffirm的参数设置,说明当前主库没有对这三个参数进行设置,当前使用的是默认设置,即:
arch、async、noaffirm的设置。
1.1.5、主库查看是否开启强制日志功能
操作命令:
SQL>selectname,force_loggingfromv$database;
操作结果:
NAMEFOR
-----------------
CS02YES
操作说明:
DG环境下主库要求必须开启强制日志功能,如果发现状态是NO,需要手动执行下面的命令开启该功能。
SQL>alterdatabaseforcelogging;
1.1.6、主库上查看设置的归档日志路径是否可用
操作命令:
SQL>coldest_namefora30
SQL>colerrorfora30
SQL>selectdest_name,status,errorfromv$archive_dest;
操作结果:
DEST_NAMESTATUSERROR
-------------------------------------------------------------------------------
LOG_ARCHIVE_DEST_1VALID
LOG_ARCHIVE_DEST_2VALID
LOG_ARCHIVE_DEST_3INACTIVE
操作说明:
该视图用户查看本地和远程的归档日志路径是否可用,如果远程的归档日志路径不可用,在ERROR列会有相应报错。
1.1.7、主库上查询归档日志的应用情况
操作命令:
SQL>setpagesize50;
SQL>colnamefora50
SQL>selectname,SEQUENCE#,APPLIEDfromv$archived_logorderbysequence#;
操作结果:
NAMESEQUENCE#APPLIED
----------------------------------------------------------------------------------------
/u01/app/oracle/arch/1_5_886855721.dbf5NO
cs015YES
/u01/app/oracle/arch/1_6_886855721.dbf6NO
cs016YES
/u01/app/oracle/arch/1_7_886855721.dbf7NO
cs017YES
操作说明:
该视图记录了归档日志的应用情况,由查询结果可以看出,主库上的该视图会同时记录主库和同步到备库的归档日志的应用情况。
视图中显示归档到本地路径的归档日志的名字使用的是绝对路径,并且应用状态为NO,而同步到远端备库上的归档日志名字统一都为cs01,并且应用状态显示为YES。
这说明同步到备库上的归档日志都已经被应用了。
1.1.8、主库上查看DG环境进程的状态
操作命令:
SQL>selectprocess,statusfromv$managed_standby;
操作结果:
PROCESSSTATUS
-------------------------
ARCHCLOSING
ARCHCLOSING
ARCHCLOSING
ARCHCLOSING
LNSWRITING
操作说明:
ARCH进程:
用于主库上复制redolog,从而生成归档日志,当前状态为CLOSING表示该进程目前正在复制
redolog,我们在参数文件中设置了该进程的数量上限是4个。
LNS进程:
用于在主库上将主库的归档日志同步到备库上,将归档日志投递给备库上的RFS进程。
1.1.9、主库上查看DG的状态信息
操作命令:
SQL>colmessagefora100
SQL>selectmessage_num,messagefromv$dataguard_status;
1.1.10、主库SWITCHOVER角色和状态的检查
操作命令:
SQL>selectname,database_role,switchover_statusfromv$database;
操作结果:
NAMEDATABASE_ROLESWITCHOVER_STATUS
---------------------------------------------------------------------------
CS02PRIMARYTOSTANDBY
操作说明:
如果主库的切换状态显示为SESSIONACTIVED状态也是正常的。
1.2、备库环境检查
1.2.1、备库实例的启动状态检查
操作命令:
SQL>selectinstance_name,statusfromv$instance;
操作结果:
INSTANCE_NAMESTATUS
---------------------------------------------------
cs01MOUNTED
操作说明:
一般备库会被启动到MOUNT状态,不过根据具体需要,在确认备库没的应用归档日志进程没有启动的前提下也可以将其启动到OPEN状态,执行命令:
alterdatabaseopen;
1.2.2、备库启动模式检查
操作命令:
SQL>selectname,open_modefromv$database;
操作结果:
NAMEOPEN_MODE
--------------------------------------------
CS01READONLY
操作说明:
发现是readonly模式,说明备库当前并没有开启归档日志应用进程,这个时候我们可以手动开启该进程,执行下面的命令:
SQL>alterdatabaserecovermanagedstandbydatabasedisconnectfromsession;
如果发现当前数据库的打开模式是readonlywithapply我们也可以手工关闭归档应用程序,执行下面的命令:
SQL>alterdatabaserecovermanagedstandbydatabasecancel;
重新查看备库的启动模式,执行下面的命令:
SQL>selectname,open_modefromv$database;
操作结果:
NAMEOPEN_MODE
----------------------------------------------------
CS01READONLYWITHAPPLY
1.2.3、备库DG环境的保护模式检查
执行命令:
SQL>selectdatabase_role,protection_mode,protection_levelfromv$database;
SQL>setlinesize160
查询结果:
DATABASE_ROLEPROTECTION_MODEPROTECTION_LEVEL
------------------------------------------------------------------------------------------------------
PHYSICALSTANDBYMAXIMUMPERFORMANCEMAXIMUMPERFORMANCE
1.2.4、备库用于控制日志同步的参数检查
操作命令:
SQL>showparameterlog_archive_dest_2
操作结果:
NAMETYPEVALUE
--------------------------------------------------------------------------------------------------------------------------------------------------
log_archive_dest_2stringservice=cs02valid_for=(online_logfiles,primary_role)db_unique_name=cs02
1.2.5、备库上查看同步过来的归档日志的应用情况
操作命令:
SQL>setpagesize50
SQL>colnamefora50
SQL>selectname,SEQUENCE#,APPLIEDfromv$archived_logorderbysequence#;
操作结果:
NAMESEQUENCE#APPLIED
--------------------------------------------------------------------------------------------------
/u01/app/oracle/arch/1_5_886855721.dbf5YES
/u01/app/oracle/arch/1_6_886855721.dbf6YES
/u01/app/oracle/arch/1_7_886855721.dbf7YES
操作说明:
如果发现备库归档日志的编号不连续,则需要到主库去对照主库的归档日志编号,找到主库上已经归档但却没有同步到备库上的那些归档日志手动拷贝过来,并将其注册到备库内,注册归档日志的命令如下所示:
SQL>alterdatabaseregisterphysicallogfile'/opt/arch/归档文件名’
然后再重新开启备库的应用归档日志进程,执行下面的命令即可:
SQL>alterdatabaserecoverautomaticstandbydatabase;
1.2.6、备库上查看归档日志有没有裂缝(同操作2.5部分类似)
操作命令:
SQL>select*fromv$archive_gap;
操作说明:
如果DG环境日志同步正常,则不会查到任何记录,如果查出结果,则说明目前的DG环境归档日志有裂缝,需要执行2.5部分的操作去解决。
1.2.7、备库上查看DG环境特有进程的状态
操作命令:
SQL>selectprocess,statusfromv$managed_standby;
操作结果:
PROCESSSTATUS
------------------------------------------
ARCHCLOSING
ARCHCLOSING
ARCHCONNECTED
ARCHCLOSING
RFSIDLE
RFSIDLE
RFSIDLE
RFSIDLE
MRP0WAIT_FOR_LOG
操作说明:
FRS进程:
用于备库接收从主库LNS进程或ARCH进程投递过来的归档日志。
ARCH:
用于复制从主库上同步过来的归档日志。
MRP0:
用于应用归档日志。
1.2.8、备库上查看DG环境的状态信息
操作命令:
SQL>colmessagefora100
SQL>selectmessage_num,messagefromv$dataguard_status;
1.2.9、备库SWITCHOVER角色和状态的检查
操作命令:
SQL>selectname,database_role,switchover_statusfromv$database;
操作结果:
NAMEDATABASE_ROLESWITCHOVER_STATUS
---------------------------------------------------------------------------
CS02PHYSICALSTANDBYNOTALLOWED
操作说明:
如果主库的切换状态显示为TOPRIMARY状态也是正常的。
重要说明:
对于DataGuard环境的日常运维工作,其核心就在于确保主库上的日志能通正常同步到备库上,并能够被备库及时的应用。
这些信息在主备数据库的告警日志中都会有所体现,所有要经常关注主库和备库的告警日志的内容。
做到发现报错,及时处理,将会对数据库运行造成不良影响的因素消灭在萌芽状态...
2、DG环境的启动与关闭
2.1、DG环境的关闭
2.1.1、检查DG环境主备库的日志使用情况
操作位置:
主库&备库
操作命令:
SQL>archiveloglist;
操作结果:
主库与备库当前使用的日志编号相同
2.1.2、停主库的监听程序
操作命令:
[oracle@cs02~]$lsnrctlstop
2.1.3、停备库的监听程序
操作命令:
[oracle@cs01~]$lsnrctlstop
2.1.4、关闭主数据库
操作命令:
SQL>shutdownimmediate;
2.1.5、查看备库的开启模式
操作命令:
SQL>selectopen_modefromv$database;
如果发现当前数据库是readonlywithapply模式,则需要执行下面命令关闭归档日志应用程序,如果发现是readonly模式则直接关闭数据库即可。
正常情况下备库应该时刻处于应用归档日志的模式。
2.1.6、关闭备数据库的归档应用程序
操作命令:
SQL>alterdatabaserecovermanagedstandbydatabasecancel;
2.1.7、关闭备数据库
操作命令:
SQL>shutdownimmediate;
这样,整个DataGuard环境就算是完整的关闭掉了...
2.2、DG环境的启动
2.2.1、启动DG环境的主库
操作命令:
[oracle@cs02~]$sqlplus/assysdba
SQL>startup;
SQL>selectstatusfromv$instance;
2.2.2、启动主库的监听程序
操作命令:
[oracle@cs02~]$lsnrctlstatus
[oracle@cs02~]$lsnrctlstart
2.2.3、启动DG环境的备库到mount或open状态
操作命令:
[oracle@cs01~]$sqlplus/assysdba
SQL>startup;
或SQL>startupmount;
2.2.4、启动备库的监听程序
操作命令:
[oracle@cs01~]$lsnrctlstatus
[oracle@cs01~]$lsnrctlstart
2.2.5、主库切换归档日志
操作命令:
SQL>altersystemarchivelogcurrent;
2.2.6、查看备库是否有新应用过来的日志
操作命令:
SQL>selectsequence#,appliedfromv$archived_log;
2.2.7、备库上开启归档日志应用进程
操作命令:
SQL>alterdatabaserecovermanagedstandbydatabasedisconnectfromsession;
2.2.8、主库与备库验证当前redolog
操作位置:
主库&备库
操作命令:
SQL>archiveloglist;
如果此时发现主库与备库当前使用的redo日志的编号一致则说明重启的DG环境一切正常。
这样,这个DataGuard环境就算是去正常的启动了...
3、DG环境的主备切换-SWITCHOVER
3.1、SWITCHOVER切换的特点
一般SWITCHOVER切换都是计划中的切换,特点是在切换后,不会丢失任何的数据,而且这个过程是可逆的,整个DATAGUARD环境不会被破坏,原来DATAGUARD环境中的所有物理和逻辑STANDBY都可以继续工作。
3.2、SWITCHOVER切换的注意事项
1)确认主库和从库间网络连接通畅;
2)确认没有活动的会话连接在数据库中;
3)PRIMARY数据库处于打开的状态,STANDBY数据库处于MOUNT状态;
4)确保STANDBY数据库处于ARCHIVELOG模式;
5)如果设置了REDO应用的延迟,那么将这个设置去掉;
6)确保配置了主库和从库的初始化参数,使得切换完成后,DATAGUARD机制可以顺利的运行。
3.3、SWITCHOVER的切换操作流程
3.3.1、主库与备库运行状态确认
在执行主备SWITCHOVER之前,需要首先确认主库与备库的实例以及数据库的启动状态,确保主库与备库满足下面的要求:
数据库
实例启动状态
数据库启动模式
主库-CS02
open
readwrite
备库-CS01
mount/open
mountwithapply/readonlywithapply
可以通过如下命令进行查看:
SQL>selectstatusfromv$instance;
SQL>selectopen_modefromv$database;
3.3.2、查看switchover之前主库的角色和状态
SQL>selectname,database_role,switchover_statusfromv$database;
操作结果:
NAMEDATABASE_ROLESWITCHOVER_STATUS
----------------------------------------------------------------
CS02PRIMARYSESSIONSACTIVE
操作说明:
1)如果是第一次做主备的SWITCHOVER操作,那么主库的SWITCHOVER_STATUS状态会是SESSIONSACTIVE状态。
表示当前主库还有活动的会话连接,属于正常的主库准备切换之前的状态。
2)如果之前已经做过主备的SWITCHOVER操作,那么主库的SWITCHOVER_STATUS状态会是TO_STANDBY状态,表明当前主库已经准备好随时切换成备库了。
3.3.3、查看switchover之前备库的角色和状态
操作命令:
SQL>selectname,database_role,switchover_statusfromv$database;
NAMEDATABASE_ROLESWITCHOVER_STATUS
---------------------------------------------------------------------
CS02PHYSICALSTANDBYTOPRIMARY
操作说明:
1)如果是第一次做主库的SWITCHOVER操作,那么备库的SWITCHOVER_STATUS状态会是TO_PRIMARY状态。
表明备库已经随时可以切换成主库了。
2)如果之前已经做过主备的SWITCHOVER操作,在主库没有发出要做主备切换的操作之前(即:
执行主库切成备库的那条命令),备库的SWITCHOVER_STATUS状态会是NOTALLOWED,属于正常状态。
3.3.4、将主库切换成备库
操作命令:
SQL>alterdatabasecommittoswitchovert