Oracle Data Guard 物理备用数据库配置

Oracle Data Guard 简介

Oracle Data Guard可确保企业数据的高可用性,数据保护和灾难恢复。 Data Guard 提供了一套全面的服务,可以创建,维护,管理和监视一个或多个备用数据库,以使生产 Oracle数据库能够在灾难和数据损坏中幸免。 Data Guard将这些备用数据库作为生产 数据库的副本进行维护。然后,如果由于计划内或计划外的停机而使生产数据库不可 用,则Data Guard可以将任何备用数据库切换为生产角色,从而最大程度地减少与停 机相关的停机时间。 Data Guard可以与传统的备份,还原和群集技术一起使用,以提 供高水平的数据保护和数据可用性。

材料:

主数据库的操作系统Windows 2008 64位 安装Oracle后,创建一个名称为chicago数据库

备用数据库操作系统 Centos6.5 64位 安装Oracle后,创建一个名称为boston数据库

注意:两边的数据库版本需一致,包括小版本号

主数据库所需配置

配置主数据库的先决条件

  1. 主库必须开启归档模式
  2. 在主数据库(Windows 2008)打开NetManager配置chicago和boston两个监听服务连接类型设置为dedicated(专用服务器)模式。配置完毕后保存启动监听,在命令行终端中使用tnsping命令先对chicago进行测试。

Oracle Data Guard 物理备用数据库配置

Oracle Data Guard 物理备用数据库配置

Oracle Data Guard 物理备用数据库配置

Oracle Data Guard 物理备用数据库配置

Oracle Data Guard 物理备用数据库配置

Oracle Data Guard 物理备用数据库配置

Oracle Data Guard 物理备用数据库配置

 

  1. 在SQLPLUS中执行以下语句:

SQL>ALTER DATABASE FORCE LOGGING

--主数据库开启强制归档日志模式,发出此语句时,必须至少装入主数据库(也可以将其打开)。 该语句可能需要花费大量时间才能完成,因为它会等待所有未记录的直接写I/O完成。

SQL>SHOW PARAMETER DB_NAME; --查询数据库名称

 

SQL>SHOW PARAMETER DB_UNIQUE_NAME;-- 为每个数据库指定一个唯一的名称。此名称将保留在数据库中,并且不会更改,即使主数据库和备用数据库的角色相反。

 

SQL>SHOW PARAMETER LOG_ARCHIVE_CONFIG;-- --配置DG_CONFIG属性,该指定的是主数据库和备用数据库的DB_UNIQUE_NAME

 

SQL>SHOW PARAMETER CONTROL_FILES;-- 建议提供控制文件的二个副本,以便在将良好控制文件复制到不良控制文件的位置后,可以轻松地重新启动实例。

 

SQL>ALTER SYSTEM SET LOG_ARCHIVE_DEST_1='LOCATION=C:\archivelog\chicago VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=chicago' scope=both;-- 将主数据库生成的重做数据从本地联机重做日志文件存档到C:\archivelog\chicago中的本地已归档重做日志文件。

 

SQL>ALTER SYSTEM SET LOG_ARCHIVE_DEST_2='SERVICE=boston ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=boston' scope=both; --LOG_ARCHIVE_DEST_2仅对主要角色有效。此目标将重做数据传输到远程物理备用目标boston

 

SQL>ALTER SYSTEM SET LOG_ARCHIVE_FORMAT='%t_%s_%r.arc' scope=spfile; --设置使用线程指定归档的重做日志文件的格式 (%t), *** (%s), 和重置日志ID (%r).

 

SQL>SHOW PARAMETER REMOTE_LOGIN_PASSWORDFILE;--如果远程登录密码文件用于验证管理用户或重做传输会话,则必须将此参数设置为EXCLUSIVE或SHARED。

 

SQL>SHOW PARAMETER FAL_SERVER; --指定创建数据库时使用的名称。 在物理备用数据库上,使用主数据库的DB_NAME。

 

  1. 以上参数配置完成后,重新启动一次实例,然后把该数据库的密码文件发送到备用服务器上的$ORACLE_HOME/dbs/目录中,或者使用命令orapwd file='$ORACLE_HOME/dbs/orapw$ORACLE_SID' password=password entries=5 force=y 创建一个密码文件(密码文件的密码需要在主数据库和备用数据库一致)
  2. SQL> CREATE PFILE='/tmp/initboston.ora' FROM SPFILE;--从主数据库使用的服务器参数文件(SPFILE)创建参数文件(PFILE)。

备用数据库所需配置

  1. 编辑已拷贝过来的initboston.ora,以下标注的红框需要修改,如果没有拷贝到备用数据库中,需要将修改完成后拷贝到备用数据库服务器的$ORACLE_HOME/dbs/路径下Oracle Data Guard 物理备用数据库配置
  2. 在命令行终端中配置数据库监听

$cd /u01/app/oracle/product/11.2.0/dbhome_1/network/admin

$vim listener.ora

