当前位置:  数据库>oracle

Oracle 11g 两个节点RAC 搭建单实例DG详细步骤以及注意事项

    来源: 互联网  发布时间:2017-06-14

    本文导语: 环境介绍: OS: 都是 [root@java3 ~]# uname -a  Linux java3 2.6.18-308.el5 #1 SMP Tue Feb 21 20:06:06 EST 2012 x86_64 x86_64 x86_64 GNU/Linux  主库:  数据库版本:11.2.0.3.0  两个节点的RAC  节点一:192.168.15.26  节点二:192.168.15.27 standby 数据库版本:  11....

环境介绍:

OS: 都是 [root@java3 ~]# uname -a 

Linux java3 2.6.18-308.el5 #1 SMP Tue Feb 21 20:06:06 EST 2012 x86_64 x86_64 x86_64 GNU/Linux 

主库:  数据库版本:11.2.0.3.0  两个节点的RAC  节点一:192.168.15.26  节点二:192.168.15.27

standby 数据库版本:  11.2.0.3.0      IP 192.168.15.9

备库 只安装了数据库软件  没有建库

具体步骤:

一:在192.168.15.9 这台服务器上安装数据库软件,不多介绍。

二:修改主库参数

参数 可以11g官方手册 book list --DAT--Data Guard Concepts and Administration--3.1 Preparing the Primary Database for Standby Database Creation--3.1.4  中的例子中看到要在主库参数文件里面应该有的的参数(如果没有要添加),如下所示:

DB_NAME=chicago                        #主库的数据库名 
DB_UNIQUE_NAME=chicago                #主库的数据库名备库 也有属于自己的唯一数据库名
LOG_ARCHIVE_CONFIG='DG_CONFIG=(chicago,boston)'        #注意括号里主备库的位置 
CONTROL_FILES='/arch1/chicago/control1.ctl', '/arch2/chicago/control2.ctl'      #这个参数主库不需要改,备库要改成自己存在的路径  LOG_ARCHIVE_DEST_1=              #这个参数是制定本地(主库)归档日志文件的位置
 'LOCATION=/arch1/chicago/
  VALID_FOR=(ALL_LOGFILES,ALL_ROLES)
  DB_UNIQUE_NAME=chicago'      # 这里是备库的数据库唯一名
LOG_ARCHIVE_DEST_2=            #这个参数是说是作为主库的这一方要传递联机在线日志到数据库唯一名为boston的备库。
 'SERVICE=boston ASYNC          #异步传输
  VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)
  DB_UNIQUE_NAME=boston'        #此处填写备库数据库名,
LOG_ARCHIVE_DEST_STATE_1=ENABLE    #开启传输日志的服务 
LOG_ARCHIVE_DEST_STATE_2=ENABLE   
REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE  #远程登录口令文件用于验证管理用户或重做传输会话时,必须设置成exclusive或shared
LOG_ARCHIVE_FORMAT=%t_%s_%r.arc      #设置归档日志文件的格式

FAL_SERVER=boston                    #此处是填写备库的数据库名,该参数只是作为standby数据库时才有用,意思是说备库把这里指定的主库的数据库名作为服务器端,并获取请求。针对这个参数,如果不打算主备库转换,没必要在主库设该参数。
DB_FILE_NAME_CONVERT= '/backup/','+data/jlprojct/datafile/'    #该参数是个静态参数,其作用是在主库执行duplicate时的recovere过程根据主库的数据文件位置转换成这里指定的备库合适的位置,经测试是根据备库的这个参数转变,和主库没有关系,也就是说在主库执行duplicate会根据备库的这个参数指定的位置在备库产生数据文件。如果你在主库添加一个新的数据文件,你必须在备库相应位置建立相应的数据文件。
LOG_FILE_NAME_CONVERT=  #类似于上一个参数,注意修改这个参数时,如果你的主库的日志文件有若干个不同路径,你都要写进来,
 '/arch1/boston/','/arch1/chicago/','/arch2/boston/','/arch2/chicago/' 

