DG 概念和配置

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 50

Oracle高可用 第六课 Data Guard 概念和配置

2013.2.28

DATAGURU专业数据分析网站
法律声明

【声明】本视频和幻灯片为炼数成金网络课程的教
学资料,所有资料只能在课程内使用,不得在课
程以外范围散播,违者将可能被追究法律和经济
责任。

课程详情访问炼数成金培训网站

http://edu.dataguru.cn

2013.2.28

DATAGURU专业数据分析网站 2
Data guard--系统的高可用产品

 RAC ---实例级的冗余方案

 Data guard ---数据级的冗余方案

2013.2.28
2013-
7-21 DATAGURU专业数据分析网站
Data Guard
Standby Database
Primary Database Standby Database

Primary Standby

Instance Redo Instance

Database Database

Site 1 Site 2

2013.2.28
2013-
7-21 DATAGURU专业数据分析网站
应用容错
主站点和应用层依然可用

主站点 备用站点
2 客户端超时, 应用快速
应用层—Oracle应用服务器 连接到新的主数据库
集群

数据层—Oracle RAC

数据库服务 Data Guard


1 Data Guard
手动或者自动的容错
Redo Transport 备用数据库变
Standby
成主数据库
Database
主数据库

2013.2.28
2013-
7-21 DATAGURU专业数据分析网站
完全的站点失效

主站点 Primary
备用站点 Site
WAN 通信管理
3 WAN traffic
自动的DNS容错
manager
路由用户到新
Firewall Firewall
应用层—Oracle应用服务器 的主站点
集群
2 启动
中间层
Firewall

备用数据库
数据层—Oracle RAC
转变成主数据库
Data Guard
Data Guard
1
自动容错
Redo Transport
2013.2.28
2013-
7-21 DATAGURU专业数据分析网站
Data Guard的实现方式

Physical Standby

Logical Standby

2013.2.28
2013-
7-21 DATAGURU专业数据分析网站
Physical Standby

 Standby database是主数据库的物理备份。

 Redo改变
– 改变的日志从主库传递到备库(standby database)

– 改变的REDO在备库上被应用。

2013.2.28
2013-
7-21 DATAGURU专业数据分析网站
Physical Standby
以只读方式打开

主数据库 物理备用数据库

Redo 应用

网络
备份
Redo 传送
备用
DIGITAL DATA STORAGE

Redo Logs

Ÿ 物理备用数据库进行的是主数据库数据块的备份
Ÿ 使用数据库恢复功能来应用变化

2013.2.28
2013-
7-21 DATAGURU专业数据分析网站
Logical Standby
 是主库对象的一个子集合。
 日志从主库传到备库。
 REDO被转换为SQL,然后在备库上执行。

2013.2.28
2013-
7-21 DATAGURU专业数据分析网站
Logical Standby
额外的索引
&物化视图

主数据库 逻辑备用数据库

转换 Redo
到SQL并且应用

网络 读写方式打开

Redo 传输 备用
Redo Logs

Ÿ 逻辑备用数据库是一个开放,独立的以及活动的数据库
Ÿ 当重做数据通过SQL进行应用的时候可以进行报表查询
Ÿ 可以成生额外的索引和物化视图以获得更好的查询性能

2013.2.28
2013-
7-21 DATAGURU专业数据分析网站
物理 V.S. 逻辑

Redo
LCR
来自于主数 Records
LCR
据库的redo Reader Preparer : Builder
数据
Shared
Pool

Log 挖掘

应用SQL

Physical
逻辑备用数
Standby
据库 Applier Coordinator Analyzer
Database

2013.2.28
2013-
7-21 DATAGURU专业数据分析网站
重做应用还是SQL应用?
重做应用 SQL 应用

 物理备用数据库从主数据库进行块  逻辑的,备用数据库从主数据库进
到块的复制 行的是事务到事务的拷
 可以以只读查询的方式打开’在  允许创建额外的对象,对对象做出
11g中支持实时报告 修改

 在角色变化时,确保备用数据库是  在创建对象的时候可以跳过应用
主数据库的完全备份  以读写的方式打开(在表中以SQL
 可以用于快速备份 应用维护的数据不会发生变化)

 更高的性能  支持实时报告

 对数据类型的支持有限制

2013.2.28
2013-
7-21 DATAGURU专业数据分析网站
DG相关的后台进程

 ARCH (archiver)

 LNS (log-write network-server)

 RFS (remote file server)

 FAL (Fetch Archive Log )

 MRP (Managed Recovery Process)

 LSP (Logical Standby Process)

