返回顶部
首页 > 资讯 > 数据库 >CentOS 5.11下Oracle 11G R2 Dataguard搭建
  • 225
分享到

CentOS 5.11下Oracle 11G R2 Dataguard搭建

2024-04-02 19:04:59 225人浏览 泡泡鱼
摘要

Datagard算是oracle企业版的一种容灾方案,在企业中广泛应用,我就将搭建过程记录下来以作备用。主机名    数据库版本   &

Datagard算是oracle企业版的一种容灾方案,在企业中广泛应用,我就将搭建过程记录下来以作备用。

主机名    数据库版本    实例名    IP

db1    Oracle 11G R2    member    172.16.1.250

db2    Oracle 11G R2    member    172.16.1.251

默认情况下以上都已经安装好了Oracle数据库,但是只在db1上建立了数据库和监听,db2只安装Oracle软件不建库,不建监听。


目录:

  1. 打开强制归档日志

  2. 增加standby日志组

  3. 修改主备启动参数

  4. 密码文件的处理

  5. 修改监听

  6. 复制监听文件、参数文件、密码文件到备库

  7. 创建备库控制文件

  8. 复制主库数据文件和日志文件到备库

  9. 初始化及配置备库做standby

  10. DataGuard测试

  11. 主备切换测试


基础工作:

    a.安装Centos 5.11 x86_64,关闭selinux,iptables,自动对时

    b.安装Oracle 11G R2,db1安装软件、监听及建库,db2只安装软件不建库 

    可以参考:Http://fengwan.blog.51cto.com/508652/1330122


在db1的/etc/hosts里增加

127.0.0.1       db1

172.16.1.251    db2

在db2的/etc/hosts里增加

127.0.0.1       db2

172.16.1.250    db1


  1. 打开强制归档(db1)

(db1)sql >shutdown immediate;

(db1)SQL >startup mount;

(db1)SQL >alter database force logging; 

(db1)SQL >alter database arcHivelog;

2.创建重做日志组(必须要比原来的redo log多一组或多组,standby redo log是使用Real Time Apply的必要条件)

(db1)SQL> select group#,member from v$logfile;

    GROUP#    MEMBER

-------------  -----------------------------------------------------------------

     3    /opt/oracle/oradata/member/redo03.log

     2    /opt/oracle/oradata/member/redo02.log

     1    /opt/oracle/oradata/member/redo01.log

从上面可以看出现在已经有3组redo log.

(db1)SQL >alter database add standby logfile ('/opt/oracle/oradata/member/standby04.log') size 50m;

(db1)SQL >alter database add standby logfile ('/opt/oracle/oradata/member/standby05.log') size 50m;

(db1)SQL >alter database add standby logfile ('/opt/oracle/oradata/member/standby06.log') size 50m;

(db1)SQL >alter database add standby logfile ('/opt/oracle/oradata/member/standby07.log') size 50m;

再查下日志组是否创建成功

(db1)SQL> select group#,member from v$logfile;

    GROUP#    MEMBER

-------------  -----------------------------------------------------------------

     3    /opt/oracle/oradata/member/redo03.log

     2    /opt/oracle/oradata/member/redo02.log

     1    /opt/oracle/oradata/member/redo01.log

    4    /opt/oracle/oradata/member/standby04.log

    5     /opt/oracle/oradata/member/standby05.log

    6     /opt/oracle/oradata/member/standby06.log

    7     /opt/oracle/oradata/member/standby07.log

可以看到我们创建的4组日志


3.修改主备库的启动参数

生成参数文件

(db1)SQL> create pfile='/tmp/member.pfile' from spfile;

退出sqlplus,用编辑器打开/tmp/member.pfile

[oracle@db1 ~]$ vi /tmp/member.pfile

member.__db_cache_size=331350016

member.__java_pool_size=4194304

member.__large_pool_size=4194304

member.__oracle_base='/opt/oracle'#ORACLE_BASE set from environment

member.__pga_aggregate_target=339738624

member.__sga_target=503316480

member.__shared_io_pool_size=0

member.__shared_pool_size=150994944

member.__streams_pool_size=0

*.audit_file_dest='/opt/oracle/admin/member/adump'

*.audit_trail='db'