STANDBY_FILE_MANAGEMENT=AUTO    #这个参数是说当你设置成auto后,你在主库添加或删除数据文件,会自动在备库做相应的操作,要注意不要覆写已经存在的数据文件。别起一样的名。

 


如果要求主数据库不能停机(也就是不能重启的话),那么你可以通过以下这些命令修改主库的参数。修改完之后create pfile.ora    ='/backup/pfile.ora from spfile='/Oracle/product/11.2.3/dbs/initJLPROJCT1.ora';

SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_1='location=+arch/jlprojct/archivelog VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=JLPROJCT';

 

 


System altered.

 

 

SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_2='SERVICE=JLPROJCT3  ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=JLPROJCT3';

 


System altered.

 


SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_1=ENABLE scope=spfile;

 


System altered.

 


SQL>  ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_2=ENABLE scope=spfile;

 


System altered.

 


SQL>  ALTER SYSTEM SET REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE scope=spfile;

 


System altered.

 


SQL> ALTER SYSTEM SET LOG_ARCHIVE_FORMAT='%t_%s_%r.arc' scope=spfile;    #静态参数,不重启,不起作用 ,所以不让重启可以不改它。 

 


System altered.

 


SQL> ALTER SYSTEM SET FAL_CLIENT = JLPROJCT SCOPE=SPFILE;            #  fal_client也是设置本身,fal_server是对方
 

 

 


System altered.

 


SQL> ALTER SYSTEM SET FAL_SERVER = JLPROJCT3 SCOPE=SPFILE;

 


System altered.

 


SQL> ALTER SYSTEM SET STANDBY_FILE_MANAGEMENT=AUTO SCOPE=SPFILE;       

 


System altered.

 

 

 

SQL> ALTER SYSTEM SET DB_FILE_NAME_CONVERT='/backup/',+data/jlprojct/datafile/' scope =spfile;    #静态参数,不重启,不起作用 ,所以不让重启可以不改它。 

 


System altered.

 

 

 

SQL> ALTER SYSTEM SET  LOG_FILE_NAME_CONVERT='+DATA/jlprojct/onlinelog/','/backup/','+ARCH/jlprojct/onlinelog/','/backup/'scope =spfile;                          #静态参数,不重启,不起作用 ,所以不让重启可以不改它。 

 


System altered.

三 ;修改主库的监听和tnsname.ora 文件

1,主库监听listener.ora文件 添加 (如果有就不修改)

SID_LIST_LISTENER=

  (SID_LIST=

    (SID_DESC=

      (GLOBAL_DBNAME=JLPROJCT)

      (ORACLE_HOME=/oracle/product/11.2.3)

      (SID_NAME=JLPROJCT1)))

 

 

LISTENER =

  (DESCRIPTION_LIST =

    (DESCRIPTION =

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

      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))

    )

  )
 
2.主库tnsname.ora 添加备库的相关信息。

JLPROJCT3 =      #备库的相关信息

  (DESCRIPTION =

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

    (CONNECT_DATA = 

      (SERVER = DEDICATED)

      (SERVICE_NAME = JLPROJCT3)

  (INSTANCE_NAME = JLPROJCT3)

    )

  )


db26 =                  #主库相关信息  执行duplicate之前 要rman 同时连接主库和备库,连接主库时,会用到这个连接字符串。

  (DESCRIPTION =

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

    (CONNECT_DATA =

      (SERVER = DEDICATED)

      (SERVICE_NAME = JLPROJCT)


 

四:在主库用scp 把listener.ora  ,tnsname.ora ,initJLPROJCT1.ora,pfile.ora  传给备库 然后进行相应的修改(参数文件不需要修改内容,但是要改名 和备库实例名相对应 :[oracle@java3 dbs]$ mv orapwJLPROJCT orapwJLPROJCT3  )

 [oracle@rac1 ~]$ scp listener.ora tnsnames.ora initJLPROJCT1.ora  oracle@192.168.15.:`pwd`;      #冒号后面的pwd 意思是说要把文件传到备库的当前路径下(也就是此时在主机上 pwd 显示的路径)

把监听的信息改成备库的,tnaname.ora添加主库的相关信息。

1.备库监听listener.ora 内容如下:

SID_LIST_LISTENER=

  (SID_LIST=

    (SID_DESC=

      (GLOBAL_DBNAME=JLPROJCT3)

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

      (SID_NAME=JLPROJCT3)))

 

 

LISTENER =

  (DESCRIPTION_LIST =

    (DESCRIPTION =

      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.15.9)(PORT = 1521))              #主机IP

      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))

    )

  )

