千家信息网

怎么搭建dataguard

发表于:2024-11-24 作者:千家信息网编辑
千家信息网最后更新 2024年11月24日,本篇内容主要讲解"怎么搭建dataguard",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"怎么搭建dataguard"吧!此方案适合于生产运营中的数据库,
千家信息网最后更新 2024年11月24日怎么搭建dataguard

本篇内容主要讲解"怎么搭建dataguard",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"怎么搭建dataguard"吧!

此方案适合于生产运营中的数据库,DB 服务器停机时间非常苛刻,或无法停机维护的情况下,如支付,电商等业务,可通过该方案在线部署Dataguard,对客户系统无任何影响。

一、基础信息

操作系统:windows2008

数据库:11.2.0.3

配置信息:

说明主机名IP地址db_namesidDB_UNIQUE_NAMEService_name
主库dg1192.168.16.14orclorclorclorcl
备库dg2192.168.16.15orclorclorclbakorclbak

二、准备工作

按照要求创建相应的主数据库和备用数据库,并删除备用数据库的数据文件、控制文件,两个数据库的所有路径需要一致;

三、搭建数据库

主库的操作:

1.确认主库参数

SQL> select name,open_mode,database_role,log_mode,force_logging from v$database;NAME      OPEN_MODE            DATABASE_ROLE    LOG_MODE     FOR--------- -------------------- ---------------- ------------ ---ORCL      READ WRITE           PRIMARY          ARCHIVELOG   YESSQL> show parameter nameNAME                                 TYPE        VALUE------------------------------------ ----------- ------------------------------db_file_name_convert                 stringdb_name                              string      orcldb_unique_name                       string      orclglobal_names                         boolean     FALSEinstance_name                        string      orcllock_name_space                      stringlog_file_name_convert                stringprocessor_group_name                 stringservice_names                        string      orcl

2.设置数据库的归档模式

SQL> archive log list;数据库日志模式            存档模式自动存档             启用存档终点            E:\u01\fast_recovery_area\orcl最早的联机日志序列     833下一个存档日志序列   835当前日志序列           835

归档模式的设置:

1、shutdown abort;2、alter database mount;3、alter database archive log;4、alter database open;3.开启force loggingSQL> alter database force logging;SQL> select name,DB_UNIQUE_NAME,database_role,log_mode,force_logging from v$database;NAME      DB_UNIQUE_NAME                 DATABASE_ROLE    LOG_MODE     FOR--------- ------------------------------ ---------------- ------------ ---ORCL      orcl                           PRIMARY          ARCHIVELOG   YES

4.主库配置监听

SID_LIST_LISTENER =  (SID_LIST =    (SID_DESC =      (SID_NAME = CLRExtProc)      (ORACLE_HOME = E:\u01\product\11.2.0\dbhome_1)      (PROGRAM = extproc)      (ENVS = "EXTPROC_DLLS=ONLY:E:\u01\product\11.2.0\dbhome_1\bin\oraclr11.dll")    )  )LISTENER =  (DESCRIPTION_LIST =    (DESCRIPTION =      (ADDRESS = (PROTOCOL = TCP)(HOST = WIN-QS00S09CJ12)(PORT = 1521))      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))    )  )ADR_BASE_LISTENER = E:\u01

5.配置主库的TNSNAMES.ORA并和密码文件一起传到备库

# tnsnames.ora Network Configuration File: E:\u01\product\11.2.0\dbhome_1\NETWORK\ADMIN\tnsnames.ora# Generated by Oracle configuration tools.ORCL=  (DESCRIPTION =    (ADDRESS_LIST =      (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))    )    (CONNECT_DATA =      (SERVER = DEDICATED)      (SID = ORCL)      (UR=A)      )  )ORCLBAK =  (DESCRIPTION =    (ADDRESS_LIST =      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.14.15)(PORT = 1521))    )    (CONNECT_DATA =      (SERVICE_NAME = orclbak)      (UR=A)    --这里记得加这个,否无法连接nomount状态下备库    )  )