*.compatible='11.2.0.0.0'

*.control_files='/opt/oracle/oradata/member/control01.ctl','/opt/oracle/flash_recovery_area/member/control02.ctl'

*.db_block_size=8192

*.db_domain=''

*.db_name='member'

*.db_recovery_file_dest='/opt/oracle/flash_recovery_area'

*.db_recovery_file_dest_size=4070572032

*.diagnostic_dest='/opt/oracle'

*.dispatchers='(PROTOCOL=tcp) (SERVICE=memberXDB)'

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

*.memory_target=839909376

*.open_cursors=300

*.processes=150

*.remote_login_passWordfile='EXCLUSIVE'

*.undo_tablespace='UNDOTBS1'

#增加一下部分

*.db_unique_name='db1'

*.archive_lag_target=1800

*.fal_client='db1'

*.fal_server='db2'

*.log_archive_config='DG_CONFIG=(db1,db2)'

*.log_archive_dest_1='location=/opt/oracle/flash_recovery_area/ VALID_FOR=(all_logfiles,all_roles) db_unique_name=db1'

*.log_archive_dest_2='service=db2 lgwr async valid_for=(online_logfiles,primary_role) db_unique_name=db2'

*.log_archive_dest_state_1='enable'

*.log_archive_dest_state_2='enable'

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

*.standby_file_management='auto'

*.db_file_name_convert='/opt/oracle/flash_recovery_area',' /opt/oracle/flash_recovery_area'

*.log_file_name_convert='/opt/oracle/flash_recovery_area ','/opt/oracle/flash_recovery_area'


并拷贝一个作为备机db2的启动参数文件

[oracle@db1 ~]$ cp /tmp/member.pfile /tmp/db2.pfile

[oracle@db1 ~]$ vim /tmp/db2.pfile 

则将上面增加的部分修改为

*.db_unique_name='db2'

*.archive_lag_target=1800

*.fal_client='db2'

*.fal_server='db1'

*.log_archive_config='DG_CONFIG=(db1,db2)'

*.log_archive_dest_1='location=/opt/oracle/flash_recovery_area/ VALID_FOR=(all_logfiles,all_roles) db_unique_name=db2'

*.log_archive_dest_2='service=db1 lgwr async valid_for=(online_logfiles,primary_role) db_unique_name=db1'

*.log_archive_dest_state_1='enable'

*.log_archive_dest_state_2='enable'

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

*.standby_file_management='auto'

*.db_file_name_convert='/opt/oracle/flash_recovery_area',' /opt/oracle/flash_recovery_area'

*.log_file_name_convert='/opt/oracle/flash_recovery_area ','/opt/oracle/flash_recovery_area'


在db1上以修改过的/tmp/member.pfile启动

(db1)SQL >shutdown immediate;

(db1)SQL> startup pfile='/tmp/member.pfile' nomount;

(db1)SQL> create spfile from pfile='/tmp/member.pfile';

(db1)SQL >shutdown immediate;

(db1)SQL> startup;


4.主库密码文件:

[1]存在密码文件

[oracle@db1 dbs]$ ls $ORACLE_HOME/dbs

hc_DBUA0.dat  hc_member.dat  init.ora  lkDB1  lkMEMBER  orapwmember  spfilemember.ora

看到上面有一个密码文件orapwmember,在建库的时候默认会创建一个

=================================================================================

[2]不存在密码文件

如果没有的话可以手动创建一个。

[oracle@db1 dbs]$ cd $ORACLE_HOME/dbs

[oracle@db1 dbs]$ orapwd file=orapwmember password=123456 entries=3

#注意以上需要根据SID名建立的,file=orapwSID

===================================================================================


5.修改监听

[oracle@db1 dbs]$ cd $ORACLE_HOME/network/admin

[oracle@db1 admin]$ mv listener.ora listener.ora.default

[oracle@db1 admin]$ vim listener.ora

LISTENER =

  (DESCRIPTION =

    (ADDRESS = (PROTOCOL = TCP)(HOST = db1)(PORT = 1521))

  )

 

SID_LIST_LISTENER =

  (SID_LIST =

    (SID_DESC =

      (GLOBAL_DBNAME = member)

      (ORACLE_HOME = /opt/oracle/product/11.2.0/db_1)

      (SID_NAME = member)

    )

  )

