Oracle 10g R2 之DataGuard物理standby 配置

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介:

 一、  Oracle Data Guard 的简单介绍

     DATA GUARD的最主要的功能是冗灾。当然根据配置的不同,DATA GUARD具备以下特点:高可用、性能提升、数据保护以及故障恢复等。

    DATA GUARD可以分为物理STANDBY和逻辑STANDBY两种。二者的最大差别在于,物理STANDBY应用的是主库的归档日志,而逻辑STANDBY应用的是主库的归档日志中提取的SQL语句。由于二者这一点的区别,决定了物理STANDBY无论从逻辑结构和物理结构都是和主库保持一致,而逻辑STANDBY则只需保证逻辑结构一致,且逻辑STANDBY在应用SQL语句的时候,数据库可以处于打开的状态。

    如果从DATA GUARD的保护模式分,可以分为三种不同的保护模式:

    保护最大化:这种模式的配置可以保证主库和备库的同步,任何情况下主库的损毁都不会导致已提交数据的丢失。如果主库和备库之间的网络出现问题,或者备库本身出现问题,都会导致主库停止数据处理。

    可用最大化:这种模式和上面一种类似,也是会保证主库和备库的同步,区别在于,当网络或备库不可用时,主库仍然可以继续处理。

    性能最大化:主库和备库是异步的。这种模式可能在主库出现损毁时,丢失一部分数据。但是这种模式对主库负荷最小,因此具有最好的性能。

关于DATA GUARD 的介绍请参考Oracle 官方网站,本文主要是介绍如何配置物理 STANDBY

二、  相关参数说明

 主库:

[主机名-dg1.andylhz.com,IP地址-192.168.1.254,实例名-dg,唯一数据库名-dgpNET服务名-dgp]

备库:

[主机名-dg2.andylhz.com,IP地址-192.168.1.253,实例名-dg,唯一数据库名-dgsNET服务名-dgs]

三、配置数据库启用归档

 

因为在安装数据的是一开始就启用了归档,在这里就省略此步骤,不过作为文档就有必要写出操作步骤如下:

SQL>archive log list  看是否启用归档?

如果没有就关闭数据库,并启动到mount的状态,

SQL>startup mount

SQL>alter database archivelog;  启用归档功能。

SQL>archive log list 确认结果如图:

四、为主数据库添加备用联机日志文件

 

SQL> alter database add standby logfile group 4

('/u01/app/oracle/oradata/dg/redo04.log') size 50m;

 

SQL> alter database add standby logfile group 5

('/u01/app/oracle/oradata/dg/redo05.log') size 50m;

 

SQL> alter database add standby logfile group 6

('/u01/app/oracle/oradata/dg/redo06.log') size 50m;

五、修改主库参数文件

SQL> create pfile from spfile;

文件创建以后可以在$ORACLE_HOME/dbs下找到initdg.ora

vi  initdg.ora  #标记红色部分为天加的参数

dg.__db_cache_size=83886080

dg.__java_pool_size=4194304

dg.__large_pool_size=4194304

dg.__shared_pool_size=71303168

dg.__streams_pool_size=0

*.audit_file_dest='/u01/app/oracle/admin/dg/adump'

*.background_dump_dest='/u01/app/oracle/admin/dg/bdump'

*.compatible='10.2.0.1.0'

*.control_files='/u01/app/oracle/oradata/dg/control01.ctl','/u01/app/oracle/oradata/dg/control02.ctl','/u01/app/oracle/oradata/dg/control03.ctl'

*.core_dump_dest='/u01/app/oracle/admin/dg/cdump'

*.db_block_size=8192

*.db_domain=''

*.db_file_multiblock_read_count=16

*.db_name='dg'

*.db_recovery_file_dest='/u01/app/oracle/flash_recovery_area'

*.db_recovery_file_dest_size=2147483648

*.dispatchers='(PROTOCOL=TCP) (SERVICE=dgXDB)'

*.job_queue_processes=10

*.log_archive_format='%t_%s_%r.dbf'

*.open_cursors=300

*.pga_aggregate_target=16777216

*.processes=150

*.remote_login_passwordfile='EXCLUSIVE'

*.sga_target=167772160