ADR_BASE_LISTENER = /opt/oracle

2.备库tnsname.ora 内容:

JLPROJCT =                  #主库相关信息  这里的连接字符串和主库tnsname.ora 里面的不一样,不影响,随便起的名字 

  (DESCRIPTION =

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

    (CONNECT_DATA =

      (SERVER = DEDICATED)

      (SERVICE_NAME = JLPROJCT)


JLPROJCT3 =      #备库的相关信息      如果仅仅是做standby 数据库,不填他自己这个也行。       

  (DESCRIPTION =

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

    (CONNECT_DATA = 

      (SERVER = DEDICATED)

      (SERVICE_NAME = JLPROJCT3)

  (INSTANCE_NAME = JLPROJCT3)

    )

  )

备库参数文件修改 :   

DB_NAME=JLPROJCT                    #因为就一个数据库  所以此处不变

DB_UNIQUE_NAME=JLPROJCT3    #这里要写成了备库数据库唯一名,便于区分主备库,即使转换角色也不改名。

LOG_ARCHIVE_CONFIG='DG_CONFIG=(JLPROJCT3,JLPROJCT)'      #括号里面和主库括号里面的前后位置改变。 

LOG_ARCHIVE_DEST_1=

 'location=/opt/oracle                          #填上备库有的目录,保证有空闲空间 ,以及有权限读写,     

  VALID_FOR=(ALL_LOGFILES,ALL_ROLES)

  DB_UNIQUE_NAME=JLPROJCT3'          #备库名字

LOG_ARCHIVE_DEST_2=

 'SERVICE=JLPROJCT ASYNC                  #主库的名字

  VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)

  DB_UNIQUE_NAME=JLPROJCT'            #主库名字

LOG_ARCHIVE_DEST_STATE_1=ENABLE

LOG_ARCHIVE_DEST_STATE_2=ENABLE

REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE

LOG_ARCHIVE_FORMAT=%t_%s_%r.arc

FAL_SERVER=JLPROJCT                      #主库名字

DB_FILE_NAME_CONVERT='+data/jlprojct/datafile/','/backup/'            #等号后的两个路径换位置

LOG_FILE_NAME_CONVERT=

'+DATA/jlprojct/onlinelog/','/backup/','+ARCH/jlprojct/onlinelog/','/backup/'          #等号后的两个路径换位置

STANDBY_FILE_MANAGEMENT=AUTO
五:在备库上 把修改过后的pfile 创建成spfile,然后 改名 ,并把备库实例启动到nomount状态 SYS@JLPROJCT3> create  pfile from spfile;       
File created.     

六:在主库上添加standby 日志组 添加的个数为:(主库原来有的个数n+1)*线程数 ,这里所说的线程数可以理解为实例的个数,这里有10个日志组,所以要添加(10+1)*2=22组。大小和路径最好和原来的保持一致,
DG有两种传递日志的方式,一种是常见的archivr log,由ARCH的后台进程控制传递到standby数据库,还有一种是和redo log一样的传递方式,由产生redo log的后台进程LGWR控制,后者就需要standby log
在最大可用和最大保护模式,因为是采用LGWR SYNC进行redo的传送,一定要用standby logfile,但是建议在最大性能模式也添加standby logfile,据说在失败切换时可以恢复更多的数据

添加命令如下:


alter database add standby logfile group 15 ('+DATA/jlprojct/onlinelog/group_15') size 2000M;


六:在主库进行测试  成功后继续进行  ,打开主备库的监听,关闭防火墙,

[oracle@rac1 ~]$ tnsping JLPROJCT3

 TNS Ping Utility for Linux: Version 11.2.0.3.0 - Production on 05-MAR-2015 17:45:23

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

 Used parameter files:


 Used TNSNAMES adapter to resolve the alias
 Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.15.9)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = JLPROJCT3) (INSTANCE_NAME = JLPROJCT3)))
 OK (0 msec)