#注意以上的HOST,就是HOSTNAME

[oracle@db1 admin]$ vim tnsnames.ora 

MEMBER =

  (DESCRIPTION =

    (ADDRESS = (PROTOCOL = TCP)(HOST = localhost.localdomain)(PORT = 1521))

    (CONNECT_DATA =

      (SERVER = DEDICATED)

      (SERVICE_NAME = member)

    )

  )

db1 =

  (DESCRIPTION =

    (ADDRESS_LIST =

      (ADDRESS = (PROTOCOL = TCP)(HOST = db1)(PORT = 1521))

    )

    (CONNECT_DATA =

      (SERVER = DEDICATED)

      (SERVICE_NAME = db1)

    )

  )

db2 =

  (DESCRIPTION =

    (ADDRESS_LIST =

      (ADDRESS = (PROTOCOL = TCP)(HOST = db2)(PORT = 1521))

    )

    (CONNECT_DATA =

      (SERVER = DEDICATED)

      (SERVICE_NAME = db2)

    )

  )

重启下监听

[oracle@db1 admin]$ lsnrctl stop

[oracle@db1 admin]$ lsnrctl start


6.复制监听文件、参数文件、密码文件到备库

#注意一下我这边$ORACLE_HOME

[oracle@db1 ~]$ echo $ORACLE_HOME

/opt/oracle/product/11.2.0/db_1

#传输启动参数文件

[oracle@db1 ~]$ scp /tmp/db2.pfile db2:~

#传输密码文件

[oracle@db1 ~]$ scp /opt/oracle/product/11.2.0/db_1/dbs/orapwmember db2:/opt/oracle/product/11.2.0/db_1/dbs/orapwmember

#传输监听文件

[oracle@db1 ~]$ scp -r /opt/oracle/product/11.2.0/db_1/network/admin/{listener.ora,tnsnames.ora} db2:/opt/oracle/product/11.2.0/db_1/network/admin/


在db2上修改/opt/oracle/product/11.2.0/db_1/network/admin/listener.ora,将db1修改为db2

[oracle@db2 ~]$ vim /opt/oracle/product/11.2.0/db_1/network/admin/listener.ora

LISTENER =

  (DESCRIPTION =

    (ADDRESS = (PROTOCOL = TCP)(HOST = db2)(PORT = 1521))

  ) 

SID_LIST_LISTENER =

  (SID_LIST =

    (SID_DESC =

      (GLOBAL_DBNAME = member)

      (ORACLE_HOME = /opt/oracle/product/11.2.0/db_1)

      (SID_NAME = member)

    )

  )

#只需要修改listener.ora即可,tnsnames.ora不需要动


7.主库创建standby控制文件,我们这边利用scp传送全部文件

查看下控制文件的路径

(db1)SQL> select name from v$controlfile;

NAME

--------------------------------------------------------------------------------

/opt/oracle/oradata/member/control01.ctl

/opt/oracle/flash_recovery_area/member/control02.ctl


(db1)SQL> shutdown immediate;

(db1)SQL> startup mount;

(db1)SQL> alter database create standby controlfile as '/opt/oracle/oradata/member/standby.ctl';

#在/opt/oracle/oradata/member/目录下创建standby.ctl备机控制文件


8.复制主库数据文件和日志文件到备库

[oracle@db1 ~]$ scp -r /opt/oracle/flash_recovery_area/ /opt/oracle/admin/ /opt/oracle/diag/ /opt/oracle/oradata/ db2:/opt/oracle


9.初始化备库

在备机上使用standby的控制文件覆盖原有的控制文件,覆盖的路径可以通过上一步查找控制文件的路径了解到

[oracle@db2 ~]$ cp /opt/oracle/oradata/member/standby.ctl /opt/oracle/oradata/member/control01.ctl 

[oracle@db2 ~]$ cp /opt/oracle/oradata/member/standby.ctl /opt/oracle/flash_recovery_area/member/control02.ctl


使用db2.pfile之前修改过的参数文件进行db2

(db2)SQL> startup pfile='/home/oracle/db2.pfile' nomount;

