Home >Database >Mysql Tutorial >Oracle 11g Data Guard 物理备库快速配置指南

Oracle 11g Data Guard 物理备库快速配置指南

WBOY
WBOYOriginal
2016-06-07 16:07:331294browse

最近做了Oracle 10g和11g的物理备库配置实验,发现 Data Guard 其实很容易,但是缺少好文档。我是参考官方文档做的实验,觉得它

缘起
最近做了Oracle 10g和11g的物理备库配置实验,发现 Data Guard 其实很容易,但是缺少好文档。我是参考官方文档做的实验,觉得它写的不是很清楚的。

Google 出来两个pdf文档,读了觉得比官方文档强很多。翻译下,也许会对某些朋友有用。翻译的同时我也好更熟悉下这两个文档。好久没翻译过英文了,可以顺便练练手。

原文档下载地址(墙外):

Configure Dataguard 11gR2 Physical Standby Part 1
Configure Dataguard 11gR2 Physical Standby Part 2

第一部分
简介
Data Guard 是 Oracle 数据库的一个功能,能够提供数据库的冗余。冗余是通过创建一个备用(物理复制)数据库实现,备库最好是在不同的地理位置或者在不同的磁盘上。备库通过应用主库上的变化来保持数据同步。备库可以使用重做日志应用(物理备库)或SQL应用同步(逻辑备库)。

本文旨在说明 Data Guard 的配置并不复杂,不需要特殊的技能或者培训才能学会搭建。它将快速展示给读者搭建一个物理备库的过程。我的目标是,即使你第一次接触 Data Guard,刚考虑要使用它或担心它会不会很难配置,本文将帮助你快速搭建起一个正常运行起来的物理备库。

为什么使用 Data Guard
每种 Oracle 高可用性工具都有其目的。使用 Data Guard 的理由有:

整个数据库的冗余
故障时的快速恢复
故障后客户端能自动重连
在备库运行备份
较好的故障平均修复时间
并不复杂
系统环境
在写完本文后,我使用 DBCA 创建了一个新数据库 JED,然后重新运行了文中的配置步骤,确认其对一个基本的 Oracle 11g 数据库适用。主库叫 JED,运行在一台叫 dev-db1的服务器上。备库叫JED2,运行在一台叫 dev-db2 的服务器上。

不需要提的基本前提
有一些任何生产库都应该有的基本的设置。其中一个就是归档模式。对于生产库,这应该是一个明显的必须配置。如果你的生产库没有适用归档模式,你要么需要马上开始读点书,要么你得有一个非常非常好的理由。我不大确定谁真能找出一个理由,但任何准则都有例外。

如何修改你的数据库为归档模式:

SQL> shutdown immediate
SQL> startup mount
SQL> alter database archivelog;
SQL> alter database open;
SQL> archive log list;

主库准备
首先,备库要成为主库的完全相同的复制,它必须接收来自主库的重做日志。Oracle 数据库中,一个用户可以用指定某操作不产生日志(比如使用 NOLOGGING 语句)。对于备库来说,这是个问题。你必须确认用户无法指示数据库不产生重做日志,这需要启用数据库的强制日志功能。启用方法如下:

SQL> alter database force logging;
SQL> select name, force_logging from v$database;

你应该看到 force_logging 列为 YES。

其次,你要确认当主库添加或删除数据文件时,这些文件也会在备库添加或删除。启用此功能的方法如下:

SQL> alter system set standby_file_management = 'AUTO';

再次,我们要确认书库有备用日志文件(Standby Log Files)。备库使用备用日志文件来来保存从主库接收到的重做日志。主库上也建立备用日志文件有两个原因,一是主库可能转换成备库,备库需要备用日志,二是如果主库建了备用日志,备库会自动建。备用日志应该跟在线日志一样大,组数应该至少跟在线日志一样多,或者更多。我喜欢给备用日志一个跟在线日志不同范围的编号,,比如在线日志组是1到6,备用日志就是11到16。创建备用日志的方法如下:

SQL> alter database add standby logfile group 11 ('/oradata/JED/g11m01.sdo','/oradata/JED/g11m02.sdo') size 50M;

如果你不是使用 SSL 做重做日志传输验证(一般来说不会),那么你需要使用密码文件做验证。你必须创建密码文件,并且设置参数 REMOTE_LOGIN_PASSWORDFILE 为 EXCLUSIVE 或 SHARED。一般数据库默认就有密码文件,并且此参数默认为 EXECUSIVE。先检查下这两项,如果不是默认,设置方法如下:

SQL> alter system set remote_login_passwordfile=exclusive scope=spfile;
OS> orapwd password=

最后,检查数据库的 db_unique_name 参数是否设置。如果没有,使用 alter system 进行设置:

SQL> show paramter db_unique_name;
SQL> alter system set db_unique_name=some_name scope=spfile;

闪回数据库
我强烈建议开启数据库闪回功能。闪回允许你将数据库还原到以前的某一时间点。当发生故障转移时,这个功能非常有用,它能让你将老的主库闪回到故障前,然后将其转换为备库。如果没有启用闪回功能,你就必须重建备库,意味着要再复制一次数据文件。除了这个好处,闪回还能在某些情况下让你避免从备份恢复数据。

启用闪回功能,必须先配置快速恢复区(Flash/Fast Recovery Area). 方法如下:

SQL> alter system set db_recovery_file_dest='&快速恢复区目录或ASM磁盘组名';
SQL> alter system set db_recovery_file_dest_size=400G;

配置好快速恢复区后,就可以启用闪回日志功能:

SQL> alter database flashback on;
SQL> select flashback_on from v$database;

FLASHBACK_ON 这列的值应该是 YES。如果你碰到 ORA-01153 报错,那一定是在备库进行此操作。你需要先取消重做日志应用,启用闪回日志,然后重新启用日志应用。

在主库启用闪回日志,不会同步备库也启用。你必须手动在主库和备库上均启用闪回日志。如果不启用闪回日志,当出现故障转移时,你将需要完全重新开始创建一个备库。

SQL*NET 配置
在创建备库前,要确认两台服务器的数据库之间能通信,如果我们要用 RMAN 的 duplicate from active database 命令创建备库的话。我们需要配置监听和 TNS 名。你可以手动配置,也可以使用网络配置工具(netca)。我更喜欢手动配置,因为我比较老派,并且这些配置文件又不复杂,

首先需要配置主备库的监听。虽然数据库会自动注册监听,但如果要使用 RMAN 的 duplicate 命令创建备库,备库必须首先处于 NOMOUNT 状态。在 NOMOUNT 状态下,数据库实例不会自动注册监听,你必须配置静态监听。另外必须要注意的一点是,NOMOUNT 状态下的数据库必须使用专用模式(dedicated server)连接。

两台服务器上的 TNS 名字文件必须配置好,让主备库能用 LOG_ARCHIVE_DEST_N 和 FAL_SERVER 参数(稍后会介绍这些参数)中的服务名(Service Names)找到对方。具体配置应类似下例。

主库(dev-db1)的监听配置:

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn