DataGuard
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DataGuard相关的知识,希望对你有一定的参考价值。
DataGuard
一、容灾复制方案
1、阵列的复制技术(硬件)
通过在阵列之间进行复制,异地保存数据
对存储设备和网络环境要求比较高。
2、基于逻辑卷的复制技术(操作系统层面)
通过LVM的镜像技术来实现。
3、基于 Oracle 的 redo log 的复制(在应用层)
1) DataGuard
2) GoldenGate
3) Stream
二、什么是DG
1)不同于RAC保护主机,DG保护的是数据库
2)主库(一个)和备库(可以多个),异地容灾
3)物理DG和逻辑DG
逻辑复制:将主库的redo log传递到备库后,再利用logminer 的工具,从redo log中解析出sql语句,在备库执行,保证和主库同步。(主库和备库可以是不同的环境,备库可以处于读写状态)逻辑备库可以看作是一个单独的库(数据库名和DBID和主库都不一样)。
物理复制:将主库的redo log传递到备库后,备库对redo log日志进行recovery,来和主库保持一致。(主库和备库必须是相同的环境,备库一般处于只读状态)
物理的备库和主库是一样的(比如:数据库名、DBID)
4)Oracle Data Guard
Oracle 成本最低的容灾技术(Oracle企业版自动支持,通过主库和备库来实现容灾;一般主库处于生产环境,备库处于备份状态,或者可以利用备库做数据查询、生成报表、数据备份等减轻主库的压力)
主库将redo log传递到备库上,备库对redo log进行应用以保持和主库的同步。
(物理----RECOVERY,逻辑-----应用sql语句)
5)DG 环境
主库1个,备库最多可以有 9 个
1、主库和备库之间都是单实例
2、主库是RAC,备库是单实例
3、主库是RAC,备库也是RAC(MAA实现最高可用性)
三、DG的保护模式
1.最大保护(Maximum Protection)
这种模式能够确保绝无数据丢失。要实现这一步当然是有代价的,它要求所有的事务在提交前其REDO不仅被写入到本地的Online Redologs,还要同时写入到Standby数据库的Standby Redologs,并确认REDO数据至少在一个Standby数据库中可用(如果有多个的话),然后才会在Primary 数据库上提交。如果出现了什么故障导致Standby数据库不可用的话(比如网络中断),Primary 数据库会被Shutdown,以防止数据丢失。使用这种方式要求Standby Database必须配置Standby Redo Log,而 Primary Database必须使用LGWR,SYNC,AFFIRM方式归档到Standby Database.
2.最高可用性(Maximum availability)
这种模式在不影响 Primary 数据库可用前提下,提供最高级别的数据保护策略。其实现方式与最大保护模式类似,也是要求本地事务在提交前必须至少写入一台
Standby 数据库的 Standby Redologs 中,不过与最大保护模式不同的是,如果出现故障导致Standby数据库无法访问,Primary数据库并不会被Shutdown,而是自动转为最高性能模式,等Standby数据库恢复正常之后,Primary数据库又会自动转换成最高可用性模式。这种方式虽然会尽量避免数据丢失,但不能绝对保证数据完全一致。这种方式要求Standby Database必须配置Standby Redo Log,而Primary Database 必须使用LGWR SYNC,AFFIRM方式归档到Standby Database.
3.最高性能(Maximum performance)
缺省模式。这种模式在不影响Primary数据库性能前提下,提供最高级别的数据保护策略。事务可以随时提交,当前Primary 数据库的REDO数据至少需要写入一个Standby数据库,不过这种写入可以是不同步的。如果网络条件理想的话,这种模式能够提供类似最高可用性的数据保护,而仅对 Primary 数据库的性能有轻微影响。
这也是创建Standby数据库时,系统的默认保护模式。这种方式可以使用 LGWR ASYNC 或者 ARCH 进程实现,Standby Database也不要求使用Standby Redo Log
四、DG的有关进程
RFS: 在备库上启用的进程,接受重做日志(redo log和arch log)
LNSn: 本地网络服务,在主库上负责传送redo日志
MRP: 备库上管理恢复进程,如果是物理 DG,用于对redo log做recovery
LSP: 备库上逻辑备用进程,逻辑DG,是对redo log中抽取的sql进行应用。
例1:物理DG
条件:2台机器(PROD1;SBDB1)
PROD1:
ALTER DATABASE FORCE LOGGING;
select force_logging from v$database;
SELECT GROUP#, BYTES FROM V$LOG;
SELECT GROUP#, BYTES FROM V$STANDBY_LOG;
ALTER DATABASE ADD STANDBY LOGFILE (‘/u02/oradata/PROD1/slog1.rdo‘) SIZE 50M;
ALTER DATABASE ADD STANDBY LOGFILE (‘/u02/oradata/PROD1/slog2.rdo‘) SIZE 50M;
ALTER DATABASE ADD STANDBY LOGFILE (‘/u02/oradata/PROD1/slog3.rdo‘) SIZE 50M;
SELECT GROUP#, BYTES FROM V$STANDBY_LOG;
SELECT * FROM V$LOGFILE;
SHOW PARAMETER RECOVER;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest string /home/oracle/flash
db_recovery_file_dest_size big integer 4G
recovery_parallelism integer 0
archive log list;
Database log mode Archive Mode
Automatic archival Enabled
Archive destination USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence 5
Next log sequence to archive 8
Current log sequence 8
SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
ALTER DATABASE ARCHIVELOG;
ALTER DATABASE OPEN;
在initPROD1.ora文件最后添加一下内容
DB_UNIQUE_NAME=PROD1
LOG_ARCHIVE_CONFIG=‘DG_CONFIG=(PROD1,SBDB1)‘
LOG_ARCHIVE_DEST_1=
‘LOCATION=/home/oracle/arch
VALID_FOR=(ALL_LOGFILES,ALL_ROLES)
DB_UNIQUE_NAME=PROD1‘
LOG_ARCHIVE_DEST_2=
‘SERVICE=SBDB1 ASYNC
VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)
DB_UNIQUE_NAME=SBDB1‘
FAL_SERVER=SBDB1
DB_FILE_NAME_CONVERT=‘/u03/oradata/SBDB1‘,‘/u02/oradata/PROD1‘
LOG_FILE_NAME_CONVERT=‘/u03/oradata/SBDB1‘,‘/u02/oradata/PROD1‘
STANDBY_FILE_MANAGEMENT=AUTO
在tnsnames。ora文件下创建SBDB1配置
更名spfilePROD1.ora为spfilePROD1.ora.bak
将initPROD1.ora生成spfilePROD1.ora文件
重新启动数据库
将initPROD1.ora文件拷贝至node02机器中
STANDBY database
SBDB1:
更改initPROD1.ora部分内容,并创建相关目录
将改变后的initPROD1.ora文件变成initSBDB1.ora文件
生成SBDB1密码文件
在listener.ora文件中添加SBDB1属性,同时也在TNSNAMEs.ora文件中添加SBDB1属性
启动监听
进入sqlplus界面
生成 SBDB1的spfile
create spfile from pfile=‘initPROD1.ora‘;
启动到nomount的状态
PROD1:
rman target sys/[email protected] auxiliary sys/[email protected] nocatalog
duplicate target database for standby from active database dorecover nofilenamecheck;
SBDB同步数据
sql > recover managed standby database using current logfile disconnect from session;
recover managed standby database cancel;
alter database open;
recover managed standby database using current logfile disconnect from session;
本文出自 “11862116” 博客,请务必保留此出处http://11872116.blog.51cto.com/11862116/1959066
以上是关于DataGuard的主要内容,如果未能解决你的问题,请参考以下文章