2013.2.28
2013-
7-21 DATAGURU专业数据分析网站
DG的保护模式

模式 数据丢失风险 传输 是否没有来自备用数据库的确认

零数据丢失
最大保护 同步 延迟主数据库,直到确认收到副本
双重失败保护

零数据丢失 延迟主数据库,直到确认收到副本或者发生
最大可用 同步
单失败保护 超时’然后继续处理

有少量数据丢失的可
最大性能 异步 主数据库不会等待备用数据库的确认

LOG_ARCHIVE_DEST_n中的 NET_TIMEOUT 参数

2013.2.28
2013-
7-21 DATAGURU专业数据分析网站
日志的传输
 ARCH

– 把完整的REDO文件COPY到standby数据库服务器上。

 LGWR,两种模式:
– ASYNC - 异步

• redo written by LGWR to local disk

• LGWR将redo写到本地LOG文件。

• LNSn进程读取redo,传到standby服务器上。
– SYNC - 同步

• Redo written to standby by LGWR - modes are:

• LGWR讲Redo信息直接写到standby数据库服务器上

2013.2.28
2013-
7-21 DATAGURU专业数据分析网站
Arch进程传输Redo
Primary Database Standby Database

Primary MRP Standby


Database LGWR RFS Database
LSP

2
T_
ES
_D
I VE
Online Standby

CH
Redo Redo

AR
Log Log
G_
LO

ARC0 ARC1 ARCn

LOG_ARCHIVE_DEST_1

Archived Archived
Redo Redo
Logs Logs
2013.2.28
2013-
7-21 DATAGURU专业数据分析网站
LGWR (异步) 传输REDO
Primary Database Standby Database

Primary MRP Standby


Database LGWR RFS Database
LSP

Online Standby
Redo LNSn Redo
Log Log

ARCn ARCn

LOG_ARCHIVE_DEST_1

Archived Archived
Redo Redo
Logs Logs
2013.2.28
2013-
7-21 DATAGURU专业数据分析网站
LGWR (同步)传输Redo
Primary Database Standby Database

Primary MRP Standby


Database LGWR LNSn RFS Database
LSP

Online Standby
Redo Redo
Log Log

ARCn ARCn

LOG_ARCHIVE_DEST_1

Archived Archived
Redo Redo
Logs Logs
2013.2.28
2013-
7-21 DATAGURU专业数据分析网站
Data guard
的部署

2013.2.28
2013-
7-21 DATAGURU专业数据分析网站
Physical Standby 配置
 On both servers, configure TNSNAMES.ORA
LONDON =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = london1)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = LONDON)
)
)

READING =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = reading1)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = READING)
)
)
2013.2.28
2013-
7-21 DATAGURU专业数据分析网站
Physical Standby 配置
 On primary server create backup location
mkdir /u01/oradata/PRIMARY/backup;

 On primary server run RMAN to backup database


$ORACLE_HOME/bin/rman NOCATALOG TARGET sys/oracle@PRIMARY

 In RMAN configure backup

CONFIGURE CONTROLFILE AUTOBACKUP ON;


CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO
'/u01/oradata/PRIMARY/backup/%F';
CONFIGURE CHANNEL 1 DEVICE TYPE DISK CONNECT 'sys/oracle@PRIMARY';
CONFIGURE SNAPSHOT CONTROLFILE NAME TO
'/u01/app/oracle/admin/PRIMARY/backup/snapcf_PRIMARY.f';

2013.2.28
2013-
7-21 DATAGURU专业数据分析网站
Physical Standby 配置
 In RMAN backup database
BACKUP
FORMAT '/u01/oradata/PRIMARY/backup/%d_D_%T_%u_s%s_p%p'
DATABASE;

 In RMAN create controlfile for standby database


BACKUP CURRENT CONTROLFILE FOR STANDBY
FORMAT '/u01/oradata/PRIMARY/backup/%d_C_%U';

 In RMAN switch and archive current online redo log


SQL "ALTER SYSTEM ARCHIVE LOG CURRENT";

 In RMAN backup archived redo logs


BACKUP
FILESPERSET 10
ARCHIVELOG ALL
FORMAT '/u01/oradata/PRIMARY/backup/%d_A_%T_%u_s%s_p%p';
2013.2.28
2013-
7-21 DATAGURU专业数据分析网站
Physical Standby 配置
 On standby server create administrative directories
