前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >基于同一主机配置 Oracle 11g Data Guard

基于同一主机配置 Oracle 11g Data Guard

作者头像
Leshami
发布2018-08-13 15:31:00
3970
发布2018-08-13 15:31:00
举报
文章被收录于专栏:乐沙弥的世界乐沙弥的世界

       Oracle Data Guard 为企业数据库提供了最有效和最全面的数据可用性、数据保护和灾难恢复解决方案。它集成管理、监视和自动化软件基础架构来创建和维护一个或多个同步备用数据库,从而保护数据不受故障、灾难、错误和损坏的影响。本文主要描述了在同一主机下如何配置Oracle Data Guard。

       有关DG的相关概念,可参考:Oracle Data Guard Concepts and Administration

       有关配置DG的参数描述,可参考:Oracle Data Guard 重要配置参数

1、创建DG的大致流程     a、主库启用归档与强制日志模式     b、主库配置redo传输服务(即相关参数配置)     c、主库及备库配置监听     d、为备库创建目录     e、配置备库密码文件及参数文件     f、复制数据文件,日志文件,备份控制文件到备库     g、启动备库并校验结果

2、演示创建物理备库

代码语言:javascript
复制
--演示环境
[oracle@linux3 ~]$ cat /etc/issue
Enterprise Linux Enterprise Linux Server release 5.5 (Carthage)
Kernel \r on an \m

[oracle@linux3 ~]$ sqlplus -v

SQL*Plus: Release 11.2.0.1.0 Production

--主库:sybo3
--备库: sybo5
--配置物理standby,使用最佳性能模式

a、主库前期准备
--查看主库的归档模式,如果为非归档模式应先切换到归档模式
--关于如何切换到归档模式可以参考:Oracle 归档日志 http://blog.csdn.net/robinson_0612/article/details/5784713
sys@SYBO3> select name,log_mode from v$database;

NAME      LOG_MODE
--------- ------------
SYBO3     ARCHIVELOG

--为备库准备pfile文件 
sys@SYBO3> create pfile=/u01/oracle/db_1/dbs/initsybo5.ora from spfile;

--使主库处于强制日志模式
sys@SYBO3> alter database force logging;

sys@SYBO3> select database_role from v$database;

DATABASE_ROLE
----------------
PRIMARY

--为主库添加standby redo log,简要描述一下standby redo log的作用
--实际上就是与主库接收到的重做日志相对应,也就是说备库调用RFS进程将从主库接收到的重做日志按顺序写入到standby logfile
--在主库创建standby logfile是便于发生角色转换后备用
--sandby redo log创建原则:
--a)、确保standby redo log的大小与主库online redo log的大小一致  
--b)、如主库为单实例数据库:standby redo log组数=主库日志组总数+1
--c)、如果主库是RAC数据库:standby redo log组数=(每线程的日志组数+1)*最大线程数
--d)、不建议复用standby redo log,避免增加额外的I/O以及延缓重做传输

sys@SYBO3> alter database add standby logfile ('/u01/database/sybo3/redo/standby_redo01.log') size 50m;

sys@SYBO3> alter database add standby logfile ('/u01/database/sybo3/redo/standby_redo02.log') size 50m;

sys@SYBO3> alter database add standby logfile ('/u01/database/sybo3/redo/standby_redo03.log') size 50m;

sys@SYBO3> alter database add standby logfile ('/u01/database/sybo3/redo/standby_redo04.log') size 50m;


b、修改主库参数文件
--使用下面的命令修改主库参数(此时主库应当使用spfile启动参数)
[oracle@linux3 ~]$ more ch_sp_sybo3.sql 
--Add below item when DB acts as primary role
alter system set db_unique_name='sybo3' scope=spfile;
alter system set log_archive_config='DG_CONFIG=(sybo3,sybo5)';
alter system set log_archive_dest_1='LOCATION=/u01/database/sybo3/arch db_unique_name=sybo3 valid_for=(ALL_LOGFILES,ALL_ROLES)';
alter system set log_archive_dest_2='SERVICE=sybo5 ASYNC db_unique_name=sybo5 valid_for=(ONLINE_LOGFILES,PRIMARY_ROLE)';
alter system set log_archive_dest_state_1=enable;
alter system set log_archive_dest_state_2=enable;
alter system set log_archive_max_processes=4;
alter system set remote_login_passwordfile='EXCLUSIVE' scope=spfile;