*.undo_management='AUTO'

*.undo_tablespace='UNDOTBS1'

*.user_dump_dest='/u01/app/oracle/admin/dg/udump'

*.DB_UNIQUE_NAME='dgp'

*.log_archive_config='DG_CONFIG=(dgp,dgs)'

*.log_archive_dest_1='location=/u01/app/oracle/oradata/dg/archive/ VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=dgp'

*.log_archive_dest_2='SERVICE=dgs arch ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=dgs'

#standby角色转换的参数

*.STANDBY_FILE_MANAGEMENT=AUTO

*.LOG_ARCHIVE_DEST_STATE_1=ENABLE

*.LOG_ARCHIVE_DEST_STATE_2=ENABLE

*.FAL_SERVER='dgs'

*.FAL_CLIENT='dgp'

修改完后保存退出。

关闭主数据库

再用sys 用户连接到数据库,根据修改过的pfile 文件创建 spfile 文件

SQL> shutdown immediate;

Database dismounted.

ORACLE instance shut down.

SQL> create pfile from spfile;

File created.

六、建立备用库的控制文件

SQL> alter database create standby controlfile as '/home/oracle/standby.ctl';


[oracle@dg1 ~]$ cat /u01/app/oracle/10g/network/admin/listener.ora

# listener.ora Network Configuration File: /u01/app/oracle/10g/network/admin/listener.ora

# Generated by Oracle configuration tools.

SID_LIST_LISTENER =

  (SID_LIST =

    (SID_DESC =

      (SID_NAME = PLSExtProc)

      (ORACLE_HOME = /u01/app/oracle/10g)

      (PROGRAM = extproc)

    )

    (SID_DESC =

      (GLOBAL_DBNAME = dg)

      (ORACLE_HOME = /u01/app/oracle/10g)

      (SID_NAME = dg)

    )

  )  

LISTENER =

  (DESCRIPTION_LIST =

    (DESCRIPTION =

      (ADDRESS = (PROTOCOL = TCP)(HOST = dg1.andylhz.com)(PORT = 1521))

#(ADDRESS = (PROTOCOL = TCP)(HOST = dg2.andylhz.com)(PORT = 1521))

#在进行switchover 的时候需要将此设置更改

    )

    (DESCRIPTION =

      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))

    )

  )  

[oracle@dg1 ~]$ cat /u01/app/oracle/10g/network/admin/listener.ora

# listener.ora Network Configuration File: /u01/app/oracle/10g/network/admin/listener.ora

# Generated by Oracle configuration tools.

SID_LIST_LISTENER =

  (SID_LIST =

    (SID_DESC =

      (SID_NAME = PLSExtProc)

      (ORACLE_HOME = /u01/app/oracle/10g)

      (PROGRAM = extproc)

    )

    (SID_DESC =

      (GLOBAL_DBNAME = dg)

      (ORACLE_HOME = /u01/app/oracle/10g)

      (SID_NAME = dg)

    )

  )

LISTENER =

  (DESCRIPTION_LIST =

    (DESCRIPTION =

      (ADDRESS = (PROTOCOL = TCP)(HOST = dg1.andylhz.com)(PORT = 1521))

    )

    (DESCRIPTION =

      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))

    )

  )

[oracle@dg1 ~]$ cat /u01/app/oracle/10g/network/admin/tnsnames.ora

# tnsnames.ora Network Configuration File: /u01/app/oracle/10g/network/admin/tnsnames.ora

# Generated by Oracle configuration tools.

DGP =

  (DESCRIPTION =

    (ADDRESS_LIST =

      (ADDRESS = (PROTOCOL = TCP)(HOST = dg1.andylhz.com)(PORT = 1521))

    )

    (CONNECT_DATA =

      (SERVICE_NAME = dg)

    )

  )

DGS =

  (DESCRIPTION =

    (ADDRESS_LIST =

      (ADDRESS = (PROTOCOL = TCP)(HOST = dg2.andylhz.com)(PORT = 1521))

#(ADDRESS = (PROTOCOL = TCP)(HOST = dg1.andylhz.com)(PORT = 1521))

#在进行switchover 的时候需要将此设置更改

    )

    (CONNECT_DATA =

      (SERVICE_NAME = dg)

    )

  )  

