dataguard实施文档.docx
《dataguard实施文档.docx》由会员分享,可在线阅读,更多相关《dataguard实施文档.docx(9页珍藏版)》请在冰豆网上搜索。
![dataguard实施文档.docx](https://file1.bdocx.com/fileroot1/2022-11/30/e28b55b4-d7e5-41de-b862-1fce53d27fc2/e28b55b4-d7e5-41de-b862-1fce53d27fc21.gif)
dataguard实施文档
创建dataguard数据库
——RAC-单机
该文档将分步介绍如何创建dataguard数据库,主要包括以下几项内容:
●为从数据库的创建准备主数据库
●创建物理备份数据库
●验证物理备份数据库
安装配置约定:
●操作系统选用redhatas3.0
●数据库选用oracle9i9206
●主数据库为2节点RAC,主机名为node1和node2,集群sid为wwwdb
●从数据库只安装软件,主机名、dbname和sid都为standby
●所有操作已经注明在主、从服务器上进行
1.为从数据库的创建准备主数据库
在创建从数据库之前,必须确认主数据库进行了正确的配置。
1)Enableforcedlogging
在主数据库创建完成后,需要把数据库改到forcelogging模式下,使用下面的命令:
sql>alterdatabaseforcelogging;
在生产过程中,该命令可能要等待一定的时间才能完成,因为执行之前要等待没有写入日志的操作完成,一个节点上执行就可以了。
2)EnableArchiving(我们实施的一般都是归档模式,所以不用修改)
先验证主数据库是否在归档模式下,执行下面的命令:
SQL>archiveloglist
DatabaselogmodeNoArchiveMode
AutomaticarchivalDisabled
Archivedestination/opt/oracle/product/920/dbs/arch
Oldestonlinelogsequence0
Currentlogsequence1
显示非归档模式和自动归档关闭,则需要执行下面的命令修改:
sql>altersystemsetcluster_database=falsescope=spfile
shutdownbothinstances
Startupmountoneinstance
sql>alterdatabasearchivelog;
sql>altersystemsetlog_archve_start=truescope=spfile;
Shutdownthatinstance
restartbothinstances
sql>altersystemsetcluster_database=truescope=spfile
再次验证主数据库是否在归档模式下,执行下面的命令:
SQL>archiveloglist;
DatabaselogmodeArchiveMode
AutomaticarchivalEnabled
Archivedestination/opt/oracle/product/920/dbs/arch
Oldestonlinelogsequence0
Nextlogsequencetoarchive1
Currentlogsequence1
显示归档模式和自动归档打开,可以进入下一步。
3)创建本地归档路径(如果原系统已经设定好,则不需要修改)
主服务器上的本地归档路径用来放置归档日志,并传送到从服务器。
首先要创建相应的目录,然后使用下面的命令创建,节点1和2都要创建:
节点1:
SQL>altersystemsetlog_archive_dest_1='LOCATION=/home/oracle/admin/wwwdb/archive/node1'scope=both;
Systemaltered.
节点2:
SQL>altersystemsetlog_archive_dest_1='LOCATION=/home/oracle/admin/wwwdb/archive/node2'scope=both;
Systemaltered.
2.创建物理备份数据库
这一段介绍如何创建物理的备份数据库,这项工作是最繁琐的,也是最关键的。
1)使用rman备份脚本备份数据库
执行backup.sh(参考rac环境搭建文档)
……
run
{
allocatechannelch1typediskformat'/home/oracle/backup/standby_controlfile_%t_%s_%p';
allocatechannelch2typediskformat'/home/oracle/backup/archivelog_%t_%s_%p';
BACKUPCURRENTCONTROLFILEFORSTANDBYtag='standbydbcontrolfile'channelch1;
SQL'ALTERSYSTEMARCHIVELOGCURRENT';
BACKUPARCHIVELOGFROMTIME'SYSDATE-1'tag='archivedlogbackup'channelch2;
}
2)为从数据库创建控制文件
用rman脚本备份controlfile,
3)为从数据库创建初始化文件pfile
在主服务器上执行下面的语句:
SQL>createpfile='/home/oracle/initstandby.ora'fromspfile;
Filecreated.
4)把相关文件拷贝到从数据库
把1,2,3步中的文件拷贝到从数据库,放在相关的目录下。
5)在从数据库上更改初始化参数
初始化文件pfile的一些参数需要修改才能被从数据库使用,同时需要创建相关的目录,与集群相关的参数删除或用#屏蔽,主要修改了以下内容:
*.background_dump_dest='/home/oracle/admin/standby/bdump'
*.core_dump_dest='/home/oracle/admin/standby/cdump'
*.user_dump_dest='/home/oracle/admin/standby/udump'
*.standby_archive_dest='/home/oracle/admin/standby/archive/'
*.standby_file_management=AUTO
*.remote_archive_enable=TRUE
*.FAL_SERVER=wwwdb1,wwwdb2
*.FAL_CLIENT=standby
6)配置主、从数据库的listener
在从库启动netca创建listener(主库已创建完成),然后修改listener.ora,主库配置文件不需要修改:
从库配置文件如下(添加黑体字内容):
#LISTENER.ORANetworkConfigurationFile:
/opt/oracle/product/920/network/admin/listener.ora
#GeneratedbyOracleconfigurationtools.
LISTENER=
(DESCRIPTION_LIST=
(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=TCP)(HOST=10.151.11.235)(PORT=1521))
)
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC))
)
)
)
SID_LIST_LISTENER=
(SID_LIST=
(SID_DESC=
(SID_NAME=PLSExtProc)
(ORACLE_HOME=/home/oracle)
(PROGRAM=extproc)
)
(SID_DESC=
(GLOBAL_DBNAME=standby)
(ORACLE_HOME=/home/oracle/)
(SID_NAME=standby)
)
)
然后启动主、从库的listener,以oracle身份执行:
[oracle@primaryadmin]$lsnrctlstart
7)创建netservicename,并修改主、从数据库的tnsname.ora文件
在从库运行netca创建tns(主库以自动创建完成),然后修改tnsname.ora文件,主库配置文件添加如下内容:
STANDBY=
(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=TCP)(HOST=standby)(PORT=1521))
)
(CONNECT_DATA=
(SERVICE_NAME=standby)
)
)
从库配置文件添加如下内容:
wwwdb=
(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=TCP)(HOST=node1)(PORT=1521))
(ADDRESS=(PROTOCOL=TCP)(HOST=node2)(PORT=1521))
(failover=on)
(LOAD_BALANCE=yes)
)
(CONNECT_DATA=
(SERVER=DEDICATED)
(SERVICE_NAME=wwwdb)
(failover_mode=(type=select)(method=basic))
)
)
wwwdb2=
(DESCRIPTION=
(ADDRESS=(PROTOCOL=TCP)(HOST=node2)(PORT=1521))
(CONNECT_DATA=
(SERVICE_NAME=wwwdb)
(INSTANCE_NAME=wwwdb2)
)
)
wwwdb1=
(DESCRIPTION=
(ADDRESS=(PROTOCOL=TCP)(HOST=node1)(PORT=1521))
(CONNECT_DATA=
(SERVICE_NAME=wwwdb)
(INSTANCE_NAME=wwwdb1)
)
)
然后,以oracle用户运行tnspingstandby和tnspingwwwdb验证是否连通?
结果应该是连通的。
8)启动从数据库
先在从数据库创建口令文件orapwstandby,然后启动数据库
SQL>startupnomount;
Restoredatabase,执行restore.sh脚本
Recoverdatabase,执行Recoverautomaticstandbydatabase;
Restartdatabase,执行startupnomountpfile=/home/oracle/initstandby.ora;
执行alterdatabasemountstandbydatabase;
9)启动logapply服务
在从数据库运行下面的命令,启动相关服务:
SQL>alterdatabaserecovermanagedstandbydatabasedisconnectfromsession;
Databasealtered.
10)打开到从数据库的归档
在主库顺序执行下面的命令:
SQL>altersystemsetlog_archive_dest_2='service=standby'scope=both;
SQL>altersystemsetlog_archive_dest_state_2=enablescope=both;
添加数据库运行需要的临时表空间。
altertablespacetempaddtempfile'/dev/raw/clustdb/raw_R0_L1_c9_1000'size1000m;
至此,整个配置过程结束,系统可以正常运行。
3.验证物理备份数据库
以上操作完成后,需要进行验证,看对主数据库的操作是否可以在从数据库看到结果?
验证包括以下四步,下面分别介绍:
1)在从数据库验证已经存在的归档日志:
在从数据库执行下面的语句:
SQL>selectsequence#,first_timefromv$archived_logorderbysequence#;
SEQUENCE#FIRST_TIM
-------------------
109-MAR-04
210-MAR-04
310-MAR-04
可以看到有3个归档日志。
2)在主数据库强制归档:
在主数据库上执行下面的语句:
SQL>altersystemarchivelogcurrent;
Systemaltered.
3)在从数据库再次验证归档日志:
重复1)的内容,可以看到:
SQL>selectsequence#,first_timefromv$archived_logorderbysequence#;
SEQUENCE#FIRST_TIM
-------------------
109-MAR-04
210-MAR-04
310-MAR-04
410-MAR-04
可以看到,比1)中多了一个归档日志4,也就是2)中归档之后从主数据库传送到从数据库的归档日志。
4)验证最新的归档日志是否被应用:
归档日志传送到从数据库之后,还要被应用,从而使主从数据库数据一致,达到备份的目的。
下面的查询可以验证:
SQL>selectsequence#,appliedfromv$archived_logorderbysequence#;
SEQUENCE#APP
-------------
1YES
2YES
3YES
4YES
第二列的值为“yes”,则说明相应的归档日志已经被应用,在主数据库的操作已经在从数据库完成同步。
另:
执行下面的命令可以把从数据库转换成只读模式,进行查询:
SQL>alterdatabaserecovermanagedstandbydatabasecancel;
SQL>alterdatabaseopenreadonly;
2006-10-16