[oracle@rac1 ~]$ tnsping db26

 TNS Ping Utility for Linux: Version 11.2.0.3.0 - Production on 05-MAR-2015 17:46:43

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

 Used parameter files:


 Used TNSNAMES adapter to resolve the alias
 Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.15.26)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = JLPROJCT)))
 OK (10 msec)
七:在主库用rman 同时连接主备库。
[oracle@rac1 ~]$  rman target sys/xxxxx@db26 auxiliary sys/xxxxx@JLPROJCT3

 Recovery Manager: Release 11.2.0.3.0 - Production on Thu Mar 5 17:51:23 2015

 Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.

 connected to target database: JLPROJCT (DBID=2115662724)
 connected to auxiliary database: JLPROJCT (not mounted )


八:在主库执行duplicate命令,最关键的一步,备份主库的控制文件,数据文件,日志文件,然后传给备库,并在备库recover ,如果没有报错的话,备库就会Open了。

RMAN> duplicate target database for standby from active database  nofilenamecheck;

九:read only  的方式,打开备库数据库实例。

SYS@JLPROJCT3> alter database open read only;

 Database altered.

十:在备库打开MRP进程 ,应用日志,重演变化。注意:一定要保证备库实例是在 read only 的方式下打开的,否则不能同步。

SYS@JLPROJCT3> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;

 Database altered.
十一:测试结果:在主库随便建立一个用户,并在这个用户下建立一个表,发现备库也会有,证明DG搭建成功。 

 :


    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Linux上建立第二个ORACLE实例分析
  • Linux操作系统下Oracle数据库多实例启动方式及修改内存
  • oracle的存储过程实例讲解
  • linux redhat5.6安装oracle11g在自动创建实例时停住不动,有图
  • oracle分页存储过程 oracle存储过程实例
  • C#连接Oracle数据库的实例方法
  • Oracle数据库实例两则
  • Oracle 删除归档日志实例
  • Oracle 10g for solaris准备工作和实例的删除
  • Oracle 11G 无法连接到数据库实例故障排除
  • Linux下设置Oracle 10g 服务以及实例自动启动
  • oracle group by语句实例测试
  • Oracle数据库异构服务原理及实例说明
  • Linux下删除Oracle实例
  • 与Oracle RAC相关的连接配置写法实例
  • Oracle监听器Server端与Client端配置实例
  • Oracle中使用触发器(trigger)和序列(sequence)模拟实现自增列实例
  • oracle删除已存在的表的实例
  • Aix 5.3下自动备份Oracle多个实例
  • Oracle数据库安全性管理基本措施实例解析
  • Oracle 12c发布简单介绍及官方下载地址
  • 在linux下安装oracle,如何设置让oracle自动启动!也就是让oracle那个服务自动启动,不是手动的
  • oracle 11g最新版官方下载地址
  • 请问su oracle 和su - oracle有什么不同?
  • Oracle 数据库(oracle Database)Select 多表关联查询方式
  • 虚拟机装Oracle R12与Oracle10g
  • Oracle数据库(Oracle Database)体系结构及基本组成介绍
  • Oracle 数据库开发工具 Oracle SQL Developer
  • 如何设置让Oracle SQL Developer显示的时间包含时分秒
  • Oracle EBS R12 支持 Oracle Database 11g
  • Oracle 10g和Oracle 11g网格技术介绍


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3