$ mkdir $ORACLE_BASE/admin/PRIMARY;
$ mkdir $ORACLE_BASE/admin/PRIMARY/adump;
$ mkdir $ORACLE_BASE/admin/PRIMARY/bdump;
$ mkdir $ORACLE_BASE/admin/PRIMARY/cdump;
$ mkdir $ORACLE_BASE/admin/PRIMARY/dpdump;
$ mkdir $ORACLE_BASE/admin/PRIMARY/pfile;
$ mkdir $ORACLE_BASE/admin/PRIMARY/udump;

 On standby server create database location


$ mkdir /u01/oradata/PRIMARY

 On standby server create archived redo log location


$ mkdir /u01/oradata/PRIMARY/arch

 On standby server create backup location


$ mkdir /u01/oradata/PRIMARY/backup;
2013.2.28
2013-
7-21 DATAGURU专业数据分析网站
Physical Standby 配置
 On standby server create password file
$ORACLE_HOME/bin/orapwd \
file=$ORACLE_HOME/dbs/orapwPRIMARY \
password=oracle \

 Copy SPFILE from primary to standby


scp london1:$ORACLE_HOME/dbs/spfilePRIMARY.ora \
reading1:$ORACLE_HOME/dbs

 Note - initPRIMARY.ora is not required on either server

2013.2.28
2013-
7-21 DATAGURU专业数据分析网站
Physical Standby 配置
 On primary server set parameters
ALTER SYSTEM SET db_unique_name = LONDON
SCOPE = SPFILE;
ALTER SYSTEM SET log_archive_dest_1 =
'LOCATION=/u01/oradata/PRIMARY/arch'
SCOPE=SPFILE;
ALTER SYSTEM SET log_archive_dest_2 = 'SERVICE=READING
VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=READING'
SCOPE=SPFILE;
ALTER SYSTEM SET fal_client = LONDON
SCOPE = SPFILE;
ALTER SYSTEM SET fal_server = READING
SCOPE = SPFILE;
ALTER SYSTEM SET standby_file_management = AUTO
SCOPE = SPFILE;

 Restart the instance


2013.2.28
2013-
7-21 DATAGURU专业数据分析网站
Physical Standby 配置
 On standby server configure LISTENER.ORA
SID_LIST_LISTENER_SERVER4 =
(SID_LIST =
(SID_DESC =
(ORACLE_HOME = /u01/app/oracle/product/10.2.0/db_1)
(SID_NAME = PRIMARY)
)
)

 Reload the listener

$ lsnrctl reload

 Start the standby instance (NOMOUNT)

$ export ORACLE_SID=PRIMARY
$ sqlplus / as sysdba
SQL> startup nomount

2013.2.28
2013-
7-21 DATAGURU专业数据分析网站
Physical Standby 配置
 On standby server set parameters
ALTER SYSTEM SET db_unique_name = READING
SCOPE = SPFILE;
ALTER SYSTEM SET log_archive_dest_1 =
'LOCATION=/u01/oradata/PRIMARY/arch'
SCOPE = SPFILE;
ALTER SYSTEM SET log_archive_dest_2 = 'SERVICE=LONDON
VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=LONDON'
SCOPE=SPFILE;
ALTER SYSTEM SET fal_client = READING
SCOPE = SPFILE;
ALTER SYSTEM SET fal_server = LONDON
SCOPE = SPFILE;
ALTER SYSTEM SET standby_file_management = AUTO
SCOPE = SPFILE;

 Restart the instance


2013.2.28
2013-
7-21 DATAGURU专业数据分析网站
Physical Standby 配置
 On primary server run RMAN connecting to standby server as AUXILIARY

$ORACLE_HOME/bin/rman NOCATALOG TARGET / AUXILIARY


sys/oracle@"(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=reading1)
(PORT=1521))(CONNECT_DATA=(SID=PRIMARY)))"

 Run the following command to clone the database backup on the standby
server

RMAN> DUPLICATE TARGET DATABASE FOR STANDBY DO RECOVER ;

2013.2.28
2013-
7-21 DATAGURU专业数据分析网站
Physical Standby 配置
 On standby server restart the instance
SQL> SHUTDOWN IMMEDIATE
SQL> STARTUP NOMOUNT

 Mount the standby database


SQL> ALTER DATABASE MOUNT STANDBY DATABASE;

 Start managed recovery


SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE
DISCONNECT FROM SESSION;

2013.2.28
2013-
7-21 DATAGURU专业数据分析网站
Logical Standby 配置
 On standby server cancel managed recovery
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;

 On primary server modify the LOG_ARCHIVE_DEST_2 parameter