传输监听文件到备库:

6.修改主库pfile参数

--前提是采用spfile启动,并且业务不能停,可用下列命令动态设置:

ALTER SYSTEM SET LOG_ARCHIVE_CONFIG='DG_CONFIG=(orcl,orclbak)'   ALTER SYSTEM SET LOG_ARCHIVE_DEST_1= 'LOCATION=E:\u01\fast_recovery_area\orcl VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=orcl' ALTER SYSTEM SET LOG_ARCHIVE_DEST_2='SERVICE=orclbak  LGWR ASYNC affirm VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=orclbak' ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_1='ENABLE';                     ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_2='DEFER';   --这里先设置关闭                                                                                                                                          ALTER SYSTEM SET STANDBY_FILE_MANAGEMENT='AUTO';            ALTER SYSTEM SET FAL_SERVER=orclbak;   ALTER SYSTEM SET FAL_CLIENT=orcl;    下面是可选,如果路相同,忽略下面操作:  ALTER SYSTEM SET DB_FILE_NAME_CONVERT='E:\u01\oradata\orcl','E:\u01\oradata\orcl' scope=spfile;ALTER SYSTEM SET LOG_FILE_NAME_CONVERT='E:\u01\oradata\orcl','E:\u01\oradata\orcl' scope=spfile;

7.全备主库,并传输备份集到备库的相同位置

run{ allocate channel c0 device type disk; allocate channel c1 device type disk; CONFIGURE CONTROLFILE AUTOBACKUP ON; CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO 'e:\orabak\rman/%F'; backup  database format 'e:\orabak\ora11g_full_db_%d_%T_%u.bak'; BACKUP ARCHIVELOG ALL FORMAT 'e:\orabak\ora11g_arc_%s_%p_%t.bak'; }

8.修改备库参数并将备库启动至nomount状态(参考主库进行,主要是service_name要反过来)

DB_UNIQUE_NAME=orclbakLOG_ARCHIVE_CONFIG='DG_CONFIG=(orcl,orclbak)' LOG_ARCHIVE_DEST_1= 'LOCATION=E:\u01\fast_recovery_area\orcl VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=orclbak' LOG_ARCHIVE_DEST_2= 'SERVICE=orcl  LGWR ASYNC affirm VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=orcl' LOG_ARCHIVE_DEST_STATE_1=ENABLE LOG_ARCHIVE_DEST_STATE_2=ENABLE LOG_ARCHIVE_FORMAT=%t_%s_%r.arc FAL_SERVER=orclFAL_CLIENT=orclbakSTANDBY_FILE_MANAGEMENT=AUTO

9.启动备库监听

# listener.ora Network Configuration File: E:\u01\product\11.2.0\dbhome_1\network\admin\listener.ora# Generated by Oracle configuration tools.SID_LIST_LISTENER =  (SID_LIST =    (SID_DESC =      (SID_NAME = CLRExtProc)      (ORACLE_HOME = E:\u01\product\11.2.0\dbhome_1)      (PROGRAM = extproc)      (ENVS = "EXTPROC_DLLS=ONLY:E:\u01\product\11.2.0\dbhome_1\bin\oraclr11.dll")    )  )LISTENER =  (DESCRIPTION_LIST =    (DESCRIPTION =      (ADDRESS = (PROTOCOL = TCP)(HOST = WIN-4GH7UKQEEOC)(PORT = 1521))      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))    )  )SID_LIST_LISTENER = (SID_LIST =   (SID_DESC =     (GLOBAL_DBNAME = orcl)     (ORACLE_HOME = E:\u01\product\11.2.0\dbhome_1)     (SID_NAME = orcl)   ) )ADR_BASE_LISTENER = E:\u01

10.进行备库的恢复

