dg oracle rac 重启一个节点_oracle rac +rac dg - CSDN
精华内容
参与话题
  • 如何Oracle_RAC恢复一个节点总结

    万次阅读 2016-07-05 22:48:14
    如何Oracle_RAC恢复一个节点总结 作者:51cto出处:博客2013-08-01 13:39  Rac1 已坏  Rac3 正常  先在rac3上把rac1的信息删干净,然后重新填加rac1  步骤如下:  1,在rac1上运行DBCA,...

    如何Oracle_RAC恢复一个节点总结

    作者:51cto出处:博客2013-08-01 13:39

      Rac1 已坏

      Rac3 正常

      先在rac3上把rac1的信息删干净,然后重新填加rac1

      步骤如下:

      1,在rac1上运行DBCA,删除instance;

      2,如果有ASM,删除ASM实例,

      srVCtl stop asm -n rac1

      srvctl remove asm -n rac1;

      3,在rac3上执行updateNodeList脚本

      /u01/Oracle/oracle/product/10.2.0/crs/oui/bin/runInstaller -updateNodeList ORACLE_HOME=/u01/oracle/oracle/product/10.2.0/crs "CLUSTER_NODES=rac1";

      4,在rac3上执行rootdeletenode.sh脚本

      $/u01/oracle/oracle/product/10.2.0/crs/install/rootdeletenode.sh rac1 1;

      5,在rac3上执行updateNodeList脚本更新CRS信息

      runInstaller -updateNodeList ORACLE_HOME=$CRS_HOME "CLUSTER_NODES=rac1";

      6,看下是不是删除成功了

      /u01/oracle/oracle/product/10.2.0/crs/bin/cluvfy comp crs -n all

      下边添加:(CRS_HOME=/u01/oracle/oracle/product/10.2.0/crs)

      在新的rac1上配置和rac3完全一样的所有信息,包括环境

      1,在rac3,以oracle用户进入$CRS_HOME/oui/bin目录,执行addNode.sh脚本

      /u01/oracle/oracle/product/10.2.0/crs/oui/bin/addNode.sh

      按照步骤添加

      2,ORACLE_HOME=/u01/oracle/db

      在rac3,以oracle用户进入$ORACLE_HOME/oui/bin目录,执行addNode.sh脚本

      按照步骤添加

      3,配置listener

      在rac1上运行netca,选择cluster database,按步骤配置

      4,在rac3上运行DBCA添加新的instance

      先选择...Cluster database...然后instance management然后add an instance然后...

      重装之后把RAC3的u01目录全部复制过去,运行root.sh之后,就可以了,不过需要重新配置ASM

      部分命令

      /u01/oracle/oracle/product/10.2.0/crs/bin/crs_stop ora.rac1.gsd

      /u01/oracle/oracle/product/10.2.0/crs/bin/crs_start ora.rac1.gsd

      /u01/oracle/oracle/product/10.2.0/crs/bin/crs_stop ora.rac1.LISTENER_RAC1.lsnr

      /u01/oracle/oracle/product/10.2.0/crs/bin/crs_start ora.rac1.LISTENER_RAC1.lsnr

      root@rac1 ~]# /u01/oracle/oracle/product/10.2.0/crs/bin/srvctl remove nodeapps -n rac1

      [root@rac1 ~]# /u01/oracle/oracle/product/10.2.0/crs/bin/crs_unreGISter ora.orcl.orcl1.inst

      [root@rac1 ~]# /u01/oracle/oracle/product/10.2.0/crs/bin/crs_unregister ora.rac1.ASM1.asm

      [root@rac1 ~]# /u01/oracle/oracle/product/10.2.0/crs/bin/crs_unregister ora.rac1.gsd

      [root@rac1 ~]# /u01/oracle/oracle/product/10.2.0/crs/bin/crs_unregister ora.rac1.ons

      [root@rac1 ~]# /u01/oracle/oracle/product/10.2.0/crs/bin/crs_unregister ora.rac1.vip

      /u01/oracle/oracle/product/10.2.0/crs/bin/crs_unregister ora.rac1.LISTENER_RAC1.lsnr

      [root@rac1 ~]# /u01/oracle/oracle/product/10.2.0/crs/bin/crs_unregister ora.rac1.LISTENER_RAC1.lsnr

      ./runInstaller -updateNodeList

      至此还有2 个节点的信息,使用以下命令删除:

      [root@rac1 ~]# /u01/oracle/oracle/product/10.2.0/crs/install/rootdeletenode.sh rac1,1

      [oracle@rac1 bin]$ /u01/oracle/oracle/product/10.2.0/crs/bin/olsnodes -n

      rac1 1

      到此节点删除完毕。

      通过以上可以看出,这种删除不过是把OCR 信息移除。

      ./srvctl remove nodeapps -n rac1,1

      可以发现RAC1 的信息已经全部逐出OCR。但是并没有完成所有的工作,还需要像开始一

      样更新CRS_HOME 和ORACLE_HOME

      [oracle@rac1 bin]$ ./runInstaller -updateNodeList ORACLE_HOME= /u01/oracle/oracle/product/10.2.0/crs "CLUSTER_NODES=rac3"

    展开全文
  • HA/DG/RAC 三者的区别

    千次阅读 2010-08-14 16:04:00
    高可用性解决方案分为4种 (DG AR RAC HA): 种是oracle提供的被用方法,Standby (=9i DataGuard) 种是AR (高级复制Advanced Replication,在以前版本叫快照snapshot) 种是oracle 并行...

    高可用性解决方案分为4种 (DG AR RAC HA):
    一种是oracle提供的被用方法,Standby (=9i DataGuard)
    一种是AR (高级复制Advanced Replication,在以前版本叫快照snapshot)
    一种是oracle 并行服务器8i的OPS (9i RAC,Real Application Cluster)
    一种是第三方HA解决方案(如Rose HA,故障切换时间是几分钟,也叫双机)

     

    各自应用的侧重点:
    HA 侧重于业务的自动接管,自动接管需要几分钟时间,且长期有一组Instance闲置,浪费资源,不能容灾。
    DG 侧重于容灾,独立存储,但两者数据不能做到实时同步。
    RAC侧重于负载均衡,但共享存储不能容灾。

     

    详细说明:
    HA 双机热备由两台计算机和一个共享存储设备构成,通过第三方软件(HA Rose等)实现切换,不需要做数据同步.

    DG Data Guard 是oracle的远程复制技术,由两个多两个以上的独立的数据库构成,他们各自有各自的存储,Oracle负责他们之间的切换和数据同步,它需要在异地有一套独立的系统,两套硬件配置可以不同的系统,但是这两套系统的软件结构保持一致,包括软件的版本,目录存储结构,以及数据的同步(其实也不是实时同的),这两套系统之间只要网络是通的就可以了,是一种异地容灾的解决方案。

    RAC 本地的高可用集群,RAC是多节点,每个节点一个INSTANCE,是保证应用的,只要有一个节点是正常运行的,就能连接到数据库,每个节点用来分担不同或相同的应用,以解决运算效率低下、单节点故障这样的问题,它是几台硬件相同或不相同的服务器,加一个SAN(共享的存储区域)来构成的。

     

    各自的应用:
    如是业务不要求24x7.可以考虑用dg.一台机器用于生成报表和查询..一台只用于一般的业务处理.dg主要用容灾.双机,RAC均是提供可用性,但他们实现的方法不同,数据库均放在共享设备上。
    双机同一时刻只能有一台主机接管,另一台待用,这种方式只能保护实例,不能保护db,而且备机长期处于闲置,对资源是一种极大的浪费!

    展开全文
  • ORACLE RAC+DG(单实例)

    万次阅读 2019-07-02 14:55:43
    ORACLE RAC+DG(单实例) 前提条件: 1.主库RAC已经成功安装,数据库也已经创建。 2.DG备库已经安装完相同版本的oracle软件,无需创建数据库。 1、RAC开启归档。 任意节点: alter system set log_archive_format='%t_%s...

    ORACLE RAC+DG(单实例)
    前提条件:
    1.主库RAC已经成功安装,数据库也已经创建。
    2.DG备库已经安装完相同版本的oracle软件,无需创建数据库。

    1、RAC开启归档。
    任意节点:

    alter system set log_archive_format='%t_%s_%r.arc' scope=spfile sid='*';
    alter system set log_archive_dest_1='LOCATION=+DATA/arch' scope=spfile sid='*';
    srvctl stop database -d racdb -o immediate
    startup mount
    alter database archivelog;
    alter database open;
    srvctl start database -d racdb
    

    查看每个节点的归档

    alter system switch logfile;
    archive log list;
    

    每个节点的归档序号是不一样的。

    2、启用force logging功能

    select force_logging from v$database;
    alter database force logging;
    

    3、查询主库日志文件

    select thread#,group#,members,bytes/1024/1024 from v$log;
    alter database add standby logfile thread 1 group 11 size 50m;
    alter database add standby logfile thread 1 group 12 size 50m;
    alter database add standby logfile thread 1 group 13 size 50m;
    alter database add standby logfile thread 2 group 14 size 50m;
    alter database add standby logfile thread 2 group 15 size 50m;
    alter database add standby logfile thread 2 group 16 size 50m;
    

    3、配置主库的初始化参数

    alter system set db_unique_name='racdb' scope=spfile;
    alter system set log_archive_config='DG_CONFIG=(racdb,racdg)' scope=both sid='*';
    alter system set log_archive_dest_1='LOCATION=+data/arch VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=racdb' scope=both sid='*';
    alter system set log_archive_dest_2='SERVICE=racdg LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=racdg' scope=both sid='*';
    alter system set log_archive_format='%t_%s_%r.arc' scope=spfile sid='*';
    alter system set log_archive_max_processes=8 scope=both sid='*';
    alter system set db_file_name_convert='/oradata/racdg/','+DATA/racdb/datafile' scope=spfile sid='*';
    alter system set log_file_name_convert='/oradata/racdg/','+DATA/racdb/onlinelog' scope=spfile sid='*';
    alter system set standby_file_management=AUTO scope=both sid='*';
    alter system set fal_server='rac_dg' scope=both sid='*';
    

    4、查询是否生效:

    set linesize 500 pages 0
    col value for a90
    col name for a50
    select name, value from v$parameter where name in ('db_name','db_unique_name','log_archive_config', 'log_archive_dest_1','log_archive_dest_2','log_archive_dest_state_1','log_archive_dest_state_2','remote_login_passwordfile','log_archive_format','log_archive_max_processes','fal_server','db_file_name_convert', 'log_file_name_convert', 'standby_file_management')
    

    5、配置本地服务名(两个节点保持一致)

    cd $ORACLE_HOME/network/admin
    vim tnsnames.ora
    
    RACDB =
      (DESCRIPTION =
        (ADDRESS = (PROTOCOL = TCP)(HOST = rac-scan)(PORT = 1521))
        (CONNECT_DATA =
          (SERVER = DEDICATED)
          (SERVICE_NAME = racdb)
        )
      )
    
    RACDB1 =
      (DESCRIPTION =
        (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.200.203)(PORT = 1521))
        (CONNECT_DATA =
          (SERVER = DEDICATED)
          (SERVICE_NAME = racdb)
        )
      )
    
    RACDB2 =
      (DESCRIPTION =
        (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.200.204)(PORT = 1521))
        (CONNECT_DATA =
          (SERVER = DEDICATED)
          (SERVICE_NAME = racdb)
        )
      )
    
    
    RACDG =
      (DESCRIPTION =
        (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.200.206)(PORT = 1521))
        (CONNECT_DATA =
          (SERVER = DEDICATED)
          (SERVICE_NAME = racdg)
        )
      )
    

    6、复制密码到DG节点
    使用oracle用户

    cd $ORACLE_HOME/dbs
    scp orapwracdb1 192.168.100.206:/$ORACLE_HOME/dbs/orapwracdg
    

    7、创建初始化文件。
    登录dg节点,使用oracle用户

    cd $ORACLE_HOME/dbs
    vim initracdg.ora
    如下:
    *.audit_file_dest='/u01/app/oracle/admin/racdg/adump'
    *.audit_trail='db'
    *.compatible='11.2.0.4.0'
    *.control_files='/oradata/racdg/control01.ctl'
    *.db_block_size=8192
    *.db_create_file_dest='/oradata/racdg'
    *.db_domain=''
    *.db_name='racdb'
    *.db_unique_name='racdg'
    *.diagnostic_dest='/u01/app/oracle'
    *.dispatchers='(PROTOCOL=TCP) (SERVICE=racdgXDB)'
    *.fal_client='racdg'
    *.fal_server='racdb'
    *.log_archive_config='DG_CONFIG=(racdb,racdg)'
    *.log_archive_dest_1='LOCATION=/oradata/arch VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=racdg'
    #*.log_archive_dest_2='SERVICE=racdb LGWR ASYNC VALID_FOR=(ALL_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=racdb OPTIONAL PROPEN=15 MAX_FAILU
    RE=10 NET_TIMEOUT=30'
    *.log_archive_dest_2='SERVICE=racdb LGWR ASYNC VALID_FOR=(ALL_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=racdb'
    *.log_archive_dest_state_2='enable'
    *.log_file_name_convert='+DATA/racdb/onlinelog','/oradata/racdg'
    *.db_file_name_convert='+DATA/racdb/datafile','/oradata/racdg'
    *.log_archive_format='%t_%s_%r.dbf'
    *.log_archive_max_processes=8
    *.open_cursors=300
    *.pga_aggregate_target=536870912
    *.processes=150
    *.remote_login_passwordfile='exclusive'
    *.standby_file_management='AUTO'
    *.sga_target=2147483648
    *.undo_tablespace='UNDOTBS1'
    

    8、主库做备份。

    rman targer /
    

    执行:

    backup database format '/oradata/backup/racdb_%T_%s';
    cd /oradata/backup/
    scp racdb* 192.168.200.206:/oradata/backup/
    

    9、创建目录

    mkdir -p /u01/app/oracle/admin/racdg/adump
    mkdir -p /oradata/racdg/
    mkdir -p /oradata/arch/
    

    10、创建LISTENER

    LISTENER =
       (DESCRIPTION_LIST =
         (DESCRIPTION =
           (ADDRESS = (PROTOCOL = TCP)(HOST = racdg)(PORT = 1521)))
              (DESCRIPTION =
           (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
         )
        )
       ADR_BASE_LISTENER = /u01/app/oracle 
    

    11、启动mount

    startup mount;
    rman恢复数据库
    rman target /
    catalog start with '/oradata/backup';
    run {
    allocate channel ch00 type disk;
    allocate channel ch01 type disk;
    allocate channel ch02 type disk;
    allocate channel ch03 type disk;
    set newname for datafile 1 to '/oradata/racdg/system.dbf';
    set newname for datafile 2 to '/oradata/racdg/sysaux.dbf';
    set newname for datafile 3 to '/oradata/racdg/undotbs1.dbf';
    set newname for datafile 4 to '/oradata/racdg/users.dbf';
    set newname for datafile 5 to '/oradata/racdg/undotbs2.dbf';
    set newname for datafile 6 to '/oradata/racdg/test.dbf';
    set newname for datafile 7 to '/oradata/racdg/test01.dbf';
    restore database;
    switch datafile all;
    release channel ch00;
    release channel ch01;
    release channel ch02;
    release channel ch03;
     }
    

    12、standby开启实时同步

    alter database recover managed standby database using current logfile disconnect from session;
    停止同步:
    alter database recover managed standby database cancel;
    

    13、 主库查询进程状态(注意LNS进程)

    select process, client_process, sequence#,thread#,status from v$managed_standby;
    ![如下图](https://img-blog.csdnimg.cn/20190702144431875.jpg)
    

    14、备库查询进程状态(注意RFS进程和MRP0进程)

    select process, client_process, sequence#,thread#,status from v$managed_standby;
    ![如下图](https://img-blog.csdnimg.cn/20190702144626345.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MjIzOTE4Nw==,size_16,color_FFFFFF,t_70)
    

    15、查询日志

    select sequence#, first_time, next_time, applied from v$archived_log order by sequence#;
    

    16、主库手动切换日志

    alter system switch logfile;
    

    17、查询日志

    select sequence#, first_time, next_time, applied from v$archived_log order by sequence#;
    

    18、打开datagaurd模式

     alter database recover managed standby database cancel;
     alter database open read only;
     alter database recover managed standby database using current logfile disconnect from session;
    

    19、查看数据库模式

        主库:
        SQL>  select open_mode,database_role,switchover_status from v$database;
        
        OPEN_MODE	     DATABASE_ROLE    SWITCHOVER_STATUS
        -------------------- ---------------- --------------------
        READ WRITE	     PRIMARY	      SESSIONS ACTIVE
        备库:
        SQL> select open_mode,database_role,switchover_status from v$database;
        
        OPEN_MODE	     DATABASE_ROLE    SWITCHOVER_STATUS
        -------------------- ---------------- --------------------
        READ ONLY WITH APPLY PHYSICAL STANDBY NOT ALLOWED
    
    展开全文
  • ORACLE rac集群概念和原理

    万次阅读 2019-04-17 15:21:35
    多个Oracle服务器组成一个共享的Cache,而这些Oracle服务器共享一个基于网络的存储。这个系统可以容忍单机/或是多机失败。不过系统内部的多个节点需要高速网络互连,基本上也就是要全部东西放...

    转载自点击打开链接

    Oracle集群概念和原理

    Oracle的三种高可用集群方案

    1 RAC(Real Application Clusters)

                          

    多个Oracle服务器组成一个共享的Cache,而这些Oracle服务器共享一个基于网络的存储。这个系统可以容忍单机/或是多机失败。不过系统内部的多个节点需要高速网络互连,基本上也就是要全部东西放在在一个机房内,或者说一个数据中心内。如果机房出故障,比如网络不通,那就坏了。所以仅仅用RAC还是满足不了一般互联网公司的重要业务的需要,重要业务需要多机房来容忍单个机房的事故。

    2 Data Guard.(最主要的功能是冗灾)

    Data Guard这个方案就适合多机房的。某机房一个production的数据库,另外其他机房部署standby的数据库。Standby数据库分物理的和逻辑的。物理的standby数据库主要用于production失败后做切换。而逻辑的standby数据库则在平时可以分担production数据库的读负载。

    3 MAA

    MAA(Maximum Availability Architecture)其实不是独立的第三种,而是前面两种的结合,来提供最高的可用性。每个机房内部署RAC集群,多个机房间用Data Guard同步。

    RAC概述

    共享存储文件系统(NFS),或甚至集群文件系统(如:OCFS2)主要被用于存储区域网络(所有节点直接访问共享文件系统上存储器),这就使得节点失效而不影响来自其他节点对文件系统的访问,通常,共享磁盘文件系统用于高可用集群。

    Oracle RAC的核心是共享磁盘子系统,集群中所有节点必须能够访问所有数据、重做日志文件、控制文件和参数文件,数据磁盘必须是全局可用的,允许所有节点访问数据库,每个节点有它自己的重做日志和控制文件,但是其他节点必须能够访问它们以便在那个节点出现系统故障时能够恢复。

    Oracle RAC 运行于集群之上,为 Oracle 数据库提供了最高级别的可用性、可伸缩性和低成本计算能力。如果集群内的一个节点发生故障,Oracle 将可以继续在其余的节点上运行。Oracle 的主要创新是一项称为高速缓存合并的技术。高速缓存合并使得集群中的节点可以通过高速集群互联高效地同步其内存高速缓存,从而最大限度地低降低磁盘 I/O。高速缓存最重要的优势在于它能够使集群中所有节点的磁盘共享对所有数据的访问。数据无需在节点间进行分区。Oracle 是唯一提供具备这一能力的开放系统数据库的厂商。其它声称可以运行在集群上的数据库软件需要对数据库数据进行分区,显得不切实际。企业网格是未来的数据中心,构建于由标准化商用组件构成的大型配置之上,其中包括:处理器、网络和存储器。Oracle RAC 的高速缓存合并技术提供了最高等级的可用性和可伸缩性。Oracle 数据库 10g 和 OracleRAC 10g 显著降低了运营成本,增强了灵活性,从而赋予了系统更卓越的适应性、前瞻性和灵活性。动态提供节点、存储器、CPU 和内存可以在实现所需服务级别的同时,通过提高的利用率不断降低成本。

    RAC 集成集群件管理

    Oracle RAC 10g 在 Oracle 数据库 10g 运行的所有平台上提供了一个完整集成的集群件管理解决方案。这一集群件功能包括集群连接、消息处理服务和锁定、集群控制和恢复,以及一个工作负载管理框架(将在下文探讨)。Oracle RAC 10g 的集成集群件管理具有以下优势:

    (一) 成本低。Oracle 免费提供这一功能。

    (二) 单一厂商支持。消除了相互推诿的问题。

    (三) 安装、配置和持续维护更简单。Oracle RAC 10g 集群件使用标准 Oracle 数据库管理工具进行安装、配置和维护。这一过程无须其它的集成步骤。

    (四) 所有平台,质量始终如一。与第三方产品相比,Oracle 对新软件版本进行了更严格的测试。

    (五) 所有平台,功能始终如一。例如,一些第三方集群件产品限制了集群内可以支持的节点的数量。借助Oracle RAC 10g,所有平台可以支持多达 64 个节点。用户还可以在所有平台上获得一致的响应体验,从而有效解决了高可用性挑战,包括服务器节点故障、互连故障以及 I/O 隔离现象等。

    (六) 支持高级功能。这包括集成监视和通知功能,从而在发生故障时,在数据库和应用层之间实现快速协调的恢复。

    RAC 的体系结构

    RAC 是 Oracle 数据库的一个群集解决方案,是有着两个或者两个以上的数据库节点协调运作能力的。如下图所示的 RAC 结构图:

    集群管理器(Cluster Manager)在集群系统中对其他各个模块进行整合,通过高速的内连接来提供群集节点之间的通信。各节点之间内连接使用心跳线互联,心跳线上的信息功能确定群集逻辑上的节点成员信息和节点更新情况,以及节点在某个时间点的运行状态,保证群集系统正常运行。通信层管理节点之间的通信。它的职责是配置,互联群集中节点信息,在群集管理器中使用由心跳机制产生的信息,由通信层负责传输,确保信息的正确到达。还有一些群集监视进程不断验证系统的不同领域运行状况。例如,心跳监测不断验证的心跳机制的运作是否良好。在一个应用环境当中,所有的服务器使用和管理同一个数据库,目的是分散每一台服务器的工作量。硬件上至少需要两台以上的服务器,而且还需要一个共享存储设备;同时还需要两类软件,一类是集群软件,另外一类就是 Oracle 数据库中的 RAC 组件。同时所有服务器上的 OS 都应该是同一类 OS,根据负载均衡的配置策略,当一个客户端发送请求到某一台服务的 listener 后,这台服务器根据负载均衡策略,会把请求发送给本机的 RAC组件处理,也可能会发送给另外一台服务器的 RAC 组件处理,处理完请求后,RAC 会通过群集软件来访问共享存储设备。逻辑结构上看,每一个参加群集的节点有一个独立的实例,这些实例访问同一个数据库。节点之间通过集群软件的通信层(Communication Layer)来进行通信。同时为了减少 I/O 的消耗,存在一个全局缓存服务,因此每一个数据库的实例,都保留了一份相同的数据库 cache。RAC 中的特点如下:

    • l   每一个节点的实例都有自己的 SGA;
    • l   每一个节点的实例都有自己的后台进程
    • l   每一个节点的实力都有自己的 redo logs
    • l   每一个节点的实例都有自己的 undo 表空间
    • l   所有节点都共享一份 datafiles 和 controlfiles

    RAC 的结构组成和机制

    在 Oracle9i 之前,RAC 称为 OPS(Oracle Parallel Server)。RAC 与 OPS 之间的一个较大区别是,RAC 采用了Cache Fusion(高缓存合并)技术,节点已经取出的数据块更新后没有写入磁盘前,可以被另外一个节点更新,然后以最后的版本写入磁盘。在 OPS 中,节点间的数据请求需要先将数据写入磁盘,然后发出请求的节点才可以读取该数据。使用 Cache Fusion 时,RAC 的各个节点间数据缓冲区通过高速、低延迟的内部网络进行数据块的传输。下图是一个典型的 RAC 对外服务的示意图,一个 Oracle RAC Cluster 包含了如下的部分

    1. 集群的节点(Cluster node)——2 个到 N 个节点或者主机运行 Oracle Database Server。
    2. 私有网络(Network Interconnect)——RAC 之间需要一个高速互联的私有网络来处理通信和 Cache Fusion。
    3. 共享存储(shared Storage)——RAC 需要共享存储设备让所有的节点都可以访问数据文件。
    4. 对外服务的网络(Production Network)——RAC 对外服务的网络。客户端和应用都通过这个网络来访问。

    RAC 后台进程

    Oracle RAC 有一些自己独特的后台进程,在单一实例中不发挥配置作用。如下图所示,定义了一些 RAC 运行的后台进程。这些后台进程的功能描述如下。

    (1)LMS(Global cache service processes 全局缓存服务进程)进程主要用来管理集群内数据块的访问,并在不同实例的 Buffer Cache 中传输数据块镜像。直接从控制的实例的缓存复制数据块,然后发送一个副本到请求的实例上。并保证在所有实例的 Buffer Cache 中一个数据块的镜像只能出现一次。LMS 进程靠着在实例中传递消息来协调数据块的访问,当一个实例请求数据块时,该实例的 LMD 进程发出一个数据块资源的请求,该请求指向主数据块的实例的 LMD 进程,主实例的 LMD 进程和正在使用的实例的 LMD 进程释放该资源,这时拥有该资源的实例的 LMS 进程会创建一个数据块镜像的一致性读然后把该数据块传递到请求该资源的实例的BUFFER CACHE 中。LMS 进程保证了在每一时刻只能允许一个实例去更新数据块,并负责保持该数据块的镜像记录(包含更新数据块的状态 FLAG)。RAC 提供了 10 个 LMS 进程(0~9),该进程数量随着节点间的消息传递的数据的增加而增加。(2)LMON(Lock Monitor Process,锁监控进程)是全局队列服务监控器,各个实例的 LMON 进程会定期通信,以检查集群中各个节点的健康状况,当某个节点出现故障时,负责集群重构、GRD 恢复等操作,它提供的服务叫做 Cluster Group Service(CGS)。

    LMON 主要借助两种心跳机制来完成健康检查。

    (一) 节点间的网络心跳(Network Heartbeat):可以想象成节点间定时的发送 ping 包检测节点状态,如果能在规定时间内收到回应,就认为对方状态正常。

    (二) 通过控制文件的磁盘心跳(controlfile heartbeat):每个节点的 CKPT 进程每隔 3 秒钟更新一次控制文件的数据块,这个数据块叫做 Checkpoint Progress Record,控制文件是共享的,所以实例间可以互相检查对方是否及时更新来判断。

    (三) LMD(the global enqueue service daemon,锁管理守护进程)是一个后台进程,也被称为全局的队列服务守护进程,因为负责对资源的管理要求来控制访问块和全局队列。在每一个实例的内部,LMD 进程管理输入的远程资源请求(即来自集群中其他实例的锁请求)。此外,它还负责死锁检查和监控转换超时。

    (四) LCK(the lock process,锁进程)管理非缓存融合,锁请求是本地的资源请求。LCK 进程管理共享资源的实例的资源请求和跨实例调用操作。在恢复过程中它建立一个无效锁元素的列表,并验证锁的元素。由于处理过程中的 LMS 锁管理的首要职能,只有一个单一的 LCK 进程存在每个实例中。

    (五) DIAG(the diagnosability daemon,诊断守护进程)负责捕获 RAC 环境中进程失败的相关信息。并将跟踪信息写出用于失败分析,DIAG 产生的信息在与 Oracle Support 技术合作来寻找导致失败的原因方面是非常有用的。每个实例仅需要一个 DIAG 进程。

    (六) GSD(the global service daemon,全局服务进程)与 RAC 的管理工具 dbca、srvctl、oem 进行交互,用来完成实例的启动关闭等管理事务。为了保证这些管理工具运行正常必须在所有的节点上先start gsd,并且一个 GSD 进程支持在一个节点的多个 rac.gsd 进程位ORACLE_HOME/srvm/log/gsdaemon.log。GCS 和 GES 两个进程负责通过全局资源目录(Global Resource Directory GRD)维护每个数据的文件和缓存块的状态信息。当某个实例访问数据并缓存了数据之后,集群中的其他实例也会获得一个对应的块镜像,这样其他实例在访问这些数据是就不需要再去读盘了,而是直接读取 SGA 中的缓存。GRD 存在于每个活动的 instance 的内存结构中,这个特点造成 RAC 环境的 SGA 相对于单实例数据库系统的 SGA 要大。其他的进程和内存结构都跟单实例数据库差别不大。

    RAC 共享存储

    RAC 需要有共享存储,独立于实例之外的信息,如上面提到的ocr 和 votedisk 以及数据文件都存放在这个共享存储里的。有OCFS、OCFS2、RAW、NFS、ASM 等这样的一些存储方式。OCFS(Oracle Cluster File System) 和 OCFS2 就是一个文件系统而已,和 NFS 一样,提供一种集群环境中的共享存储的文件系统。RAW 裸设备也是一种存储方式,是 oracle11g 之前的版本中 RAC 支持的存储方式,在 Oralce9i 之前,OPS/RAC的支持只能使用这样的方式,也就是把共享存储映射到 RAW Device,然后把 Oracle 需要的数据选择 RAW device存储,但是 RAW 相对于文件系统来说不直观,不便于管理,而且 RAW Device 有数量的限制,RAW 显然需要有新的方案来代替,这样就有了 OCFS 这样的文件系统。当然,这只是 Oracle 自己的实现的集文件系统而已,还有其他厂商提供的文件系统可以作为存储的选择方案。ASM 只是数据库存储的方案而已,并不是 cluster 的方案,所以这里 ASM 应该是区别于 RAW 和 OCFS/OCFS2同一级别的概念,RAW 和 OCFS/OCFS2 不仅可以作为数据库存储的方案,同时也可以作为 Clusterware 里的存储方案,是 CRS 里需要的 storage,而 ASM 仅作为数据库的存储而已,严格来说仅是 RAC 中的一个节点应用(nodeapps)。ASM 对于 clusterware 安装时需要的 ocr 和 votedisk 这两项还不支持,毕竟 ASM 本身就需要一个实例,而 CRS 是完全在架构之外的,这也就是为什么使用了 ASM 的方案,却总还要加上 OCFS/OCFS2 和 RAW 其中的一个原因。各种 RAC 共享存储方式的对比如下:

    1. 集群文件系统——支持 windows 和 Linux 的 OCFS/OCFS2
    2. AIX 下的 GPFS 等方式——优点是管理方便,表示也很直观,但缺点是基于文件系统管理软件,又要经过 OS 的 cache 处理,性能上和稳定性上都有欠缺,所以不适合在生产环境下使用。可以支持 CRS 集群软件文件和数据库文件。
    3. RAW 裸设备方式——通过硬件支持的共享存储系统,直接用 RAW 设备存储,可以支持集群软件文件和数据库文件。
    4. 网络文件系统(NFS)——通过 NFS 实现共享存储,不过需要经过 Oracle 认证的 NFS 才行,可以支持CRS 集群软件文件和数据库文件。
    5. ASM——集合 RAW 方式 I/O 高性能和集群文件系统易管理等优点,Oracle10g 下推出的共享存储方式,但是本身 ASM 就是需要 Oracle 的实例支持,所以 ASM 仅支持数据库文件,而不支持 CRS 文件。

    RAC 数据库和单实例数据库的区别

    为了让 RAC 中的所有实例能够访问数据库,所有的 datafiles、control files、PFILE/Spfile 和 redo log files 必须保存在共享磁盘上,并且要都能被所有节点同时访问,就涉及到裸设备和集群文件系统等。RAC database 在结构上与单实例的不同之处:至少为每个实例多配置一个 redo 线程,比如:两个实例组成的集群至少要 4 个 redo log group。每个实例两个 redo group。另外要为每一个实例准备一个 UNDO 表空间。

    1、redo 和 undo,每个实例在做数据库的修改时谁用谁的 redo 和 undo 段,各自锁定自己修改的数据,把不同实例的操作相对的独立开就避免了数据不一致。后面就要考虑备份或者恢复时 redo log 和归档日志在这种情况下的特殊考虑了。

    2、内存和进程各个节点的实例都有自己的内存结构和进程结构.各节点之间结构是基本相同的.通过 Cache Fusion(缓存融合)技术,RAC 在各个节点之间同步 SGA 中的缓存信息达到提高访问速度的效果也保证了一致性。

    展开全文
  • Data Guard 是Oracle的远程复制技术,它有物理和逻辑之分,但是总的来说,它需要在异地有套独立的系统,这是两套硬件配置可以不同的系统,但是这两套系统的软件结构保持一致,包括软件的版本,目录存储结构,以及...
  • oracle双机/RAC/Dataguard的区别

    千次阅读 2012-09-14 09:28:16
    高可用性解决方案分为4种 (DG、AR、RAC、HA): 种是oracle提供的被用方法,Standby (=9i DataGuard) 种是AR (高级复制Advanced Replication,在以前版本叫快照snapshot) 种是oracle并行服务器8i的OPS (9i RAC...
  • Oracle 11g环境,RAC的关闭和启动顺序

    千次阅读 2017-06-13 17:07:03
    Oracle 11g环境中,Oracle的关闭和启动顺序如下: ... [oracle@rac1 ~]$ srvctl stop database -d ORCL ---停止所有节点上的实例   或者每个节点登录数据库后执行SQL>shutdown immediate   2
  • Data Guard 是Oracle的远程复制技术,它有物理和逻辑之分,但是总的来说,它需要在异地有套独立的系统,这是两套硬件配置可以不同的系统,但是这两套系统的软件结构保持一致,包括软件的版本,目录存储结构,以及...
  • oracle 12c rac管理命令梳理

    千次阅读 2017-11-21 17:23:28
    只停一个节点上的数据库实例rac2 2、查看数据库实例状态: Srvctl status database -d tar -f -v 我这边四节点集群,目前只起了节点1和节点2. 3、启动实例 Srvctl start instance -d tar -n rac2 指定启动...
  • Oracle 11g RAC更改归档到ASM

    千次阅读 2015-10-27 14:38:11
    本实验有两个节点 rac01test,rac02test oracle_sid 分别是 xedb01,xedb02 1.在节点1 rac01test 上执行 [root@rac01test bin]# su - grid [grid@rac01test ~]$ sqlplus / as sysdba SQL*Plus: Release 11.2.0.4.0 ...
  • oracle11g r2 rac环境删除节点步骤

    千次阅读 2015-02-03 15:57:09
    oracle11g r2 rac环境删除节点步骤 1.移除数据库实例 如果节点运行了service首先需要删除service 使用dbca图形化界面删除节点 依次选择 Real Application Clusters -- > Instance Management --- > Delete ...
  • oracle RAC如何正确地删除ASM磁盘组

    千次阅读 2018-01-20 18:00:04
    1.检查确认要删除的磁盘组是否在用 select * from dba_data_files; select * from dba_temp_files;...2.先在各节点上dismount磁盘组 alter diskgroup REDO01 dismount; alter diskgroup REDO02 dismount; alte
  • ORACLE RAC ONE NODE技术介绍

    千次阅读 2017-06-11 21:08:52
    1. 概述  时代总是在进步的,这总是得益于新的生产技术的出现,我们总是有太多的问题需要解决,对于技术人员来说,当项新的技术的出现并解决了困扰...本文主要谈谈oracle rac中的项新技术革新,即oracle rac one
  • RedHat 7.4下Oracle 19c RAC部署

    万次阅读 2019-11-22 21:35:29
    RedHat 7.4下Oracle 19c RAC部署、主机环境以及配置1.1 Oracle 软硬件要求1.2 ASM磁盘组规划1.3 主机网络规划1.4 操作系统配置部分二、Grid集群软件安装部分三、Oracle DataBase软件安装四、DBCA创建实例 、主机...
  • Oracle 11g RAC 搭建详细步骤

    万次阅读 2017-03-03 11:08:42
    oracle rac 11g 安装 asm udev iscsi
  • Oracle11g RAC集群启动关闭管理

    千次阅读 2015-11-05 09:42:57
    简单的Oracle11g RAC集群启动关闭管理1.切换到集群用户grid[root@rac1 ~]# su - grid2.查看集群资源状态(黄色标注11G不使用此资源 所以OFFLINE为正常状态)[grid@rac1 ~]$ crs_stat -t Name Type Target State Host...
  • Oracle dataguard不传输归档问题

    千次阅读 2016-07-05 16:26:37
    环境说明:(一主两备...第一个目标端:redhat 6.5 + Oracle 11.2.0.4 单机 (使用log_archive_dest2与主端rac通信) 第二个目标端:redhat 6.5 + Oracle 11.2.0.4 单机 (使用log_archive_dest3与主端rac通信)
  • Oracle 11g RAC搭建(VMware环境)

    万次阅读 多人点赞 2018-07-16 17:06:15
    Oracle 11g RAC搭建(VMware环境)Oracle 11g RAC搭建VMware环境 安装环境与网络规划 安装环境 网络规划 环境配置 通过SecureCRT建立命令行连接 关闭防火墙 创建必要的用户组和目录并授权 节点配置检查 系统文件设置...
  • oracle 12c rac ocr和votedisk管理

    千次阅读 2017-11-10 17:25:48
    1、查看磁盘组信息 asmcmd lsdg 查看磁盘组的具体信息(总大小,可用等) 2、
1 2 3 4 5 ... 20
收藏数 3,646
精华内容 1,458
关键字:

dg oracle rac 重启一个节点