SQL> ALTER SYSTEM SET


log_archive_dest_2 = 'SERVICE=READING
VALID_FOR=(ONLINE_LOGFILES,STANDBY_ROLE)
DB_UNIQUE_NAME=READING'
SCOPE=SPFILE;

2013.2.28
2013-
7-21 DATAGURU专业数据分析网站
Logical Standby 配置
 On primary server build the logical standby dictionary
SQL> EXECUTE LOGSTDBY.BUILD;

 For a default database this generated about 8MB redo and updated the
following objects:
SYS.LOGMNRG_SEED$ SYS.LOGMNRG_TYPE$

SYS.LOGMNRG_DICTIONARY$ SYS.LOGMNRG_COLTYPE$

SYS.LOGMNRG_OBJ$ SYS.LOGMNRG_ATTRIBUTE$

SYS.LOGMNRG_TAB$ SYS.LOGMNRG_LOB$

SYS.LOGMNRG_COL$ SYS.LOGMNRG_CDEF$

SYS.LOGMNRG_ATTRCOL$ SYS.LOGMNRG_CCOL$

SYS.LOGMNRG_TS$ SYS.LOGMNRG_ICOL$

SYS.LOGMNRG_IND$ SYS.LOGMNRG_LOGFRAG$
2013.2.28
2013-
DATAGURU专业数据分析网站
SYS.LOGMNRG_USER$ SYS.LOGMNRG_INDPART$
7-21
Logical Standby 配置
 On standby server enable recovery and change the name of the standby
database
SQL> ALTER DATABASE RECOVER TO LOGICAL STANDBY standby;

 On standby server restart the instance and reset the logs

SQL> SHUTDOWN IMMEDIATE


SQL> STARTUP
SQL> ALTER DATABASE OPEN RESETLOGS;

 On standby server start SQL apply

SQL> ALTER DATABASE START LOGICAL STANDBY APPLY;

2013.2.28
2013-
7-21 DATAGURU专业数据分析网站
11G
ACTIVE
STANDBY
2013.2.28
2013-
7-21 DATAGURU专业数据分析网站
Active Data Guard
读写工作流
实时报告
Real-time Real-time
Reporting Queries

Fast
Incremental 快速增量备份
Backups

持续的redo传输,验证和应用

生产数据库 活动的备用数据库
Physical Standby
Database

2013.2.28
2013-
7-21 DATAGURU专业数据分析网站
有哪些不同?
Data Guard 11g Active Data Guard 选项

 在8 am停止重做应用  重做应用始终开启

 查询以只读方式打开  总是以只读方式打开
• 到了4 pm, 数据已经是8小 • 查询和报告中总有最新的数
时之前的了 据

• “积压”的数据必须应用,所 • 在需要的时候立即容错,备
以所有的容错都将延迟 用数据库保持更新

2013.2.28
2013-
7-21 DATAGURU专业数据分析网站
Active Data Guard
查询返回最新的结果

2013.2.28
2013-
7-21 DATAGURU专业数据分析网站
Active Data Guard 部署示例
queries
Active Data Guard
queries
Reader Farm
更新 queries
queries

queries

生产数据库 备用数据库

DR included *
2013.2.28
2013-
7-21 DATAGURU专业数据分析网站
Active Data Guard 优点

恢复物理备用数据库 读操作和恢复同时进行

生产数据库上所有的读操作 把只读工作负载转换到备用数据库

只进行灾难保护 性能保护

备用系统很少使用 方便进行容灾测试演练

复杂的复制用于创建报告副本 简单,高性能地建立应用测试环

2013.2.28
2013-
7-21 DATAGURU专业数据分析网站
Active Data Guard - Licensing

 是 Oracle Enterprise Edition 11g的数据库选项

 在使用下面两者中的任意其一时需要license
– 实时查询

– 在备用数据库上的RMAN 块变化追踪

 将Data Guard的功能与Oracle 11g结合起来使用

2013.2.28
2013-
7-21 DATAGURU专业数据分析网站
11G
SNAPSHOT
STANDBY

2013.2.28
2013-
7-21 DATAGURU专业数据分析网站
备用数据库快照 – Data Guard 11g
将备用数据库作为测试系统使用

更新 查询
Queries
Updates

redo
data

主数据库 物理备用数据库

DGMGRL> convert database <name> to snapshot standby;