(db2)SQL> create spfile from pfile='/home/oracle/db2.pfile';

(db2)SQL> shutdown immediate;

(db2)SQL> startup nomount;

(db2)SQL> alter database mount standby database;

(db2)SQL> alter database open read only;

以下3种应用日志的方法:(a和b选一)

a.开启实时应用日志,这样在主库插入立马就可以在备机上查找到

(db2)SQL> alter database recover managed standby database using current logfile disconnect from session;

b.开启redolog应用日志,时间较长才能查询到

(db2)SQL> alter database recover managed standby database disconnect from session;

c.停止应用redolog,只接受日志,不重做

(db2)SQL> alter database recover managed standby database cancel;

至此,DataGuard搭建成功,在db1上创建表并插入数据,然后在db2上进行查询就可以查到了。一开始做的时候总是查不到数据,最后发现是上面应用日志的方法问题。


10.Dataguard测试:

查看Standby管理进程

(db1)SQL> select process,status from v$managed_standby;

PROCESS   STATUS

--------- ------------

ARCH      CONNECTED

ARCH      CLOSING

ARCH      CLOSING

ARCH      CLOSING

LNS       WRITING

(db2)SQL> select process,status from v$managed_standby;

PROCESS   STATUS

--------- ------------

ARCH      CLOSING

ARCH      CLOSING

ARCH      CONNECTED

ARCH      CONNECTED

MRP0      APPLYING_LOG

RFS       IDLE

RFS       IDLE


以上需要看到在主机上需要有LNS进程,在备机上需要RFS进程用来接收redo日志,MRP0进程就是负责将日志写入数据库中


在db1上进行切换日志,然后在db2上查看日志是否正常

(db1)SQL> select sequence#,applied from v$archived_log;

