Data Guard

  • 格式:docx
  • 大小:13.75 KB
  • 文档页数:6

Data Guard

名词

Dataguard结构:

一个Primary合多个Standby(最多九个),物理位置及操作系统无限制

1. Primary

有且只有1个,可以时单实例也可以时RAC

1. Standby

可以视为Primary某个时间点的备份(事务上一直),利用Primary的REDO数据自动维护Standby

• 逻辑Standby:内容相同,结构不同 SQL Apply

• 物理Standby:一模一样 以介质恢复方式实现同步 Redo Apply

Data Guard服务

1. Redo传输服务

RTS服务(REDO传输服务)控制redo数据

常见启动归档模式即设置一个本地归档路径,standby是设一个或多个远端service name

• 传输redo数据到standby

• 处理由于网络中断导致的归档中断

• 控制数据库的保护模式(Gap)

• 检查standby端丢失或无效的归档,并尝试从其它primary/standby获取。

1. Log应用服务

应用redo到standby以保持standby与primary一致

• 物理standby,应用Redo Apply技术,即标准recover方式应用redo数据

• 逻辑standby,使用sql apply技术,将redo转换成sql,然后执行

1. 角色切换

• switchover:可以保证数据不丢失 • failover:Primary出现故障不能及时恢复时,在最大保护模式或最高可用性模式下,failover也可以不争不会数据丢失。

保护模式

• 最大保护:确保数据绝无丢失,要求所有事物在提交前redo写入本地online

redologs和standby redologs,并确认redo数据至少在一个standby数据库可用,然后才提交事务。如果出现standby数据库不可用,primary会被shutdown。

• 最高性能:不影响primary性能前提下,提供最高级别数据报数策略,事务随时提交,primary库的redo至少需写入一个standby,鞋服可以不同步

• 最高可用:不影响primary前天一下,提供最高级别数据保护策略,保护方式与最大保护类似。如果出现故障导致standby无法访问,primarily不会被shutdown,而自动转换为高性能,standby恢复后prinmary又切换为最高可用。

最大保护及最高可用需要至少一个standby的redo数据被同步写入。三种模式都需要指定logarchivedest_n初始化。

Standby数据库类型

1. 物理standby

• redo应用 如果正在执行redo操作,oracle不能被open

• read only模式打开 可执行查询/备份

• read write模式 此时暂停从primary接受redo数据,并暂时失去灾备功能

1. 逻辑standby

与primary逻辑结构与物理结构可以不一致

正常情况下以read write模式打开,在open状态下执行sql应用,多级standby对某些数据类型及一些ddl/dml语句会有操作上的限制。

Data Guard操作方式

• OEM

• sqlplus命令行方式

• DGMGRL

硬件需求

1. 相同系统架构 2. 不同服务器硬件配置可以不同,

3. 操作系统平台必须相同,版本可以略有差距,目录路径也可以不同

软件需求

1. Oracle企业版的一个特性,标准版不支持

2. 同一个Data Guard配置中所欲初始化参数:conpatible值必须相同

3. 必须归档模式,确保primary中打开force logging

4. 同一个dg中可以有逻辑和物理,可以单实例也可以rac

5. 可以同一个服务器

6. 管理必须有sysdba权限

7. 相同的存储架构

时间设置很重要

• standy数据库目录结构:尽量保持目录结构一致

• redologs: online redologs\archivelogs

物理standby

准备

1. 启用force logging

alter database force logging;

1. 创建密钥文件(如果没有的话)

同dg总所有库必须有独立密钥文件,并且sys用户具有相同密码

f:\oracle>orapwd

f:\oracle>orapwd file=f:\oracle\product\11.2.0\db_1\database\PWD orcl.ora password=verysafe entries=30

1. 配置standby redologs

为最大保护和最高可用性模式,建议为standby配置standby redolog(可不配置,oralce会自动创建归档日志文件,并虚拟为一组standby redoblogs),并用LWGR SYNC模式传输REDO数据 • 关于standby redologs

• 管理standby redologs

alter database add standby logfile group 4 ('f:\oracle\oradata\orcl\standbyrd01.log')size 200M;

alter database drop standby logfile group 4;--删除日志组

select group#,type,member from v$logfile; --查看日志

1. 设置初始化参数

2. 将Primary置于归档模式

创建物理standby

1. 创建备份

建议用rman创建备份集。

1. 创建Standby数据库控制文件

alter database create standby controlfile as 'd:\backup\orcldg.ctl'; --如果多次使用该命令,请确保执行时数据库处于mount状态。

创建万控制文件到standby数据库创建完成之间,确保primary不再有结构上的变化。

1. 配置standby数据库的初始化参数文件

• 创建pfile客户端初始化参数文件。

create pfile='d:\backup\initorcl.ora'from spfile;--spfile复制自primary

• 修改初始化参数文件中的参数

主要修改两方面

– 注意primary和standby不同角色对应初始化参数的配置

– 注意保持各初始化参数中的路径准确有效

1. 复制文件到standby服务器

• 备份的数据文件

• 创建的standby控制文件

• 修改过的初始化参数文件

1. 配置standby • 创建新的oracle service

• 创建密钥文件,注意保持与primary一致

• 配置监听并启动

• 修改primry和standby的tnsnames.ora,各自增加对应的Net Service Name

• 创建服务器端的初始化文件

1. 启动物理standby的redo应用

(n>o,o>p,p>q,q>...)

startup;

select opne_mode from v$database;

通常情况下,加载到mount状态即可。##10g版本##

进入mount后开始接受primary的redo数据,

alter database recover managed standby database using current logfile disconnect from session;

要启动实用应用,primary发送redo必须使用lgwr,如果使用arch发送redo数据,standby无法启用实时应用,ORA-38500.

1. 停止standby

• 先停止parimary。如果直接停止standby,priamry的alert中会出现错误信息,或者primary直接挂。

• 正常关闭

alter system set log_archive _dest_state_2=defer;--primary

alter database recover managed standby database calcel; --standby

shutdown immediate;

配置过程

set sqlprompt "orcl>"

1. 确认主库归档模式

archive log list;

shutdown immediate;

startup mount;

alter database archive log;

1. 设置primary force logging; select force_logging from v$database;

alter database force logging;

1. 配置primary的初始化参数

create pfile='d:\oracle\backup\pfile_orcl.ora'from spfile;

修改初始化参数文件

DB_UNIQUE_NAME=orcl;

LOG_ARCHIVE_CONFIG='DG_CONFIG=(orcl,orcldg)'

LOG_ARCHIVE_DEST_2='SERVICE=ORCLDG_192.168.1.101 ARCH VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=orcldg'

LOG_ARCHIVE_DEST_STATE_2=DEFER