EXTPROC_CONNECTION_DATA =

  (DESCRIPTION =

    (ADDRESS_LIST =

      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))

    )

    (CONNECT_DATA =

      (SID = PLSExtProc)

      (PRESENTATION = RO)

    )

  )

八、复制相关文件到备机相应的位置

我在另外的备机上的oracle软件的安装和主库安装位置是一样的。

所以将主库的数据文件standby控制文件参数文件initdg.ora listener tnsnames 文件,密码文件等复制到备库的相应位置:如下

[oracle@dg1 ~]$ cd /u01/app/oracle/

[oracle@dg1 oracle]$ ll

total 16

drwxr-xr-x  55 oracle oinstall 4096 Jan 23 02:33 10g

drwxr-x---   3 oracle oinstall 4096 Jan 23 02:05 admin

drwxr-x---   3 oracle oinstall 4096 Jan 23 02:06 flash_recovery_area

drwxr-x---   3 oracle oinstall 4096 Jan 23 02:05 oradata

standby 控制文件 重命名control01.ctl  control02.ctl  control03.ctl

[oracle@dg2 oradata]$ cd /u01/app/oracle/

[oracle@dg2 oracle]$ ll

total 16

drwxr-xr-x  54 oracle oinstall 4096 Jan 15 16:52 10g

drwxr-x---   3 oracle oinstall 4096 Jan 23 02:48 admin

drwxr-x---   4 oracle oinstall 4096 Jan 23 03:17 flash_recovery_area

drwxr-x---   3 oracle oinstall 4096 Jan 23 02:48 oradata  

九、修改备库参数文件和listenertnsnames文件

[oracle@dg2 oradata]$ vi /u01/app/oracle/10g/dbs/initdg.ora  #标记红色部分为天加的参数

dg.__db_cache_size=83886080

dg.__java_pool_size=4194304

dg.__large_pool_size=4194304

dg.__shared_pool_size=71303168

dg.__streams_pool_size=0

*.audit_file_dest='/u01/app/oracle/admin/dg/adump'

*.background_dump_dest='/u01/app/oracle/admin/dg/bdump'

*.compatible='10.2.0.1.0'

*.control_files='/u01/app/oracle/oradata/dg/control01.ctl','/u01/app/oracle/oradata/dg/control02.ctl','/u01/app/oracle/oradata/dg/control03.ctl'

*.core_dump_dest='/u01/app/oracle/admin/dg/cdump'

*.db_block_size=8192

*.db_domain=''

*.db_file_multiblock_read_count=16

*.db_name='dg'

*.db_recovery_file_dest='/u01/app/oracle/flash_recovery_area'

*.db_recovery_file_dest_size=2147483648

*.dispatchers='(PROTOCOL=TCP) (SERVICE=dgXDB)'

*.job_queue_processes=10

*.log_archive_format='%t_%s_%r.dbf'

*.open_cursors=300

*.pga_aggregate_target=16777216

*.processes=150

*.remote_login_passwordfile='EXCLUSIVE'

*.sga_target=167772160

*.undo_management='AUTO'

*.undo_tablespace='UNDOTBS1'

*.user_dump_dest='/u01/app/oracle/admin/dg/udump'  

*.DB_UNIQUE_NAME='dgs'
*.log_archive_config='DG_CONFIG=(10gpri,10gstandby)'
*.log_archive_dest_1='location=/u01/app/oracle/oradata/dg/archive/ VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=10gstandby'
*.log_archive_dest_2='SERVICE=dgp arch ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=dgp'

#standby角色转换的参数
*.STANDBY_FILE_MANAGEMENT=AUTO
*.LOG_ARCHIVE_DEST_STATE_1=ENABLE
*.LOG_ARCHIVE_DEST_STATE_2=ENABLE
*.FAL_SERVER='dgp'
*.FAL_CLIENT='dgs'

然后保存退出:

sys用户登录备库后创建spfile

SQL> create pfile from spfile;

File created.  

注:备库的listener tnsnames 文件中的参数是一样的,只是主机名/IP需要做修改即可。

十、测试主库备库的连通性