(db1)SQL> select max(sequence#) from v$archived_log;

MAX(SEQUENCE#)

--------------

    11

(db2)SQL> select sequence#,applied from v$archived_log;

(db2)SQL> select max(sequence#) from v$archived_log;

MAX(SEQUENCE#)

--------------

    11


(db1)SQL> alter system switch logfile;

(db1)SQL> select max(sequence#) from v$archived_log;

MAX(SEQUENCE#)

--------------

    12

(db2)SQL> select max(sequence#) from v$archived_log;

MAX(SEQUENCE#)

--------------

    12


从上面可以看出日志切换成功,DataGuard正常运行




11.主备切换测试:

db1---primary/db2---standby   ===》db2--primary/db1--standby


[oracle@db1 ~]$ lsnrctl stop

(db1)SQL> alter database commit to switchover to physical standby with session shutdown;

(db1)SQL> shutdown immediate;

(db1)SQL> startup mount;

(db1)SQL> alter database open read only;

(db1)SQL> alter database recover managed standby database using current logfile disconnect from session;

//在执行这条的时候,如果出现

ERROR at line 1:

ORA-01665: control file is not a standby control file

则是没有执行alter database commit to switchover to physical standby with session shutdown;


[oracle@db1 ~]$ lsnrctl start


(db2)SQL> alter database commit to switchover to primary;

注意:

若出现ORA-16139: media recovery required,执行如下语句:

SQL> ALTER  DATABASE RECOVER MANAGED STANDBY  DATABASE DISCONNECT FROM SESSION;

SQL> alter database commit to switchover to primary;


如果出现,则可能是已打开了会话,加上with session shutdown强制关闭绘画

ERROR at line 1:

ORA-01093: ALTER DATABASE CLOSE only permitted with no sessions connected


SQL> alter database commit to switchover to primary WITH SESSION SHUTDOWN;


(db2)SQL> shutdown immediate;

(db2)SQL> startup;


以上就是主备切换的流程

您可能感兴趣的文档:

--结束END--

本文标题: CentOS 5.11下Oracle 11G R2 Dataguard搭建

本文链接: https://lsjlt.com/news/43473.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • CentOS 5.11下Oracle 11G R2 Dataguard搭建
    Datagard算是Oracle企业版的一种容灾方案,在企业中广泛应用,我就将搭建过程记录下来以作备用。主机名    数据库版本   &...
    99+
    2024-04-02
  • CentOS6.5下搭建oracle 11g Dataguard(一)
    一、环境准备 主机 1 (主库) 主机 2 (备库) 操作系统 Centos6.5 64 位 Centos6.5...
    99+
    2024-04-02
  • Oracle 11g R2 ADG 搭建
    --============Oracle ADG搭建==============--==========准备阶段=========1.检查primary为archivelog模式。select l...
    99+
    2024-04-02
  • oracle 11g dataguard环境搭建
    硬件和系统软件说明:操作系统:Oracle Linux 5.8 64位oracle软件:oracle 11.2.0.1角色           主机名 &n...
    99+
    2024-04-02
  • 手把手教你搭建Oracle 11G dataguard
    一、前期准备    在准备搭建DATAGARD的时候,看过许多篇教程,按着教程去走,出现过问题,然后就不知道该如何进行下一步。   &n...
    99+
    2024-04-02
  • Centos6.5 + Oracle 11g r2 + nfs搭建RAC环境
       ...
    99+
    2024-04-02
  • Centos6.5 + Oracle 11g r2 + nfs搭建RAC环境二
    输入hosts中的scan名称:rac-scan添加rac2节点的主机名、虚拟ip名 默认配置下一步之后一直默认直到按完成后开始安装跳出提示后按提示运行脚本,按确定最后一项可忽略 ...
    99+
    2024-04-02
  • Windows Oracle 11G R2搭建方法是什么
    本篇内容主要讲解“Windows Oracle 11G R2搭建方法是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Windows Oracle 11G R...
    99+
    2024-04-02
  • Centos6.5 + Oracle 11g r2 + nfs如何搭建RAC环境
    本篇文章给大家分享的是有关Centos6.5 + Oracle 11g r2 + nfs如何搭建RAC环境,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起...
    99+
    2024-04-02
  • Linux 下 Oracle 11g DG搭建
    环境:模拟主库的创建 使用DBCA 启动图形界面 选项中的install option  --->选中create and configure a d...
    99+
    2024-04-02
  • Oracle 10G DataGuard搭建
    前面我们有讲到Oracle 11G DataGuard的搭建,10G的搭建也是大同小异.不过Oracle 10G不支持Standby open环境:角色主机名IP数据库版本操作系统版本Primaryfdb1...
    99+
    2024-04-02
  • oracle 11gR2 搭建dataguard
    1、搭建环境 主库   oracle11gR2    备库 oracle11gR2 db_name orcl       &n...
    99+
    2024-04-02
  • linux下oracle 11g dg环境搭建
    项目192.168.12.22(主)192.168.12.23(从)oracle sidorclorcldb_unique_nameuniquepdguniquesdgtnsnameTns_pdgTns_s...
    99+
    2024-04-02
  • 怎么搭建oracle DataGuard
    本篇内容介绍了“怎么搭建oracle DataGuard”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1....
    99+
    2024-04-02
  • 如何搭建Oracle DataGuard
    这篇文章主要讲解了“如何搭建Oracle DataGuard”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何搭建Oracle DataGuard”吧!一、...
    99+
    2024-04-02
  • Oracle RAC+DG环境搭建(CentOS 7+Oracle 12C)( 十) 部署 DataGuard
    一、配置主机   1. 设置主机名 hostnamectl set-hostname  DG   2. 配置网络 vim /e...
    99+
    2024-04-02
  • oracle 11g DG 搭建
    groupadd oinstall groupadd dba groupadd oper groupadd asmadmin groupadd asmdba ...
    99+
    2024-04-02
  • CentOS 6.4(x86)下安装Oracle 10g R2
    --------------------------------------一、硬件要求二、软件三、安装前注意四、安装前准备五、安装Oracle,并进行相关设置六、测试-------------------...
    99+
    2024-04-02
  • Oracle duplicate搭建dataguard (Backup-based duplication)
    duplicate搭建DG  (Backup-based duplication)源库:run{allocate channel ch2 device type disk;allocate cha...
    99+
    2024-04-02
  • openfiler+vmware+oracle 11g rac 搭建
    一、环境规划1、IP地址规划IP地址主机名用途实例名192.168.12.54oracle-rac01-db01Public ip (节点1)192.168.12.57oracle-rac02-db02Pu...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作