Oracle Data Guard 物理备用数据库配置

$vim tnsnames.ora

Oracle Data Guard 物理备用数据库配置

配置完成后启动监听

$lsnrctl start

tnsping boston chicago 是否正确返回结果

$tnsping boston

$tnsping chicago

  1. 在相应的目录中创建$ORACLE_BASE\boston\adump、$ORACLE_BASE\flash_recovery_area\boston、$ORACLE_BASE\oradata\boston

以上参数和目录配置完成后,把数据库打开到nomount状态

然后执行以下步骤

SQL>STARTUP NOMOUNT;

  1. $ rman target sys/[email protected] auxiliary sys/[email protected]

输入以下命令进行数据库复制

SQL>duplicate target database for standby from active database

spfile

parameter_value_convert 'CHICAGO','BOSTON','chicago','boston'

set db_unique_name 'boston'

set diagnostic_dest '/u01/app/oracle'

set memory_target '717567488'

set audit_file_dest '/u01/app/oracle/admin/boston/adump'

set db_file_name_convert 'C:\U01\APP\ORACLE\ORADATA\CHICAGO','/u01/app/oracle/oradata/boston/'

set log_file_name_convert 'C:\U01\APP\ORACLE\ORADATA\CHICAGO','/u01/app/oracle/oradata/boston/'

set db_recovery_file_dest '/u01/app/oracle/flash_recovery_area'

set control_files '/u01/app/oracle/oradata/boston/control01.ctl','/u01/app/oracle/flash_recovery_area/boston/control02.ctl';

复制命令执行后,如发现执行失败,

  1. 请分别在主数据库和备用数据库仔细检查监听配置是否正确
  2. 查询备用数据库对应的目录路径下是否正确创建相应的目录

复制命令执行后,如果成功则数据库默认为mount状态

  1. 接下来配置物理备用数据库的参数

SQL>SHOW PARAMETER DB_NAME;

SQL>SHOW PARAMETER DB_UNIQUE_NAME;

SQL>ALTER SYSTEM SET DB_UNIQUE_NAME='boston' SCOPE=SPFILE;--为此数据库指定一个唯一的名称。 该名称保留在数据库中,即使主数据库和备用数据库具有相反的角色,该名称也不会更改。

SQL>SHOW PARAMETER CONTROL_FILES;

SQL>SHOW PARAMETER DB_FILE_NAME_CONVERT;

SQL>SHOW PARAMETERS LOG_FILE_NAME_CONVERT;--此参数将主数据库日志文件的路径名转换为备用数据库上的路径名。 如果备用数据库与主数据库位于同一系统上,或者备用系统上日志文件所在的目录结构与主系统不同,则此参数是必需的。

SQL>ALTER SYSTEM SET LOG_ARCHIVE_DEST_1='LOCATION=/arch1/boston/ VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=boston' SCOPE=BOTH;--LOG_ARCHIVE_DEST_1 将从主数据库接收的重做数据归档到 /arch1/boston/中的归档重做日志文件中。

SQL>ALTER SYSTEM SET LOG_ARCHIVE_DEST_2='SERVICE=chicago ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=chicago' SCOPE=BOTH;--当前忽略LOG_ARCHIVE_DEST_2 ,因为此目标仅对主要角色有效。 如果发生切换,并且该实例成为主数据库,则它将重做数据传输到远程chicago目的地。

SQL>SHOW PARAMETER FAL_SERVER;

SQL>ALTER SYSTEM SET FAL_SERVER=chicago SCOPE=BOTH;--指定FAL服务器的Oracle Net服务名称(通常这是以主要角色运行的数据库)。当boston数据库以备用角色运行时,如果chicago无法自动发送丢失的日志文件,则它将chicago数据库用作FAL服务器,从中提取(请求)丢失的存档重做日志文件。

  1.  

SQL>ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM SESSION;-- 在备用数据库上,发出以下命令以启动“重做应用”

如果以上命令执行失败,请创建三个日志组(日志大小大小根据业务需求设置):

SQL>ALTER DATABASE ADD STANDBY LOGFILE GROUP 4 '/u01/app/oracle/oradata/boston/REDO04.LOG' size 50m;

SQL>ALTER DATABASE ADD STANDBY LOGFILE GROUP 5 '/u01/app/oracle/oradata/boston/REDO05.LOG' size 50m;

SQL>ALTER DATABASE ADD STANDBY LOGFILE GROUP 6 '/u01/app/oracle/oradata/boston/REDO06.LOG' size 50m;

  1. 至此物理备用数据库配置完成

SQL> SELECT SEQUENCE#, FIRST_TIME, NEXT_TIME FROM V$ARCHIVED_LOG ORDER BY SEQUENCE#; --在备用数据库上,查询V$ARCHIVED_LOG视图以标识归档重做日志中的现有文件

如需把物理备用数据库开到只读模式,执行以下语句

SQL>ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;

然后在SQLPLUS中执行

SQL>startup open read only