--Add below item when DB turn to standby role
alter system set db_file_name_convert='sybo5','sybo3' scope=spfile;
alter system set log_file_name_convert='sybo5','sybo3' scope=spfile;
alter system set standby_file_management='AUTO';
alter system set fal_server='sybo5';
alter system set fal_client='sybo3';

sys@SYBO3> @ch_sp_sybo3
sys@SYBO3> shutdown immediate;


c、配置主备库监听
--为主库和备库配置监听,整个DG的redo传输服务,都依赖于Oracle Net,因此需要为主备库配置监听
--配置方法多种多样,可用netmgr,netca,以及直接编辑listener.ora 与tnsnames.ora文件
--下面是配置之后的listener.ora 与tnsnames.ora文件内容
[oracle@linux3 ~]$ more /u01/oracle/db_1/network/admin/listener.ora 
# listener.ora Network Configuration File: /u01/oracle/db_1/network/admin/listener.ora
# Generated by Oracle configuration tools.

SID_LIST_LISTENER_SYBO5 =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = sybo5.orasrv.com)
      (ORACLE_HOME = /u01/oracle/db_1)
      (SID_NAME = sybo5)
    )
  )

SID_LIST_LISTENER_SYBO3 =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = sybo3.orasrv.com)
      (ORACLE_HOME = /u01/oracle/db_1)
      (SID_NAME = sybo3)
    )
  )

LISTENER_SYBO5 =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = linux3.orasrv.com)(PORT = 1532))
  )

ADR_BASE_LISTENER_SYBO5 = /u01/oracle

LISTENER_SYBO3 =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = linux3.orasrv.com)(PORT = 1531))
  )

ADR_BASE_LISTENER_SYBO3 = /u01/oracle  

[oracle@linux3 ~]$ more /u01/oracle/db_1/network/admin/tnsnames.ora   
# tnsnames.ora Network Configuration File: /u01/oracle/db_1/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.

SYBO5 =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.7.25)(PORT = 1532))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = SYBO5.ORASRV.COM)
    )
  )

SYBO3 =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.7.25)(PORT = 1531))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = SYBO3.ORASRV.COM)
    )
  )

--启动监听器并测试
[oracle@linux3 ~]$ lsnrctl start LISTENER_SYBO3
[oracle@linux3 ~]$ lsnrctl start LISTENER_SYBO5
[oracle@linux3 ~]$ tnsping sybo3
[oracle@linux3 ~]$ tnsping sybo5


d、为备库创建目录
--为备库创建相应的文件夹
[oracle@linux3 database]$ more sybo5.sh 
#!/bin/sh

mkdir -p /u01/database
mkdir -p /u01/database/sybo5/adump
mkdir -p /u01/database/sybo5/controlf
mkdir -p /u01/database/sybo5/fra
mkdir -p /u01/database/sybo5/oradata
mkdir -p /u01/database/sybo5/redo
mkdir -p /u01/database/sybo5/dpdump
mkdir -p /u01/database/sybo5/pfile
mkdir -p /u01/database/sybo5/arch
[oracle@linux3 database]$ ./sybo5.sh 


e、配置备库密码文件及参数文件
--由于要求主库与备库sys使用相同的密码,在此处,我们直接复制了主库的密码文件到备库
[oracle@linux3 ~]$ cp $ORACLE_HOME/dbs/orapwsybo3 $ORACLE_HOME/dbs/orapwsybo5

[oracle@linux3 ~]$ sed -i 's/sybo3/sybo5/g' $ORACLE_HOME/dbs/initsybo5.ora
---注意db_name的设置还是使用原来的sybo3,即修改回db_name='sybo3',同一DG中应设置相同的db_name

