完整版OracleDataGuard文档.docx
《完整版OracleDataGuard文档.docx》由会员分享,可在线阅读,更多相关《完整版OracleDataGuard文档.docx(20页珍藏版)》请在冰豆网上搜索。
完整版OracleDataGuard文档
完整版OracleDataGuard文档
目录
1、主库准备工作2
1.1、检查数据库是否支持DataGuard(企业版才支持),是否归档模式,Enableforcelogging3
1.2、如果主库没有密码文件则建立密码文件,从而可以OS验证的方式登陆3
1.3、配置standbyredolog(最佳性能模式可以忽略,如果将来变成备库且要转为其它两种模式则要建立)3
1.4、设置主库初始化参数4
1.5、备份主库数据文件5
1.6、在主库上建立备库控制文件(控制文件通常需要有多份,手工将文件复制几份)5
1.7、为备库准备init参数5
1.8、拷贝上面生成的文件backup_%T.bak、stdby_control01/02/03.ctl、initPHYSTDBY.ora到备库所在主机6
2、建立备库7
2.1、设置环境变量并建立备库一些必需目录7
2.2、在备库主机上生成密码文件,且sys密码和主库得一致8
2.4、在备库上建立spfile8
2.5、启动物理备库8
2.7、配置standbyredolog(最佳性能模式可以忽略,如果要转为其它两种模式则要建立)9
2.8、在备库上,启动redoapply9
3、主备库各参数文件内容9
3.1、主备库listener.ora一样,如果有不一样也是host不一样9
3.2、主备库tnsnames.ora一样,如果有不一样也是host和port不一样10
3.3、init$ORACLE_SID.ora11
4、主库归档测试14
5、修改主库DataGuard保护模式16
5.1、LGWR传送日志的配置方法:
16
5.2、修改主库DataGuard保护模式16
5.3、主库修改初始化参数(主库db_wending操作)16
5.4、主库通过命令行修改数据保护模式,重启主数据库(主库db_wending操作)16
5.5、重启主库(主库操作)17
5.6、查看主库保护模式是否变更成功(主库操作)17
5.7、修改备库的log_archive_dest_2初始化参数方便数据库角色切换(备库操作)18
5.8、查看备库数据保护模式(备库操作)18
5.9、验证一下“最高可用性”切换成果18
6、DataGuard关启状态20
7、主备数据库切换21
7.1、正常切换:
21
7.2、非正常切换:
(即主服务器当机的情况)启动failover21
8、常用维护SQL22
1、主库准备工作
HostIPDB_NAMEDB_UNIQUE_NAMENetServiceName(网络服务名)
主库192.168.137.128orclorcldb_wending
备库192.168.137.129orclPHYSTDBYdb_phystdby
保护模式:
默认最大性能模式
注意DataGuard启动顺序:
启动顺序:
先standby,后primary;
关闭顺序:
先primary,后standby;
1.1、检查数据库是否支持DataGuard(企业版才支持),是否归档模式,Enableforcelogging
$sqlplus'/assysdba'
SQL>select*fromv$optionwhereparameter='ManagedStandby';
确认主库处于归档模式
SQL>archiveloglist(先检查是否归档模式,不是则修改)
startupmount
alterdatabasearchivelog;
alterdatabaseopen;
将primary数据库置为FORCELOGGING模式
SQL>alterdatabaseforcelogging;(强制产生日志)
1.2、如果主库没有密码文件则建立密码文件,从而可以OS验证的方式登陆
$orapwdfile=$ORACLE_HOME/dbs/orapw$ORACLE_SIDpassword=iamwangncentries=5
1.3、配置standbyredolog(最佳性能模式可以忽略,如果将来变成备库且要转为其它两种模式则要建立)
SQL>alterdatabaseaddstandbylogfile
group4('/orahome/oradata/WENDING/stdby_redo04.log')size50m,
group5('/orahome/oradata/WENDING/stdby_redo05.log')size50m,
group6('/orahome/oradata/WENDING/stdby_redo06.log')size50m,
group7('/orahome/oradata/WENDING/stdby_redo07.log')size50m;
standbyredolog的组数参考公式:
(onlineredolog组数+1)*数据库线程数;单机线程数为1,RAC一般为2。
standbyredolog的组成员数和大小也尽量和onlineredolog一样。
1.4、设置主库初始化参数
$sqlplus'/assysdba'
SQL>createpfile='/home/oracle/pfile.ora'fromspfile;(备份参数文件)
SQL>altersystemsetLOG_ARCHIVE_CONFIG='DG_CONFIG=(WENDING,PHYSTDBY)'scope=spfile;(启动db接受或发送redodata,包括所有库的db_unique_name)
SQL>altersystemsetLOG_ARCHIVE_DEST_1='LOCATION=/orahome/arch1/WENDINGVALID_FOR=(ALL_LOGFILES,ALL_ROLES)DB_UNIQUE_NAME=WENDING'scope=spfile;(主库归档目的地)
SQL>altersystemsetLOG_ARCHIVE_DEST_2='SERVICE=db_phystdbyLGWRASYNCVALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)DB_UNIQUE_NAME=PHYSTDBY'scope=spfile;(当该库充当主库角色时,设置物理备库redodata的传输目的地)
SQL>altersystemsetLOG_ARCHIVE_MAX_PROCESSES=5scope=spfile;(最大ARCn进程数)
SQL>altersystemsetLOG_ARCHIVE_DEST_STATE_1=ENABLEscope=spfile;(允许redo传输服务传输数据到目的地,默认是enable)
SQL>altersystemsetLOG_ARCHIVE_DEST_STATE_2=ENABLEscope=spfile;(同上)
SQL>altersystemsetREMOTE_LOGIN_PASSWORDFILE=EXCLUSIVEscope=spfile;(exclusiveorshared,所有库sys密码要一致,默认是exclusive)
--以下是主库切换为备库,充当备库角色时的一些参数设置,如果不打算做数据库切换就不用设置了
SQL>altersystemsetFAL_SERVER=db_phystdbyscope=spfile;(配置网络服务名,假如转换为备库角色时,从这里获取丢失的归档文件)
SQL>altersystemsetFAL_CLIENT=db_wendingscope=spfile;(配置网络服务名,fal_server拷贝丢失的归档文件到这里)
SQL>altersystemsetDB_FILE_NAME_CONVERT='PHYSTDBY','WENDING'scope=spfile;(前为切换后的主库路径,后为切换后的备库路径,如果主备库目录结构完全一样,则无需设定)
SQL>altersystemsetLOG_FILE_NAME_CONVERT='PHYSTDBY','WENDING'scope=spfile;(同上,这两个名字转换参数是主备库的路径映射关系,可能会是路径全名,看情况而定)
SQL>altersystemsetSTANDBY_FILE_MANAGEMENT=autoscope=spfile;(auto后当主库的datafiles增删时备库也同样自动操作,且会把日志传送到备库standby_archive_dest参数指定的目录下,确保该目录存在,如果你的存储采用文件系统没有问题,但是如果采用了裸设备,你就必须将该参数设置为manual)
SQL>altersystemsetSTANDBY_ARCHIVE_DEST='LOCATION=/orahome/arch1/WENDING'scope=spfile;(一般和LOG_ARCHIVE_DEST_1的位置一样,如果备库采用ARCH传输方式,那么主库会把归档日志传到该目录下)
有了以上参数设置,则无论该库充当主库角色还是备库角色都无需再修改了。
然后重启数据库:
SQL>shutdownimmediate
SQL>startup;
1.5、备份主库数据文件
关闭应用服务器,停止监听,开始rman备份:
$lsnrctlstop
$rmantarget/
RMAN>backupfulldatabaseformat'/backup/backup_%T_%s_%p.bak';
##RMAN>sql"altersystemarchivelogcurrent";
##RMAN>backuparchivelogallformat='/backup/arch_%T_%s_%p.bak';
1.6、在主库上建立备库控制文件(控制文件通常需要有多份,手工将文件复制几份)
$sqlplus'/assysdba'
SQL>alterdatabasecreatestandbycontrolfileas'/backup/stdby_control01.ctl';
$cd/backup/
$cpsdtby_control01.ctlstdby_control02.ctl
$cpsdtby_control01.ctlstdby_control03.ctl
1.7、为备库准备init参数
$sqlplus'/assysdba'
SQL>createpfile='/backup/initPHYSTDBY.ora'fromspfile;
$cd/backup/
$viinitPHYSTDBY.ora
注意主备库不同角色的属性配置,注意文件路径等,注意db_name要和主库一致,主要是以下参数:
audit_file_dest='/u01/app/oracle/admin/PHYSTDBY/adump'
background_dump_dest='/u01/app/oracle/admin/PHYSTDBY/bdump'
core_dump_dest='/u01/app/oracle/admin/PHYSTDBY/bdump'
user_dump_dest='/u01/app/oracle/admin/PHYSTDBY/udump'
--
control_files='/orahome/oradata/stdby_control01.ctl','/orahome/oradata/stdby_control02.ctl','/orahome/oradata/stdby_control03.ctl'
db_unique_name='PHYSTDBY'
log_archive_config='DG_CONFIG=(PHYSTDBY,WENDING)'
log_archive_dest_1='LOCATION=/orahome/arch1/PHYSTDBYVALID_FOR=(ALL_LOGFILES,ALL_ROLES)DB_UNIQUE_NAME=PHYSTDBY'
log_archive_dest_2='SERVICE=db_wendingLGWRASYNCVALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)DB_UNIQUE_NAME=WENDING'
--
fal_client='DB_PHYSTDBY'
fal_server='DB_WENDING'
db_file_name_convert='WENDING','PHYSTDBY'
log_file_name_convert='WENDING','PHYSTDBY'
standby_archive_dest='LOCATION=/orahome/arch1/PHYSTDBY'
另外,如果备库将来要打开成只读模式,需要确认audit_trail参数不是含db,应该设成os或none。
1.8、拷贝上面生成的文件backup_%T.bak、stdby_control01/02/03.ctl、initPHYSTDBY.ora到备库所在主机
注意rman备份的文件在主备库主机上目录要一致。
$scpbackup*.bak192.168.137.129:
/backup/
$scpinitPHYSTDBY.ora192.168.137.129:
$ORACLE_HOME/dbs/
$scpstdby_control*.ctl192.168.137.129:
/orahome/oradata/
1.9、建立主库监听和主备库的网络服务名(必须是dedicated的),并启动监听
$netca(是图形界面,或者手工从别的库把listener.ora和tnsnames.ora拷过来修改也行)
$lsnrctlstart
$tnspingdb_wending
$tnspingdb_phystdby(此时tnsping还不通物理备库)
tnsping对方的时候,有可能linux防火墙限制了,会提示TNS-12560:
TNS:
协议适配器错误。
临时禁用防火墙方法:
#serviceiptablesstop
永久禁用防火墙方法:
#chkconfig--listiptables
#chkconfig--level345iptablesoff
2、建立备库
2.1、设置环境变量并建立备库一些必需目录
$exportORACLE_BASE=/u01/app/oracle
$exportORACLE_HOME=/u01/app/oracle/product/10.2.0/db_1
$exportORACLE_SID=PHYSTDBY
$mkdir-p$ORACLE_BASE/admin/$ORACLE_SID/adump
$mkdir-p$ORACLE_BASE/admin/$ORACLE_SID/bdump
$mkdir-p$ORACLE_BASE/admin/$ORACLE_SID/cdump
$mkdir-p$ORACLE_BASE/admin/$ORACLE_SID/udump
--以下目录要看哪些地方可能会存放数据库文件,注意不能少建
$mkdir-p/orahome/oradata/$ORACLE_SID
$mkdir-p/u01/app/oracle/oradata/$ORACLE_SID
$mkdir-p/orahome/arch1/$ORACLE_SID
2.2、在备库主机上生成密码文件,且sys密码和主库得一致
$orapwdfile=$ORACLE_HOME/dbs/orapw$ORACLE_SIDpassword=iamwangncentries=5
2.3、在备库上建立监听,和主备库网络服务名(必须是dedicated的),并启动监听
$netca(是图形界面,或者手工从别的库把listener.ora和tnsnames.ora拷过来修改也行)
$lsnrctlstart
$tnspingdb_wending
$tnspingdb_phystdby
2.4、在备库上建立spfile
$sqlplus'/assysdba'
SQL>createspfilefrompfile;
如果pfile没有放到$ORACLE_HOME/dbs/下,而是放在别的位置:
SQL>createspfilefrompfile='/backup/initPHYSTDBY.ora';
2.5、启动物理备库
SQL>startupnomount
SQL>alterdatabasemountstandbydatabase;
2.6、备库做rman恢复
$rmantarget/(要求主备库rman备份文件的存放路径和文件名一致)
RMAN>restoredatabase;
##RMAN>restorearchivelogall;
介质恢复后,rman自动将standby数据库打开到mount状态。
2.7、配置standbyredolog(最佳性能模式可以忽略,如果要转为其它两种模式则要建立)
SQL>alterdatabaseaddstandbylogfile
group4('/orahome/oradata/PHYSTDBY/stdby_redo04.log')size50m,
group5('/orahome/oradata/PHYSTDBY/stdby_redo05.log')size50m,
group6('/orahome/oradata/PHYSTDBY/stdby_redo06.log')size50m,
group7('/orahome/oradata/PHYSTDBY/stdby_redo07.log')size50m;
standbyredolog的组数参考公式:
(onlineredolog组数+1)*数据库线程数;单机线程数为1,RAC一般为2。
standbyredolog的组成员数和大小也尽量和onlineredolog一样。
2.8、在备库上,启动redoapply
SQL>alterdatabaserecovermanagedstandbydatabasedisconnectfromsession;
到此物理备库创建完毕!
3、主备库各参数文件内容
3.1、主备库listener.ora一样,如果有不一样也是host不一样
----------------------------------------
SID_LIST_LISTENER=
(SID_LIST=
(SID_DESC=
(SID_NAME=PLSExtProc)
(ORACLE_HOME=/u01/app/oracle/product/10.2.0/db_1)
(PROGRAM=extproc)
)
)
LISTENER=
(DESCRIPTION_LIST=
(DESCRIPTION=
(ADDRESS=(PROTOCOL=TCP)(HOST=localhost.localdomain)(PORT=1521))
(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC0))
)
)
----------------------------------------
3.2、主备库tnsnames.ora一样,如果有不一样也是host和port不一样
----------------------------------------
DB_WENDING=
(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.137.128)(PORT=1521))
)
(CONNECT_DATA=
(SERVICE_NAME=wending.lk)
)
)
DB_PHYSTDBY=
(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.137.129)(PORT=1521))
)
(CONNECT_DATA=
(SERVICE_NAME=phystdby.lk)
)
)
EXTPROC_CONNECTION_DATA=
(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC0))
)
(CONNECT_DATA=
(SID=PLSExtProc)
(PRESENTATION=RO)
)
)
----------------------------------------
3.3、init$ORACLE_SID.ora
主库initWENDING.ora:
----------------------------------------
WENDING.__db_cache_size=226492416
WENDING.__java_pool_size=4194304
WENDING.__large_pool_size=4194304
WENDING.__shared_pool_size=96468992
WENDING.__streams_pool_size=0
*.audit_file_dest='/u01/app/oracle/admin/WENDING/adump'
*.audit_sys_operations=TRUE
*.audit_trail='db','extended'
*.background_dump_dest='/u01/app/oracle/admin/WENDING/bdump'
*.control_files='/orahome/oradata/control1.ctl','/orahome/oradata/control2.ctl','/orahome/oradata/control3.ctl'
*.core_dump_dest='/u01/app/oracle/admin/WENDING/cdump'
*.db_block_size=8192
*.db_domain='LK'