启动主库监听:lsnrctl start

[oracle@dg2 oradata]$ tnsping dgp

TNS Ping Utility for Linux: Version 10.2.0.1.0 - Production on 23-JAN-2012 05:18:45

Copyright (c) 1997, 2005, Oracle.  All rights reserved.

Used parameter files:

Used TNSNAMES adapter to resolve the alias

Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = dg1.andylhz.com)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = dg)))

OK (10 msec)

启动备库监听: lsnrctl start

[oracle@dg1 dg]$ tnsping dgs

TNS Ping Utility for Linux: Version 10.2.0.1.0 - Production on 23-JAN-2012 05:29:10

Copyright (c) 1997, 2005, Oracle.  All rights reserved.

Used parameter files:

Used TNSNAMES adapter to resolve the alias

Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = dg2.andylhz.com)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = dg)))

OK (20 msec)

 

十一、打开备库主库

SQL> startup mount;#备库以mount方式打开

启动redolog应用:

SQL> alter database recover managed standby database disconnect from session;

SQL> startup  #主库正常打开

切换日志文件:

SQL> alter system switch logfile;

主库日志显示

备库日志

备库成功应用了主库的归档日志



     本文转自andylhz 51CTO博客,原文链接:http://blog.51cto.com/andylhz2009/772921,如需转载请自行联系原作者


相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
3月前
|
Oracle 关系型数据库 数据库
手把手教你Oracle DataGuard主备切换(switchover)
手把手教你Oracle DataGuard主备切换(switchover)
548 4
|
3月前
|
数据采集 监控 Oracle
实时计算 Flink版产品使用问题之如何从Oracle物理备用库中进行实时数据抽取
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
14天前
|
存储 Oracle 关系型数据库
【赵渝强老师】Oracle的物理存储结构
Oracle的物理存储结构包括数据文件、联机重做日志文件、控制文件、归档日志文件、参数文件、告警日志文件、跟踪文件和备份文件。这些文件在硬盘上存储数据库的各种数据和日志信息,确保数据库的正常运行和故障恢复。视频讲解和详细说明见原文。
|
6月前
|
运维 Oracle 容灾
Oracle dataguard 容灾技术实战(笔记),教你一种更清晰的Linux运维架构
Oracle dataguard 容灾技术实战(笔记),教你一种更清晰的Linux运维架构
|
2月前
|
Ubuntu Oracle 关系型数据库
Oracle VM VirtualBox之Ubuntu 22.04LTS双网卡网络模式配置
这篇文章是关于如何在Oracle VM VirtualBox中配置Ubuntu 22.04LTS虚拟机双网卡网络模式的详细指南,包括VirtualBox网络概述、双网卡网络模式的配置步骤以及Ubuntu系统网络配置。
282 3
|
3月前
|
Oracle 网络协议 安全
Oracle 11g DataGuard搭建保姆级教程
Oracle 11g DataGuard搭建保姆级教程
221 4
|
3月前
|
Oracle 网络协议 关系型数据库
Oracle DataGuard主备切换之自动切换
Oracle DataGuard主备切换之自动切换
169 2
|
3月前
|
Oracle 关系型数据库 BI
ORACLE Apex: EBS多组织结构 理解与配置
【8月更文挑战第11天】在Oracle Apex中理解和配置与EBS多组织结构相关内容需掌握:1) EBS多组织结构概念及组成部分,如法律实体、业务单位与库存组织;2) Oracle Apex与EBS集成的目的与方式,包括提供友好界面及自定义业务流程;3) 在Apex中配置多组织结构应用,涉及数据访问控制、页面报表设计及业务流程集成。整体而言,需精通EBS架构与Apex开发技术,以实现高效灵活的企业解决方案。
|
6月前
|
SQL Oracle 关系型数据库
实时计算 Flink版产品使用合集之可以通过配置Oracle数据库的schema注册表来监测表结构的变化吗
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
54 1
|
Oracle 关系型数据库 Linux
Oracle11g Linux单机STANDBY配置
环境:RHEL 4 U5+Oracle 11.1.0.6 主库SID:ora11g 备用库SID:standby 主库数据文件存放目录:/home/oracle/opt/oradata/or...
782 0