C:\Users\Administrator>rman target /恢复管理器: Release 11.2.0.3.0 - Production on 星期五 2月 26 17:35:52 2016Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.已连接到目标数据库: ORCL (DBID=1389423916)RMAN>  connect  auxiliary sys/*******@orclbak已连接到辅助数据库: ORCL (未装载)

开始复制数据库:

RMAN> duplicate target database for standby nofilenamecheck;启动 Duplicate Db 于 26-2月 -16使用目标数据库控制文件替代恢复目录分配的通道: ORA_AUX_DISK_1通道 ORA_AUX_DISK_1: SID=2091 设备类型=DISK内存脚本的内容:{   restore clone standby controlfile;}正在执行内存脚本启动 restore 于 26-2月 -16使用通道 ORA_AUX_DISK_1通道 ORA_AUX_DISK_1: 正在开始还原数据文件备份集通道 ORA_AUX_DISK_1: 正在还原控制文件通道 ORA_AUX_DISK_1: 正在读取备份片段 D:\ORABAK\C-1389423916-20160226-00通道 ORA_AUX_DISK_1: 段句柄 = D:\ORABAK\C-1389423916-20160226-00 标记 = TAG20160226T140701通道 ORA_AUX_DISK_1: 已还原备份片段 1通道 ORA_AUX_DISK_1: 还原完成, 用时: 00:00:04输出文件名=E:\U01\ORADATA\ORCL\CONTROL01.CTL完成 restore 于 26-2月 -16内存脚本的内容:{   sql clone 'alter database mount standby database';}正在执行内存脚本sql 语句: alter database mount standby database内存脚本的内容:{   set newname for tempfile  1 to "E:\U01\ORADATA\ORCL\TEMP01.DBF";   switch clone tempfile all;   set newname for datafile  1 to "E:\U01\ORADATA\ORCL\SYSTEM01.DBF";   set newname for datafile  2 to "E:\U01\ORADATA\ORCL\SYSAUX01.DBF";   set newname for datafile  3 to "E:\U01\ORADATA\ORCL\UNDOTBS01.DBF";   set newname for datafile  4 to "E:\U01\ORADATA\ORCL\USERS01.DBF";   set newname for datafile  5 to "E:\U01\ORADATA\ORCL\GIS01.DBF";   set newname for datafile  6 to "E:\U01\ORADATA\ORCL\GIS02.DBF";   set newname for datafile  7 to "E:\U01\ORADATA\ORCL\GIS03.DBF";   set newname for datafile  8 to "E:\U01\ORADATA\ORCL\GIS04.DBF";   set newname for datafile  9 to "E:\U01\ORADATA\ORCL\GIS05.DBF";   set newname for datafile  10 to "E:\U01\ORADATA\ORCL\GIS06.DBF";   set newname for datafile  11 to "E:\U01\ORADATA\ORCL\GIS07.DBF";   set newname for datafile  12 to "E:\U01\ORADATA\ORCL\GIS08.DBF";   set newname for datafile  13 to "E:\U01\ORADATA\ORCL\GIS09.DBF";   set newname for datafile  14 to "E:\U01\ORADATA\ORCL\GIS10.DBF";   restore   clone database   ;}正在执行内存脚本正在执行命令: SET NEWNAME临时文件 1 在控制文件中已重命名为 E:\U01\ORADATA\ORCL\TEMP01.DBF正在执行命令: SET NEWNAME正在执行命令: SET NEWNAME正在执行命令: SET NEWNAME正在执行命令: SET NEWNAME正在执行命令: SET NEWNAME正在执行命令: SET NEWNAME正在执行命令: SET NEWNAME正在执行命令: SET NEWNAME正在执行命令: SET NEWNAME正在执行命令: SET NEWNAME正在执行命令: SET NEWNAME正在执行命令: SET NEWNAME正在执行命令: SET NEWNAME正在执行命令: SET NEWNAME启动 restore 于 26-2月 -16使用通道 ORA_AUX_DISK_1通道 ORA_AUX_DISK_1: 正在开始还原数据文件备份集通道 ORA_AUX_DISK_1: 正在指定从备份集还原的数据文件通道 ORA_AUX_DISK_1: 将数据文件 00001 还原到 E:\U01\ORADATA\ORCL\SYSTEM01.DBF通道 ORA_AUX_DISK_1: 将数据文件 00002 还原到 E:\U01\ORADATA\ORCL\SYSAUX01.DBF通道 ORA_AUX_DISK_1: 将数据文件 00006 还原到 E:\U01\ORADATA\ORCL\GIS02.DBF通道 ORA_AUX_DISK_1: 将数据文件 00008 还原到 E:\U01\ORADATA\ORCL\GIS04.DBF通道 ORA_AUX_DISK_1: 将数据文件 00010 还原到 E:\U01\ORADATA\ORCL\GIS06.DBF通道 ORA_AUX_DISK_1: 将数据文件 00012 还原到 E:\U01\ORADATA\ORCL\GIS08.DBF通道 ORA_AUX_DISK_1: 将数据文件 00014 还原到 E:\U01\ORADATA\ORCL\GIS10.DBF通道 ORA_AUX_DISK_1: 正在读取备份片段 D:\ORABAK\ORCL_FULL_DB_ORCL_20160226_39QUSTI8.BAK通道 ORA_AUX_DISK_1: 段句柄 = D:\ORABAK\ORCL_FULL_DB_ORCL_20160226_39QUSTI8.BAK 标记 = TAG20160226T105816通道 ORA_AUX_DISK_1: 已还原备份片段 1通道 ORA_AUX_DISK_1: 还原完成, 用时: 02:08:38通道 ORA_AUX_DISK_1: 正在开始还原数据文件备份集通道 ORA_AUX_DISK_1: 正在指定从备份集还原的数据文件通道 ORA_AUX_DISK_1: 将数据文件 00003 还原到 E:\U01\ORADATA\ORCL\UNDOTBS01.DBF通道 ORA_AUX_DISK_1: 将数据文件 00004 还原到 E:\U01\ORADATA\ORCL\USERS01.DBF通道 ORA_AUX_DISK_1: 将数据文件 00005 还原到 E:\U01\ORADATA\ORCL\GIS01.DBF通道 ORA_AUX_DISK_1: 将数据文件 00007 还原到 E:\U01\ORADATA\ORCL\GIS03.DBF通道 ORA_AUX_DISK_1: 将数据文件 00009 还原到 E:\U01\ORADATA\ORCL\GIS05.DBF通道 ORA_AUX_DISK_1: 将数据文件 00011 还原到 E:\U01\ORADATA\ORCL\GIS07.DBF通道 ORA_AUX_DISK_1: 将数据文件 00013 还原到 E:\U01\ORADATA\ORCL\GIS09.DBF通道 ORA_AUX_DISK_1: 正在读取备份片段 D:\ORABAK\ORCL_FULL_DB_ORCL_20160226_38QUSTI8.BAK通道 ORA_AUX_DISK_1: 段句柄 = D:\ORABAK\ORCL_FULL_DB_ORCL_20160226_38QUSTI8.BAK 标记 = TAG20160226T105816通道 ORA_AUX_DISK_1: 已还原备份片段 1通道 ORA_AUX_DISK_1: 还原完成, 用时: 02:36:38完成 restore 于 26-2月 -16内存脚本的内容:{   switch clone datafile all;}正在执行内存脚本数据文件 1 已转换成数据文件副本输入数据文件副本 RECID=2 STAMP=904861333 文件名=E:\U01\ORADATA\ORCL\SYSTEM01.DBF数据文件 2 已转换成数据文件副本输入数据文件副本 RECID=3 STAMP=904861334 文件名=E:\U01\ORADATA\ORCL\SYSAUX01.DBF数据文件 3 已转换成数据文件副本输入数据文件副本 RECID=4 STAMP=904861334 文件名=E:\U01\ORADATA\ORCL\UNDOTBS01.DBF数据文件 4 已转换成数据文件副本输入数据文件副本 RECID=5 STAMP=904861334 文件名=E:\U01\ORADATA\ORCL\USERS01.DBF数据文件 5 已转换成数据文件副本输入数据文件副本 RECID=6 STAMP=904861334 文件名=E:\U01\ORADATA\ORCL\GIS01.DBF数据文件 6 已转换成数据文件副本输入数据文件副本 RECID=7 STAMP=904861334 文件名=E:\U01\ORADATA\ORCL\GIS02.DBF数据文件 7 已转换成数据文件副本输入数据文件副本 RECID=8 STAMP=904861334 文件名=E:\U01\ORADATA\ORCL\GIS03.DBF数据文件 8 已转换成数据文件副本输入数据文件副本 RECID=9 STAMP=904861334 文件名=E:\U01\ORADATA\ORCL\GIS04.DBF数据文件 9 已转换成数据文件副本输入数据文件副本 RECID=10 STAMP=904861335 文件名=E:\U01\ORADATA\ORCL\GIS05.DBF数据文件 10 已转换成数据文件副本输入数据文件副本 RECID=11 STAMP=904861335 文件名=E:\U01\ORADATA\ORCL\GIS06.DBF数据文件 11 已转换成数据文件副本输入数据文件副本 RECID=12 STAMP=904861335 文件名=E:\U01\ORADATA\ORCL\GIS07.DBF数据文件 12 已转换成数据文件副本输入数据文件副本 RECID=13 STAMP=904861335 文件名=E:\U01\ORADATA\ORCL\GIS08.DBF数据文件 13 已转换成数据文件副本输入数据文件副本 RECID=14 STAMP=904861335 文件名=E:\U01\ORADATA\ORCL\GIS09.DBF数据文件 14 已转换成数据文件副本输入数据文件副本 RECID=15 STAMP=904861335 文件名=E:\U01\ORADATA\ORCL\GIS10.DBF完成 Duplicate Db 于 26-2月 -16

12.将主库的LOG_ARCHIVE_DEST_STATE_2设置为ENABLE

ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_2='ENABLE';

13.添加standby redo log --如本身主库已建立standby redo log,此步骤可省去

SQL> select member from v$logfile;

#主库增加 STANDBY LOGFILE

ALTER DATABASE ADD STANDBY LOGFILE group 4('E:\u01\oradata\standby_log\slog1.rdo') SIZE 200M;ALTER DATABASE ADD STANDBY LOGFILE group 5('E:\u01\oradata\standby_log\slog2.rdo') SIZE 200M;ALTER DATABASE ADD STANDBY LOGFILE group 6('E:\u01\oradata\standby_log\slog3.rdo') SIZE 200M;ALTER DATABASE ADD STANDBY LOGFILE group 7('E:\u01\oradata\standby_log\slog4.rdo') SIZE 200M;

#备库增加STANDBY LOGFILE

SQL> select member from v$logfile;

ALTER DATABASE ADD STANDBY LOGFILE group 4('E:\u01\oradata\standby_log\slog1.rdo') SIZE 200M;ALTER DATABASE ADD STANDBY LOGFILE group 5('E:\u01\oradata\standby_log\slog2.rdo') SIZE 200M;ALTER DATABASE ADD STANDBY LOGFILE group 6('E:\u01\oradata\standby_log\slog3.rdo') SIZE 200M;ALTER DATABASE ADD STANDBY LOGFILE group 7('E:\u01\oradata\standby_log\slog4.rdo') SIZE 200M;

14.最后在备库开启active dataguard

SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM SESSION;SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;  SQL> ALTER DATABASE OPEN;SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM SESSION;

到此,相信大家对"怎么搭建dataguard"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

0