--下面是配置之后的备库参数文件,仅列出修改部分,如果原来pfile文件中有相同的条目,可以将其之前的注释或删除
[oracle@linux3 ~]$ tail -20 $ORACLE_HOME/dbs/initsybo5.ora
db_unique_name=sybo5
log_archive_config='DG_CONFIG=(sybo3,sybo5)'
log_archive_dest_1='LOCATION=/u01/database/sybo5/arch db_unique_name=sybo5 valid_for=(ALL_LOGFILES,ALL_ROLES)'
log_archive_dest_2='SERVICE=sybo3 ASYNC db_unique_name=sybo3 valid_for=(ONLINE_LOGFILES,PRIMARY_ROLE)'  
log_archive_dest_state_1=enable
log_archive_dest_state_2=enable
db_file_name_convert='sybo3','sybo5'
log_file_name_convert='sybo3','sybo5'
standby_file_management='AUTO'
fal_server='sybo3'
fal_client='sybo5'
log_archive_max_processes=4
remote_login_passwordfile='EXCLUSIVE'


f、复制数据文件,日志文件,备份控制文件到备库
--对于从主库克隆standby有多种方法,而且Oracle 11g支持从ative database直接克隆数据库
--由于在同一主机,因此此次操作直接使用冷备方式将数据及日志文件复制到备库目录
[oracle@linux3 ~]$ cp /u01/database/sybo3/oradata/* /u01/database/sybo5/oradata/
[oracle@linux3 ~]$ cp /u01/database/sybo3/redo/* /u01/database/sybo5/redo/       

--启动主库到mount状态
sys@SYBO3> startup mount;

--为主库生成控制文件,注,对于配置standby,不能直接使用copy方式复制控制文件到备库
sys@SYBO3> alter database create standby controlfile as '/u01/database/sybo5/controlf/control01.ctl';

sys@SYBO3> ho cp /u01/database/sybo5/controlf/control01.ctl /u01/database/sybo5/controlf/control02.ctl    

--Author : Robinson Cheng
--Blog   : http://blog.csdn.net/robinson_0612

--打开主库
sys@SYBO3> alter database open;


g、启动备库到mount状态并校验结果
[oracle@linux3 ~]$ export ORACLE_SID=sybo5
[oracle@linux3 ~]$ sqlplus / as sysdba
sys@SYBO5> startup mount pfile=/u01/oracle/db_1/dbs/initsybo5.ora  

--为备库生成spfile文件
sys@SYBO5> create spfile from pfile;

sys@SYBO5> show parameter instance_name

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
instance_name                        string      sybo5

sys@SYBO5> select name,open_mode,database_role,protection_mode from v$database;

NAME      OPEN_MODE            DATABASE_ROLE    PROTECTION_MODE
--------- -------------------- ---------------- --------------------
SYBO3     MOUNTED              PHYSICAL STANDBY MAXIMUM PERFORMANCE

--在主库端进行日志切换
sys@SYBO3> ALTER SYSTEM SWITCH LOGFILE;

sys@SYBO3> ALTER SYSTEM SWITCH LOGFILE;

--在备库端启动redo apply
sys@SYBO5> alter database recover managed standby database disconnect from session;

--查看日志被apply的结果
sys@SYBO5> select sequence#, first_time, next_time,applied from v$archived_log order by sequence#;

SEQUENCE# FIRST_TIM NEXT_TIME APPLIED
---------- --------- --------- ---------
       113 12-AUG-13 12-AUG-13 YES
       114 12-AUG-13 12-AUG-13 YES
       115 12-AUG-13 12-AUG-13 YES
       116 12-AUG-13 12-AUG-13 YES
       117 12-AUG-13 12-AUG-13 YES
        
--查看主库端
sys@SYBO3> select * from (
  2  select sequence#, first_time, next_time,applied from v$archived_log order by sequence# desc)
  3  where rownum<5;

 SEQUENCE# FIRST_TIM NEXT_TIME APPLIED
---------- --------- --------- ---------
       117 12-AUG-13 13-AUG-13 YES
       116 12-AUG-13 12-AUG-13 YES
       115 12-AUG-13 12-AUG-13 YES
       114 12-AUG-13 12-AUG-13 YES
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2013年08月15日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档