设为首页 收藏本站
查看: 920|回复: 0

[经验分享] 基于同一主机配置 Oracle 11g Data Guard

[复制链接]

尚未签到

发表于 2016-7-21 12:35:35 | 显示全部楼层 |阅读模式
   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、演示创建物理备库

--演示环境
[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

  
DSC0000.png
  更多参考
有关Oracle RAC请参考
使用crs_setperm修改RAC资源的所有者及权限
使用crs_profile管理RAC资源配置文件
RAC 数据库的启动与关闭
再说 Oracle RAC services
Services in Oracle Database 10g
Migrate datbase from single instance to Oracle RAC
Oracle RAC 连接到指定实例
Oracle RAC 负载均衡测试(结合服务器端与客户端)
Oracle RAC 服务器端连接负载均衡(Load Balance)
Oracle RAC 客户端连接负载均衡(Load Balance)
ORACLE RAC 下非缺省端口监听配置(listener.ora tnsnames.ora)
ORACLE RAC 监听配置 (listener.ora tnsnames.ora)
配置 RAC 负载均衡与故障转移
CRS-1006 , CRS-0215 故障一例
基于Linux (RHEL 5.5) 安装Oracle 10g RAC
使用 runcluvfy 校验Oracle RAC安装环境
  有关Oracle 网络配置相关基础以及概念性的问题请参考:
配置非默认端口的动态服务注册
配置sqlnet.ora限制IP访问Oracle
Oracle 监听器日志配置与管理
设置 Oracle 监听器密码(LISTENER)
配置ORACLE 客户端连接到数据库
  有关基于用户管理的备份和备份恢复的概念请参考
Oracle 冷备份
Oracle 热备份
Oracle 备份恢复概念
Oracle 实例恢复
Oracle 基于用户管理恢复的处理
SYSTEM 表空间管理及备份恢复
SYSAUX表空间管理及恢复
Oracle 基于备份控制文件的恢复(unsing backup controlfile)
  有关RMAN的备份恢复与管理请参考
RMAN 概述及其体系结构
RMAN 配置、监控与管理
RMAN 备份详解
RMAN 还原与恢复
RMAN catalog 的创建和使用
基于catalog 创建RMAN存储脚本
基于catalog 的RMAN 备份与恢复
RMAN 备份路径困惑
使用RMAN实现异机备份恢复(WIN平台)
使用RMAN迁移文件系统数据库到ASM
linux 下RMAN备份shell脚本
使用RMAN迁移数据库到异机
  有关ORACLE体系结构请参考
Oracle 表空间与数据文件
Oracle 密码文件
Oracle 参数文件
Oracle 联机重做日志文件(ONLINE LOG FILE)
Oracle 控制文件(CONTROLFILE)
Oracle 归档日志
Oracle 回滚(ROLLBACK)和撤销(UNDO)
Oracle 数据库实例启动关闭过程
Oracle 10g SGA 的自动化管理
Oracle 实例和Oracle数据库(Oracle体系结构)

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-247431-1-1.html 上篇帖子: java JDBC连接& 操作oracle数据库 东海陈光剑 下篇帖子: oracle 9i/10g/11g安装包和PATCH下载地址汇总
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表