DGMGRL> convert database <name> to physical standby;
2013.2.28
2013-
7-21 DATAGURU专业数据分析网站
备用数据库快照
更简单并且有更好的 RTO/RPO
10.2 – 需要的步骤 11G – 需要的步骤
Standby Standby

> alter database recover managed standby database > alter database convert to snapshot standby;
cancel;
PERFORM TESTING, ARCHIVE LOGS CONTINUE TO BE
> create restore point before_lt guarantee flashback
SHIPPED
database;
> alter database convert to physical standby;
Primary

> alter system archive log current;

> alter system set log_archive_dest_state_2=defer;

Standby

> alter database activate standby database;

> startup mount force;

> alter database set standby database to maximize


performance;

> alter system set log_archive_dest_state_2=defer;

> alter database open;

PERFORM TESTING, ARCHIVE LOGS NOT SHIPPED


> startup mount force;

> flashback database to restore point before_lt;2013.2.28


2013-
7-21> DATAGURU专业数据分析网站
alter database convert to physical standby;

> startup mount force;


补充内容

 primary db需要设置logging force模式

 原因
– 即使在归档模式下,也可能会有一些有nologging的操作不产生redo,这在DG下是不允许的,
因此必须启用数据库强制记录redo。

2013.2.28
2013-
7-21 DATAGURU专业数据分析网站
DG的几种日志

 online redo

 归档日志

 standby redo

2013.2.28
2013-
7-21 DATAGURU专业数据分析网站
补充内容-DG三种保护模式的相关的配置

2013.2.28
2013-
7-21 DATAGURU专业数据分析网站
补充内容-DG三种保护模式的相关的配置

 最大保护模式
更正----在最大保护模式下,当所有standby都不可用时,primary db会挂起,而不是重启(改正
)。
设置方式:

1.创建standby redo logs


alter database add standby logfile group 5 ('/oracle/u02/ORA10GDG/STANDBYRD02.LOG') size 200M;
alter database add standby logfile group 5 ('/oracle/u02/ORA10GDG/STANDBYRD02.LOG') size 200M;
alter database add standby logfile group 6 ('/oracle/u02/ORA10GDG/STANDBYRD03.LOG') size 200M;

2.配置对应的日志传递相关属性参数
LOG_ARCHIVE_DEST_2='SERVICE=CHICAGO SYNC AFFIRM VALID_FOR=(ONLINE_LOGFILE, PRIMARY_ROLE)
DB_UNIQUE_NAME=CHICAGO'

3.转换成最大保护模式
alter database set standby database to maximize PROTECTION;

2013.2.28
2013-
7-21 DATAGURU专业数据分析网站
 最大可用性模式
LOG_ARCHIVE_DEST_2='SERVICE=CHICAGO SYNC AFFIRM VALID_FOR=(ONLINE_LOGFILE, PRIMARY_ROLE)
DB_UNIQUE_NAME=CHICAGO'

 alter database set standby database to maximize AVAILABILITY;

 最大性能模式
LOG_ARCHIVE_DEST_2='SERVICE=CHICAGO ASYNC NOAFFIRM VALID_FOR=(ONLINE_LOGFILE, PRIMARY_ROLE)
DB_UNIQUE_NAME=CHICAGO'

LOG_ARCHIVE_DEST_2='SERVICE=CHICAGO ARCH NOAFFIRM VALID_FOR=(ONLINE_LOGFILE, PRIMARY_ROLE)


DB_UNIQUE_NAME=CHICAGO'

 alter database set standby database to maximize PERFORMANCE;

2013.2.28
2013-
7-21 DATAGURU专业数据分析网站
炼数成金逆向收费式网络课程

 Dataguru(炼数成金)是专业数据分析网站,提供教育,媒体,内容,社区,出版,
数据分析业务等服务。我们的课程采用新兴的互联网教育形式,独创地发展了逆向收
费式网络培训课程模式。既继承传统教育重学习氛围,重竞争压力的特点,同时又发
挥互联网的威力打破时空限制,把天南地北志同道合的朋友组织在一起交流学习,使
到原先孤立的学习个体组合成有组织的探索力量。并且把原先动辄成千上万的学习成
本,直线下降至百元范围,造福大众。我们的目标是:低成本传播高价值知识,构架
中国第一的网上知识流转阵地。

 关于逆向收费式网络的详情,请看我们的培训网站 http://edu.dataguru.cn

2013.2.28

DATAGURU专业数据分析网站 49
Thanks
FAQ曳露

2013.2.28

DATAGURU专业数据分析网站 50

You might also like