第一章:Dg理论讲述
Data Guard(简称:Dg)是oracle高可用性体系中的一种工具。Dg通过冗余数据来提供数据保护,Dg通过日志同步机制保证冗余数据和主数据之前的同步,这种同步可以是实时、延时、同步、异步多种形式。Dg常用于异地容灾和小企业的高可用性方案中。Dg可以在standby机器上执行只读查询,从而分散primary数据库的性能压力。
在Dg环境中,至少有两个数据库,一个处于open状态对外提供服务,这个数据库叫做primary database。第二个处于恢复状态,叫做standby database。运行时primary database 对外提供服务,用户在primary database上进行操作,操作被记录在联机日志和归档日志中,这些日志通过网络传递给standby database。这个日志会在standby database上重演,从而实现primary database和standby database的数据同步。
第二章:Dg架构
Dg架构可以按功能分成3个部分:
1) 日志发送(redo send)
2) 日志接收(redo receive)
3) 日志应用(redo apply)
1、 日志发送:
Primary database运行过程中,会源源不断产生redo日志,这些日志需要发送到standby database。这个发送动作可以由primary database的LGWR或ARCH进程完成,不同的归档目的地可以使用不同的方法,但是对于一个目的地,只能选用一种方法。选择哪个进程对数据库保护能力和系统可用性有很大区别
1) 使用ARCH进程:
Primary database 不断产生redo log,这些日志被LGWR进程写到联机日志;
当一组联机日志被写满之后,会发生日志切换,并且会触发本地归档;
完成本地归档后,联机日志就可以被覆盖重用;
ARCH进程通过net把归档日志发送给standby database的RFS进程;
Standby database端的RFS进程把接收的日志写入归档日志;
Standby database端的MRP进程或LSP进程在standby database上应用这些日志,进而同步数据。
2) 使用LGWR进程:
Primary database产生的日志同时写到日志文件和网络。也就是说LGWR进程把日志写到本地日志文件的同时还要发送给本地的LNSn进程,再由LNSn进程把日志通过网络发送到远程的目的地;
LGWR必须等待写入到本地日志文件操作和通过LNSn进程的网络传送成功,primary database上的事务才能提交;
Standby database的日志切换也会触发standby database上的日志切换,及standby database对standby redo_log的归档,然后触发standby database的MRP或LSP进程恢复归档日志。
2、 日志接收:
Standby database的RFS进程接收到日志后,就把日志写到standby redo log或archived log文件中,具体写入哪个文件,取决于primary的日志传送方式和standby database的位置。如果写到standby redo log文件中,则当primary database发生日志切换时,也会触发standby database上的standby redo log的日志切换,并把这个standby redo log归档。如果写到archived log,那么这个动作本身也可以看做是个归档操作。
3、 日志应用:
日志应用服务,就是在standby database上重演primary database日志,从而实现两个数据库的数据同步。
第三章:Dg配置过程
1、首先将源库设置为强制归档模式:
通过sqlplus / as sysdba进入数据库
2、源库设置成归档模式,目前建立数据库实例的时候已经设置完成。
3、源库中添加如下与dg关联参数,添加完成后重启所有数据库实例:
4、查看logfile(每个为500M)和创建standby_logfile
5、Rman备份整个源库,备份完成后将备份文件复制到源库对应目录
6、创建standby库的pfile,(该过程从源库中备份过去并进行相关的修改)
7、修改后的参数如下:
8、修改源库的tnsname.ora,同时复制到目标库对应位置。
9、dg服务器上创建所需的目录:
oracle下:
mkdir -p /u01/app/oracle/admin/easdb_dg/adump
mkdir -p /oradata/easdb_dg/controlfile/
mkdir -p /oradata/easdb_dg/standbylog/
mkdir -p /oradata/easdb_dg/onlinelog/
mkdir -p /u01/app/oracle/diag/rdbms/easdb_dg/oem/trace/cdump
root下:
mkdir /backup
chown oracle:oinstall /backup
10、统一源和目标库的密码:
11、Dg库nomount启动
12、源库端:rman建立dataguard数据库
rman target / auxiliary sys/kingdee123@easdb_dg
DUPLICATE TARGET DATABASE FOR STANDBY NOFILENAMECHECK;
13、恢复完成后,将目标库当前用的pfile文件创建为当前的spfile,然后启动数据库到mount模式
14、目标库设置为日志恢复模式
大功告成!