精华内容
下载资源
问答
  • Oracle RAC技术随笔1

    2017-09-24 13:44:57
    本文档主要是总结Oracle RAC技术。rac数据库在8i的时候已经被提出,不过那个时候内存融合技术还不成熟,只能实现内存读,内存写暂时还不支持。那个时候orac rac还处于OPS(Oracle Parallel Server)阶段。到了9i的时候...

    本文档主要是总结Oracle RAC技术。

    rac数据库在8i的时候已经被提出,不过那个时候内存融合技术还不成熟,只能实现内存读,内存写暂时还不支持。那个时候orac rac还处于OPS(Oracle Parallel Server)阶段。到了9i的时候,真正实现内存读写技术,为了实现cache fusion技术GRD(Global Resource Directoty )被引入,在整个系统中,控制文件类似于votedisk功能,每个实例都会向控制文件注册自己的信息,同时通过控制文件获取实例列表和实例状态信息,这个功能被称作CGS(cluster Group Service),CGS这些功能主要通过LMON后台进程来实现的。其中 GCS内存块负责对PCM资源(数据块)访问和管理;GES内存块主要负责对non-PCM资源(队列)的访问和 管理。GCS主要由LMS进程实现,GES功能主要由LMD进程来实现。
    这里写图片描述
    oracle rac到10g才算完整,在10g之前都需要第三方厂家提供集群管理服务。10g提出了一个集群管理软件-CRS(cluster ready service ),这时oracle 能够提供系统层面和数据库层面的集群服务。

    CRS :

    作为集群层面的服务,运行在每个节点上,负责维护集群一致性,管理集群资源。主要分为CSS(Cluster Sync Service),CRS(Cluster ready Service)和EVM(Event Manager)。
    CSS 主要负责和维护集群一致性,通过ocssd守护进程来实现,ocssd由oracle用户启动运行。获取节点列表和节点状态信息。
    CRS主要负责对集群所有的应用进行管理,实现高可用性。主要通过crsd守护进程来完成,由root用户启动运行。crsd会通过OCR中记录的信息获取集群节点列表以及集群需要管理资源的列表,一般包括 数据库资源,ASM,监听,VIP,ONS,gsd和数据库服务。CRSD通过对应的racg组件对所有的应用程序进行管理,包括启动,停止,检查和删除操作。
    EVM主要负责产生 并记录集群事件信息,并在节点之间传递。主要通过evmd守护进程来完成,由oracle用户来启动运行。
    而从RAC数据库的角度来看,内存融合技术并没有太大的改变,最主要的变化有DRM ( Dynamic Resource Mastering)和SCN BOC ( Broadcast-On-Commit)。DRM的出现使得GCS资源的主节点 信息可以根据应用程序 在不同节点上的访问频率而动态地在不同节点之间进行迁移。SCN BOC的出现使得在 实例之间传播 SCN 变得更加实时和高效,也使得队C数据库能够成功地应用在超高并发量、 高反应时间的 OLTP系统中。
    可以将llgR2版本的集群 管理软件分成:集群初始化组件 、集群存储管理组件和应用程序组件。
    集群初始化组件负责完成对集群的初始化工作,主要包括:启动ohasd守护进程, bootstrap本地节点,启动ocssd,构建集群 并维护集群一致性。
    集群存储管理组件负责管理集群的共享存储一ASM磁盘组,主要包括:启动ASM实例,挂载ASM磁盘组,管理 ASM实例和磁盘组。 需要说明的是,在llgR2版本中,OCR和VF也可以保存在ASM磁盘组中。
    应用程序组件负责管理集群当中的应用程序资掠,主要包括:启动CRSD守护进程 ,通过OCR中的信息启动并管理集群中的所有应用程序资源,实现应用程序资源的高可用性。
    通过下图了解llgR2集群管理软件的各个组件的基本结构:
    这里写图片描述
    从上面的图片中可以看到,在llgR2这个版本中,ohasd变成了一切的源头,所有的组
    件都以资源的形式存在,而每个资源都由对应的代理进程进行管理。 当然,ohasd除外。 在 上图的资源当中,集群初始化组件包括的资源有:ora.gipc、ora.gpnp、ora.mdns、ora.ctss、 ora.asm、ora.cssd、ora.cssdmonitor等。 集群存储管理组件包括的资源有:ora.asm、ora.<磁盘组名>.dg等。应用程序组件包括的资源有:ora.crsd、ora.LISTENER.ls町、ora.netl. network、ora.< 节点名>.vip、ora.scan. ip、ora.gns、ora.gns.vip、ora.ons、ora.scan_ listener.Ism、ora.<数据库名>.db,ora.<数据库名>.<服务名>.srv 。
    LMHB 进程是l lgR2 版本中新出现的后台进程,用于监控和内存融合相关的所有后台进程,当这些进程当中的一个或多个出现性能问题时,LMHB通过终止阻塞进程或者终止实例的方式来避免出现数据库挂起的问题。
    12C 最大的新特性就是Flex ASM 和Flex Cluster。Flex ASM 使得数据库和ASM 实例彻底摆脱了l 对l 的关系,也就是说在集群中只有一部分节点运行ASM 实例,数据库实例不再依赖本地节点的ASM 实例。Flex Cluster 把集群中的节点分成了HUB 节点和LEAF 节点,这使得集群的组织结构更加松散,集群可以包含的节点更多,而且集群可以管理的应用程序种类更多。
    从数据库的角度来讲,12C 最大的新特性莫过于多租户(Mu ltitenant) 和in-memory 选项。
    多租户概念的出现彻底打破了传统数据库的架构,使得数据库可以像一个通用的可插拔设备
    一样灵活地在各个conta in er 数据库间进行plug 和unplug 操作。同时,12C 作为全世界唯一一
    款为云应用设计的数据库,也为DaaS 和其他的云服务提供了坚实的技术基础。12C 的另外
    一个新特性一一IN-Memory 选项绝对是突破性的,它是世界上第一款同时支持行存储和列存
    储的数据库软件(也就是用户经常提到的双模式),同时也是唯一一款可以同时支持OLTP 和
    OLAP 应用的数据库软件。
    这里写图片描述
    这里写图片描述

    ASM:

    ASM 作为存储层面的服务,负责集群和应用程序的数据存储和管理。
    ASM管理是通过ASM INSTANCE来实现的,通过ASM磁盘组来实现磁盘管理。在10g的时候CRS和votedisk还不支持ASM。
    在oracle 11g R2开始,建议角色权限分离管理,把oracel数据库和GI分用户,分权限个离管理,
    . oinstall:这个组是GI和数据库软件的拥有者组。
    . dba:这个组是数据库的 dba组,对 数据库具有最高权限。
    . asmdba:这个组是ASM实例的 dba组,可以启动/关闭实例,挂载/卸载ASM磁
    盘组。
    . asmadmin :这个组是ASM的管理员组,它包含asmdba的全部权限,同时还 可以增
    加/删除ASM磁盘、磁盘组等。

    Inventory目录:

    实际上就是一台主机上的eoracle产品清单,在oracle做升级或安装其他版本的时候会读取到,通过/etc/oraInst.loc记录其位置,其核心文件是inventory.xml,它位于<inventory_loc>/ContentsXML路径下。如果此文件损坏 可以使用runlnstaller 工具(这个工具位于<gi_ home>/oui/bin 路径下)重建 inventory.xml。
    添加gi_home:
    $./runinstaller -silent -ignoreSysPrereqs -attachHome ORACLE HO阻=” /uOl/app/11.2. 0/gri d” O RACLE HOME NAME= “oraGillHome l” C LUSTER NODES=test2, test3, test4 CRS=true ” INVENTORY_LOCATION=/uOl/app/orainventory” LOCAL_NODE=test2
    添加rdbms_home:
    . /runinstaller -silent -ignoreSysPrereqs -attachHome ORACLE HOME=”/u02/app/oralce/product/11.2.0/db_1” oracle_home_name=”oradbHome2” cluster_nodes=test1,test2 crs=true INVENTORY LOCATION=”/uOl/app/oralnventory”local_node=test2

    lcoal Inventory 目录:

    Local Inventory 用于保存某一个oracle_home 下所安装的组件清单, 它位于<oracle_home>/inventory 下。由于Local Inventory 针对特定的软件主目录, 所以并不存在inventory.xml 文件。文件<oracle_home>/inventory/ContentsXML/comps.xml 记录了对应主目录下安装的所有组件。

    cluvfy工具:

    cluvfy ( Cluster Verify), 简称cvu , 是随Oracle 集群管理软件一起发布的检查工具。cluvfy 能对集群提供非常广泛的检查, 包括: OS 硬件配置、内核参数设置、用户资源限制设置、网络设置、NTP 设置、RAC 组件健康性等。cluvfy 在进行检查时并不会修改系统配置, 所以不会对系统造成影响。
    比如:cluvfy stage -pre crsinst -n nide1,node2 -r 11gr2 -verbose
    -r :检查的版本 10g R1 ,10gR2 ,11gR1, 11gR2.
    -verbose 列出详细检查内容
    pre crsinst :安装集群管理软件(GI)之前。
    postcrsinst:安装集群管理软件之后。
    pre dbinst:安装数据库软件之前。
    pre dbcfg:创建数据库之前。

    root.sh 脚本

    jhdb02-> more oracle/product/11.2.0/db_1/root.sh
    #!/bin/sh
    . /u01/app/oracle/product/11.2.0/db_1/install/utl/rootmacro.sh "$@"
    . /u01/app/oracle/product/11.2.0/db_1/install/utl/rootinstall.sh
    /u01/app/oracle/product/11.2.0/db_1/install/unix/rootadd.sh
    
    #
    # Root Actions related to network
    #
    /u01/app/oracle/product/11.2.0/db_1/network/install/sqlnet/setowner.sh 
    
    #
    # Invoke standalone rootadd_rdbms.sh
    #
    /u01/app/oracle/product/11.2.0/db_1/rdbms/install/rootadd_rdbms.sh
    
    /u01/app/oracle/product/11.2.0/db_1/rdbms/install/rootadd_filemap.sh 

    1 . /uOl/app/11.2.0/grid/install/utl/rootmacro.sh 负责一些和 gi_home 相关的验证工作。
    2 . 0 /uO 1/app/l l .2.0/grid/install/utl/rootinstall.sh 负责创建一些本地文件。
    3 . /uOl/app/11.2. 0/grid/network/install/sqlnet/setowner.sh 负责创建 GI 相关的临时文件。
    4./uOl/app/11.2.0/grid/rdbms/install/rootadd _rdbms.sh 负责验证一些文件的权限。
    5 . /uO l/app/11.2.0/grid/rdbms/install/rootadd _ filemap.sh 负责验证一些文件的权限。
    root.sh脚本核心脚本是 /u01/app/ 11.2. 0/ grid/ crs/ config/rootconfig.sh,这个脚本调用/crs/install/rootcrs.pl脚本来初始化和配置集群。

    jhdb02-> more /u01/app/11.2.0/grid/crs/config/rootconfig.sh

    #!/bin/sh
    ORACLE_HOME=/u01/app/11.2.0/grid
    ROOTSCRIPT_ARGS=""
    #if upgrade/force/verbose command line args are passed, set ROOTSCRIPT_ARGS accordingly.
    for var in "$@"
    do
      if [ "$var" = "-upgrade" ]; then
        ROOTSCRIPT_ARGS=$ROOTSCRIPT_ARGS"$var "
      elif [ "$var" = "-force" ]; then
        ROOTSCRIPT_ARGS=$ROOTSCRIPT_ARGS"$var "
      elif [ "$var" = "-verbose" ]; then
        ROOTSCRIPT_ARGS=$ROOTSCRIPT_ARGS"$var "
      fi
    done
    
    . $ORACLE_HOME/install/utl/rootmacro.sh
    
    SU=/bin/su
    SW_ONLY=false
    ADDNODE=false
    GI_WIZARD=false
    HA_CONFIG=false
    RAC9I_PRESENT=false
    CMDLLROOTSH_CMD=$ORACLE_HOME/crs/install/cmdllroot.sh
    CONFIGSH_CMD="$ORACLE_HOME/crs/config/config.sh"
    ROOTHASPL="$ORACLE_HOME/perl/bin/perl -I$ORACLE_HOME/perl/lib -I$ORACLE_HOME/crs/install $ORACLE_HOME/crs/install/roothas.pl"
    ROOTCRSPL="$ORACLE_HOME/perl/bin/perl -I$ORACLE_HOME/perl/lib -I$ORACLE_HOME/crs/install $ORACLE_HOME/crs/install/rootcrs.pl"
    ROOTSCRIPT=""
    ISLINUX=false
    EXITCODE=0
    # For addnode cases
    CRSCONFIG_ADDPARAMS=$ORACLE_HOME/crs/install/crsconfig_addparams
    # If addparams file exists
    if [ -f $CRSCONFIG_ADDPARAMS ]; then
      # get the value of LAST[tail -1] occurrence of CRS_ADDNODE=<value> in the file
      CRS_ADDNODE=`$AWK -F"=" '{if ($1=="CRS_ADDNODE") print $2}' $CRSCONFIG_ADDPARAMS | tail -1`
      # If value for CRS_ADDNODE is found
      if [ "$CRS_ADDNODE" = "true" ]; then
        # set ADDNODE to true
        ADDNODE=true
      fi
    fi
    
    # if addnode then reset SW_ONLY and HA_CONFIG variables to false
    if [ "$ADDNODE" = "true" ]; then
      SW_ONLY=false
      HA_CONFIG=false
    fi
    
    if [ `$UNAME` = "Linux" ]; then
       ISLINUX=true
    fi
    
    # If s/w only
    #   print the commands user needs to execute to perform GI config
    # 
    # else if Wizard or Install+Config
    #   if Wizard
    #     relink rac_on ioracle
    # 
    #   if HA Config
    #     set root script to roothas.pl
    #   else
    #     set root script to rootcrs.pl
    # 
    #   if upgrade
    #     set upgrade flag to '-upgrade'
    #   else
    #     set upgrade flag to ''
    # 
    #   execute root script with upgrade flag
    #   exit if failed
    # 
    #   if CRSConfig and Upgrade
    #     update inventory to set CRS=false for old home
    # 
    #   Update inventory with nodelist and CRS=true
    #
    
    if [ "$SW_ONLY" = "true" ]; then
      $ECHO
      $ECHO "To configure Grid Infrastructure for a Stand-Alone Server run the following command as the root user:"
      $ECHO "$ROOTHASPL"
      $ECHO
      $ECHO
      $ECHO "To configure Grid Infrastructure for a Cluster execute the following command:"
      $ECHO "$CONFIGSH_CMD"
      $ECHO "This command launches the Grid Infrastructure Configuration Wizard. The wizard also supports silent operation, and the parameters can be passed through the response file that is available in the installation media."
      $ECHO
    else
      if [ "$GI_WIZARD" = "true" ]; then
        $ECHO "Relinking oracle with rac_on option"
        $SU $ORACLE_OWNER -c "$ECHO \"rootconfig.sh: Relinking oracle with rac_on option\" ; $ORACLE_HOME/crs/config/relink_rac_on $ORACLE_HOME $MAKE" >> $ORACLE_HOME/install/make.log 2>&1
        EXITCODE=$?
        if [ $EXITCODE -ne 0 ]; then
          $ECHO "Relinking rac_on failed"
          exit $EXITCODE
        fi
      fi
    
      if [ "$ISLINUX" = "true" -a "$RAC9I_PRESENT" = "true" ]; then
          $CMDLLROOTSH_CMD
      fi
    
      if [ "$HA_CONFIG" = "true" ]; then
        ROOTSCRIPT=$ROOTHASPL
      else
        ROOTSCRIPT=$ROOTCRSPL
      fi
    
      #Passing the ROOTSCRIPT_ARGS constructed to rootscripts.
      $ROOTSCRIPT $ROOTSCRIPT_ARGS
      EXITCODE=$?
      if [ $EXITCODE -ne 0 ]; then
        $ECHO "$ROOTSCRIPT execution failed"
        exit $EXITCODE
      fi
    fi
    exit 0

    可以看到完成初始化和配置集群工作的是rootcrs.pl脚本,气记录日志位于<gi_home>/cfgtoollogs/crsconfig/rooters_<节点名>.log。
    rootcrs.pl工作 :
    1 .在配置集群之前,root.sh开始读取集群的初始化配置参数文件 /crs/install/crsconfig_params
    2 .检查集群节点vip信息
    3 . 检查集群节点列表新
    4 . 网络配置
    5 . 集群时区
    6 . root.sh 检查点被更新
    从 11.2.0.2 版本开始, root.sh 在运行时会产生一个检查点( Check point )文件,这样在下次运行root.sh的时候,系统就先读取这个检查点文件能很清楚的知道上次运行脚本的情况,而不必要把上次配置的文件都测地删除掉才能重新运行 root.sh,极大地节省了GI安装时间。
    7 . 创建OLR,更新文件
    8 . gpwallet和profile被成功创建
    9 . 复制集群启动脚本init。nasd到 /etc/init.d
    10 . 启动 GI 的记录 h 1 :35 :r espawn:/etc/init.d/init.ohasd run >/dev/null 2>& 1 11 . 集群的初始化资源被加载到OLR中
    12 . CSS以exclusive模式启动
    13 . ASM实例被创建,用户存放OCR和votedisk磁盘组被创建,之后OCR被初始化成功,CRSD被启动。
    ………………

    OHAS( Oracle High Avail油ility Service)

    首先, 大家可以通过下图了解llgR2版本中GI组件之间的启动关系,只介绍由ohasd对应的代理进程启动的资源.
    这里写图片描述

    rac database :RAC集群数据库通过ASM实例管理数据提供对外服务。

    展开全文
  • Oracle RAC 说明

    2011-04-29 14:28:00
    Oracle Real Application Clusters (RAC)可以支持24 x 7 有效的数据库应用 系统,您可以在由低成本的服务器构成的高可用性系统上自由部署您的应用,而无需修改您的应用程序。已经有超过4200个用户从中受益。...
    RAC就是real application clusters的缩写,跟rack的读音同。

    Oracle Real Application Clusters (RAC)可以支持24 x 7 有效的数据库应用 系统,您可以在由低成本的服务器构成的高可用性系统上自由部署您的应用,而无需修改您的应用程序。已经有超过4200个用户从中受益。现在Oracle在10g RAC中更提供免费的集群软件和存储管理软件,为您降低应用成本。拥有RAC您无需再为成本而牺牲性能和 可靠性。

    关键特性

    高可用性
    Oracle Real Application Clusters 提供一个高性能低成本的应用平台,支持所有类型的应用系统,无论是事务处理型应用还是分析型应用。所有应用共享同样的服务器和存储资源。出现任何的服务器或磁盘故障,系统会自动重新接管发生故障的功能。这些对前端用户的完全透明的。同样,如果您需要增加服务器或改变其他组件的配置也不会影响到应用系统。

    高性能
    Oracle Real Application Clusters保持着TPC-C的记录,达到每分钟 118万个事务的处理能力,和仅仅 $5.52 每tpmC的成本。在3,000 GB的 TPC-H数据仓库Benchmark 测试中, Oracle RAC同样保持性价比的领先地位,保证我们的用户能够达到更好更快的 ROI。这仅仅是Oracle 保持的多项Benchmark 记录中的最 近的一些指标。

    按需扩充
    您现有的系统可能是基于当前的工作负载而构建的,当 应用规模需要扩充时(支持更多的数据、用户或应用),您就需要扩展您的系统以保证系统的性能。当您的应用是构建于大型的SMP主机时,您可能需要购买另一 台昂贵的主机,但可能只能使用到其处理能力的很小一部分。但是如果您使用Oracle RAC的话,您可以通过增加一台或多台低成本的服务器来扩充您的应用系统的处理能力,满足应用需 求。

    第三方应用支持
    Oracle RAC数据库服务器象一个单一镜像的数据库服务 器,所有的应用无需任何改动都可以直接部署 (例如Oracle EBS, SAP, Siebel, 您自己的应用), 同时可以提高应用性能和可靠性。 Oracle和SAP的应用在RAC上完成了一系列的benchmarks性能测试,获 得了非常优异的测试结果, 象ABB 和Colgate一些大客户都是在Oracle RAC上运行他们的 SAP 应用软件。

    技术应答

    我听说RAC无法证明其在超过4个处理器的集群上的伸缩性 – 您有什么证据来证明RAC 的高可用性、高伸缩性和高可靠性?
    标准的benchmark 性能测试表 明 SAP 运 行于RAC上可以达到80%的伸缩性。一个明显的例证是最近在HP上所作的标准 TPC-C测试。第一个测试是Oracle运行于有64个Intel Itanium2® CPU 的HP SuperDome SMP巨型服务器。第二个测试是16个节点的集群系统,每个节点是4个CPU的SMP服务器。测试结果表明RAC环境性能超过SuperDome 18% ,这两个测试使用了完全同样的 Itanium2® CPU,处理器总数都是64。所以在同样的CPU处理能力下,RAC具有更好的伸缩性。
    当您再进一步考察这两种方案的成本时,您会发现RAC的成本更低。HP SuperDome 将近800万美元,而同样的集群系统的成本仅仅不到300万美元, 其成本只是大型机的1/3。

    为什么说Oracle Real Application Clusters 10g 要远远超过它的竞争对手?

    最基本的不同是,Oracle Real Application Clusters 10g 中所有服务器都可以直接访问数据库中的所有数据,其他的数据库在开放系统中都做不到这点, 正是由于这个原因,您可以非常方便地根据需求随时增加服务器来扩充您的系统,无需重新分布数据和应用。Real Application Clusters象一个单一的系统一样工作,任何节点的故障都不会影响其他节点对数据的访问。所以说增加服 务器就增加了系统的可靠性。另外一点,对用户来说RAC是一个数据库系统,对它的维护管理如同单机一样简单方便。

    Microsoft SQL Server和IBM DB2都有active-active 的故障切换方式,为什么我要采用Oracle Real Application Cluster 10g ?

    其他的数据库系统都无法 真正的支持 active-active方式的集群系统,即集群的两个节点可以支持同样的应用。实际上,他们只能支持双向的active-passive 架 构,即节点 A 运行应用A,同时节点B 运行应用B,每个节点作为另一个节点的备份节点。但是同样的应用无法同时运行在两个不同的节点。在Oracle Real Application Cluster 10g 中,同样的应用可以运行在两个或更多的节点,每一个节点都可作为所有其它节点的备份机。当 出现单点故障时,整个Real Application Clusters数据库系统的效率只会有很小的降低。

    我的分布式应用 系统运行非常好,为什么我要把我的数据库进行集中?

    如果您的应用系统正运行 于Oracle上,他们当然可以支持您的业务需求。但是集群的数据库可以让您管理更少的数据库,意味着更 少的管理成本。同时如果您把数据集中到Oracle Real Application Cluster 10g 上,您可以提高整个系 统的可用性,达到99.99%甚至更高。

    我们已经有了集 群硬件环境,并且可以进行应用的切换,为什么我还需要Oracle Real Application Clusters 10g?

    当您在集群环境下运行您 的应用,如果不采用Oracle Real Application Clusters 10g 的话,您的应用是运行于单例程状态下。虽然您的服务 器是集群的一部分,但实际上相当于只运行在一台单机上。在硬件集群环境下,如HP ServiceGuard、 Sun Cluster 和 Microsoft Cluster Services, 您可以在集群的任何一个 节点重新启动 Oracle数据库 (因为硬盘可以共享). 这就是我们所说的 ‘cold failover’。’Cold failover’ 切 换速度依赖于相关硬件资源的切换速度,这可能需要5到 25 分钟的时间恢复。如果使用Oracle Real Application Clusters 10g, 在服务器发生故障时,其他存活的服务器可以自动快速的恢复故障服务器的例程。Oracle Real Application Clusters 10g 可以提供业界最快的系统恢复,在60秒内可以对系统故障进行恢复,这至少比硬件的 ‘cold failover’方 案快5倍。

    我们使用Data Guard来实现故障切 换,为什么我还需要Oracle Real Application Clusters 10g?

    使用Data Guard来保护您的数 据是一个正确的选择 - Data Guard可以在各种故障情况(无论是数据坏块还是人为失误)下保护您的数据,Data Guard 也确实提供故障切换的功能,但是切换时间可能会需 要10分 钟,RAC可 以提供低于60秒的切换。同时RAC还可以提供无限的伸缩性,Data Guard 只能提供有限的伸缩性。RAC和Data Guard提供100% 技术来最大程度地保护 您的数据库应用。

    为什么选择Linux? 为什么选择Linux 环境下的Oracle Real Application Clusters 10g?

    采用SMP UNIX服务器的原因是他 们在过去可以为您的业务系统提供高可用性和伸缩性。在今天对成本非常敏感的环境下,我们需要一种低成本的可以提供高可用性和高质量的系统。通过把您的应用 系统迁移到Linux环境下的Oracle Real Application Clusters 10g ,您可以得到比SMP服务器更好的可用性,同时可以方便地扩充您的系统,最关键的是总体拥有成本可以控制的很 低。使用小型 Intel 服务器构建集群成本远远低于大型的SMP 服务器,同时可以拥有无限的伸缩性。

    Oracle Real Application Clusters只是Oracle Parallel Server的新的版本, 是吗?

    Real Application Clusters是一个全新的产品,10g 是它的第二个版本。在RAC中,我们有多项新的专利技术,专注于如何为应用系统创建一个高可用性、高伸缩性和高效的集 群系统,而无需修改现有的应用系统。同时,我们在RAC的易管理性上作了大量工作。 RAC系统架构把所有复杂的内部结构都封装起来,对开发人员和用 户完全透明。

    您认为Oracle RAC的典型硬件配 置是什么样的?

    首先我们知道 RAC选件支持所有的Oracle数据库支持的平台,如: Windows, Linux, Solaris, HP-UX等等。所以无论您选择什么样的系统,RAC都可以非常好的运行。如果是 系统选型,那要取决于您的应用需求。我们可以看到Windows 和Linux平台都是常用的基于Intel架构的平台,RAC 在这些平台都有很好的表现,这意味着您可以以低成本得到更高的可用性、可靠性和伸缩性。同 时,RAC可 以在任何价位上获得良好的性能,您可以在HP SuperDomes、Sun boxes或Linux/Windows Intel 服务器上非常方便地配置RAC。

     

    展开全文
  • Oracle RAC技术随笔2

    2017-09-25 19:19:52
    需要说明的是 osysmond 和 ologgerd 守护进程都会以实时(RT)优先级运行, 以确保 CHM 能够准时地搜集操作系统的性能信息。 oracle提供oclumon和chm/os Graphical User Interface (CHMOSG)来访问CHM数据库。鍏朵...

    资源管理方式

    1 . 10g

    对于10r2版本,资源管理工作由CRS(Cluster Ready Service)管理,通过crsd守护进程来启动。
    可以通过crs_stat-t -v 来查看管理的资源列表:

    VIP 资源Cora. < 节点名>.vip)
    ONS资源(ora. < 节点名>.ons)
    GSD资源(ora. <节点名>.gsd)
    ASM实例资游、(ora.. ASM< 节点编号>.asm)
    监昕程序资源、Cora. < 节点名>.< 监听程序名>.lsnr)
    数据库资惊Cora. < 数据库名>.db)
    数据库实例资源(ora. < 数据库名> .< 实例名>. inst)
    数据库服务资源( ora. < 数据库名〉.〈服务名>.cs和ora. < 数据库名> .< 服务名〉.< 实例名>.srv

    动作(Action): 动作定义了CRSD对资源进行启动、停止、检查和清除操作时所需要运行的步骤, 它可以是一段shell脚本、一段应用程序、数据库命令等。
    资源概要文件(profile) : 概要文件定义了资源的很多属性, 以便CRSD能够根据概要文件定义的属性来创建资源。例如:检查间隔、动作脚本等。
    依赖关系( Dependency): 资源之间并不是独立的, 有些资源之间是存在互相依赖关系的。例如: 数据库实例启动的前提是ASM实例先要被启动, 这表示数据库实例资源需要依赖于ASM实例资源, 而这种依赖关系是通过资源属性REQUIRED_RESOURC ES来实现的。
    权限:由于不同的资源需要执行的操作也是不同的, 这意味着执行操作的用户也会不同(主要是root和Oracle用户)所以, 每个资源都会针对不同的用户指定不同的权限。这也是为什么crsd.b in守护进程需要以root用户运行的原因之一。
    OCR ( Oracle Cluster Register) : OCR实际上是包含了以上所有信息的一个注册表,CRSD通过访问OCR来获得集群资源的列表(当然,还包括其他很重要的信息) 以及每个资源的各个属性.
    Oracle集群管理软件(CRS)还定义了一些racg模块, 不同的racg模块负责管理不同的资源, 例如:racgvip负责管理VIP, 这些模块负责定义对资源操作的动作第一点:CRSD通过OCR定义资源。当crsd.bin守护进程启动时, 通过读取OCR中的信息来获得资源定义。而当资源属性发生改变时,crsd.bin守护进程也会修改OCR中的信息。
    第二点:CRSD通过调用racg模块来实现对资源的各种动作.
    第三点:CRSD 守护进程被启动, 之后尝试联系 CRSD 守护进程, 但是由于 ocssd.bin 还没有完全被启动, 所以 CRSD 守护进程还不能继续向下运行。在 ocssd.bin 完全启动后, CRSD 才能继续启动
    第四点:CRSD 通过读取ocr,发现存储设备和节点信息状态

    2 . 11gr2

    在11g,ohasd成了集群启动入口,其他所有进程都被定义为资源。ohasd负责集群所有资源,同时GI不在由racg来启动,由agent统一实现对所有的资源管理。当然OCR仍然被保留下来,用于保存crsd管理的资源。但是由于在启动crsd之前还需要启动一些资源如asm之类的,所以在11g r2添加了一项OLR(Oracle Local Register)。

    OLR

    顾名思义, OLR是保存在本地的集群注册表, 也就是说 OLR 是保存在每个节点本地的.OLR 的主要作用就是为 obasd 守护进程提供集群 的配置信息和初始化资源的定义信息。 当集群启动时 ohasd 会从/etc/oracle/olr.loc 文件(不同平台, 文件位置会不同) 中读取 OLR 的位置, OLR 默认保存在<gi home>/cdata 下, 文件名为<节点名>.olr。

    jhdb01-> cat /etc/oracle/olr.loc
    olrconfig_loc=/u01/app/11.2.0/grid/cdata/jhdb01.olr
    crs_home=/u01/app/11.2.0/grid

    可以使用ocrdump -local 把olr信息显示出来。
    OLR不会自动备份,一般需要手动备份ocrconfig -local -manualbackup ,使用 ./ocrconfig -local -restore 来恢复,不能从其他节点复制过来使用,可以使用ocrcheck来检查,所有适用于ocr的命令同样适用于olr,只是加一个 -local 参数。

    agent

    oraagent:这个代理进程会以 Oracle或者grid用户启动,负责管理的用户为Oracle或
    grid 的资源。
    orarootagent:这个代理进程以 root用户启动,负责管理的用户为root 的资源。
    cssdagent: 这个代理进程负责启动 ocssd.bin守护进程,之后负责监控ocssd.bin守护
    进程。
    cssdmoniot:这个代理进程和cssdagent 代理进程基本一样,但是它只负责监控ocssd.bin
    守护进程。
    代理进程可以由ohasd 和crsd守护进程启动,其他的集群守护进程不能启动代理进程。
    其中,ohasd守护进程启动的代理进程负责管理集群的初始化资源和其他守护进程,而CRSD 守护进程启动的代理进程负责管理集群的其他资源(在这一点上与10g版本一致的)。
    ohasd.bin守护进程会启动4个代理进程, 它们分别是oraagent_grid(如果集群管理软件和数据库软件都是使用Oracle 用户安装的,那么这个代理进程的名称就是oraagent_ oracle)、orarootagent_ root、cssdagent_root、cssdmonitor。 每个代理进程负责管理的资源可以参照下表。
    这里写图片描述
    1 .ora.gipcd、ora.gpnpd和ora.mdnsd会以守护进程的形式存在,它们负责完成集群在
    bootstrap阶段的工作,在第4章将详细介绍。
    2 . ora.ctssd会以守护进程的形式存在,它负责集群的时间管理,在第4章将详细介绍。
    3 . ora.cssd和ora.cssdmonitor会以守护进程的形式存在,其中 ocssd.bin守护进程负责集群假设并维护一致性,而cssdmonitor负责监控ocssd.bin守护进程的状态。
    4 . ora.crsd 会以crsd.bin守护进程形式存在,
    5 . ora.evmd负责管理集群事件,会以evmd.bin形式存在
    6 . ora.asm 这个资源负责管理ASM实例。
    7 . ora.cluster_interconnect.haip这个资源负责管理集群haip
    8 .ora.crf 负责管理11gr2版本集群CHM(Cluster Health Monitor)
    根据以上的描述,可以看到集群在 ohasd层面的启动过程是:首先,/etc/inittab中的init. ohasd脚本被调用,之后该脚本启动ohasd.bin守护进程;然后ohasd.bin启动对应的代理进程,每个代理进程负责启动自己管理的集群资源。

    3 . ohasd

    3.1 HAIP

    对于oracle集群,私网是非常重要的,节点至今通讯大部分通过私网通信的。节点之间心跳特点是持续存在,实时性高,数据量小,所以建议视同tcp/ip传输协议就足够了;节点之间内存融合特点是数据量打,对速度要求高,不建议使用tcp/ip,所以推荐使用UDP或RDS,同时oracle也建议在私网使用高可用和负载均衡设备。在11.2.0.2版本开始,oracel提供了私网的高可用和负载均衡特性—HAIP。
    HAIP就是多个IP地址,oracle会默认在集群每一块私网卡上绑定一个169.254.X.X 地址,这个地址被称为HAIP,数据库实例之间和ASM实例之间通讯就靠这个HAIP来完成。如果某一块私网网卡出现故障,骑上绑定的IP地址可以漂移到其他私网网卡上,从而实现高可用,所以建议使用多块私网网卡,oracle也支持在安装完GI之后手动添加HAIP。
    注意:oracle目前最多支持4块私网网卡。

    3.2 CHM

    CHM(cluster health monitor)是用力啊自动收集OS资源的统计信息,在11.2.0.2 版本开始,CHM会以ora.crf形式存在每个节点上。CHM对于诊断系统节点重启,hang,实例驱逐(Eviction),性能问题很有帮助。
    CHM组件:
    1 . CHM资料库(Repository),他是一个berkeley数据库,用于保存从各个节点收集到的信息。默认情况下存在/crf/db/下,默认大小1GB,最多保留3天。
    2 . 系统监控服务(System Monitor Service),以osysmond.bin守护进程存在并运行在所有的节点上,负责定期收集OS信息,并发送到集群日志服务。
    3 . 集群日志服务(cluster logger service),以ologgerd的形式运行在集群的CHM主节点和副节点上。主节点收集接收其他节点的osysmond.bin发送过来的OS统计信息,并记录到主节点的CHM档案中;副节点的ologgerd负责接收从主节点的集群日志服务发送过来的OS统计信息,并记录到副节点的CHM档案中,从而实现CHM高可用。
    这里写图片描述
    CHM 工作步骤:
    步骤1:各个节点的osysmond通过集群私网想主节点的ologgerd发送本地节点OS统计信息。
    步骤2:主节点的ologgerd 想本几点CHM资料库写入收到的统计信息,同时发送到副节点ologgerd。
    步骤3:副节点的ologgerd 想本加点的CHM写入接收到的统计信息。
    如果CHM主节点出现问题,副节点会接管CHM并成为新的主节点,之后的新主节点会从集群的其他正常节点中在选出一个作为一个新的副节点。需要说明的是 osysmond 和 ologgerd 守护进程都会以实时(RT)优先级运行, 以确保 CHM 能够准时地搜集操作系统的性能信息。
    oracle提供oclumon和chm/os Graphical User Interface (CHMOSG)来访问CHM数据库。鍏朵腑 CHM/OS Graphical User Interface (CHMOSG)是图形工具们可以从OTN上下载,oclumon是命令行工具,
    查看主节点和副节点:

    jhdb01-> oclumon manage -get master replica 
    
    Master = jhdb01
    Replica = jhdb02
    
     Done

    查看系统统计信息保存时间

    jhdb01-> oclumon manage -get repsize 
    
    CHM Repository Size = 61511
    
     Done 

    收集指定时间内各个节点统计信息:

    oclimon dumpnodeview -allnodes -v -s "2017-09-26 00:00:00" -e "2017-09-26 08:00:00" >/tmp/chm.log
    展开全文
  • Oracle RAC部署手册

    2018-05-22 15:18:50
    Oracle RAC最佳部署手册 环境Oracle_11G_R2_RAC_for_Linux. 技术解决方案以及实现过程,详细的步骤说明提供参考学习。
  • 区别(1)RAC有2个以上的实例,单节点只有1个实例(2)RAC具有实例级别的高可用(3)实例与实例之间通过内联网络交换数据,单节点不可(4)RAC每个节点都有自己套SGA、后台进程、redo log、undo file(5)RAC可以增减节点RAC最...

    1.说一下RAC和单节点数据库的区别有哪些?你认为RAC最有用的功能是说什么?

    区别

    (1)RAC有2个以上的实例,单节点只有1个实例

    (2)RAC具有实例级别的高可用

    (3)实例与实例之间通过内联网络交换数据,单节点不可

    (4)RAC每个节点都有自己套SGA、后台进程、redo log、undo file

    (5)RAC可以增减节点

    RAC最有用的功能

    答:我认为RAC最有用的功能就是实例级的failover,它可以保证在其中有节点crash的时候,其他节点可以迅速接管。保证系统持续可用。往往人们会认为RAC有2个节点性能就会提升2倍,这是一个误区,由于要保证数据的一致性往往性能会消耗在内存间的数据块相互拷贝和交叉上,因此不一定性能会好于单节点,而且节点越多性能曲线就会下降越快。

    2.用ps命令查到属于crs集群软件的进程名称,贴出输出结果。

    CRS集群进程是属于Clusterware集群软件自己的进程,不同于RAC实例后台进程

    下面分别说明一下Clusterware集群软件自己的进程功能

    1.crs集群资源进程:全称cluster ready services,作用为管理集群中所有资源的进程,资源例如 数据库 监听 实例 内存 进程

    VIP应用程序 集群ASM

    crs进程是根据存储于OCR中的资源配置信息来管理这些资源的。

    2.css集群同步进程:全称cluster synchronization service,作用为管理集群节点成员的进程,在增减集群节点时收集节点最新状态并同步到所有节点上。这个进程发生故障会导致集群重启

    3.EVM事件管理进程:全称Event Management,作用为发布和记录事件的进程,发布CRS创建事件的后台进程,只要哪个进程发生问题,EVMD就会把事件写入trace文件。

    EVMD称作事件管理守护进程

    4.ONS事件发布及订阅进程:全称Oracle Notification Service,作用为快速通知事件的发布及订阅服务

    3.说一下在RAC环境下,数据库实例会多出哪些后台进程,用ps命令查找,给出输出结果,并说明它们的作用。

    RAC模式下Oracle数据库比单节点要多出许多后台进程,这些后台进程都是用于集群管理和监控的,下面我们简单介绍一下它们的作用。

    1.LMSn  - gobal cache service process全局缓存服务进程小n从零开始分配

    1)RAC提供了10个LMS进程,会随着节点间消息传递的数据量的增加而增加,默认至少有2个LMS进程

    2)LMS进程主要管理集群内数据块的访问,并在不同实例的buffer cache中传递数据块镜像

    3)LMS进程保证了每一时刻只允许一个实例去修改数据块

    4)当一个实例请求数据块时,拥有该资源的实例的LMS进程会创建一个数据块镜像的一致性读。然后把该数据块传递到请求资源的实例的buffer cache中。

    2.LMON  - Global Enqueue Service Monitor全局队列服务监控进程

    1)监控整个集群的内存结构

    2)处理异常终止的进程和实例

    3)当有实例加入集群和离开集群时,全局锁定和资源的重新分配

    4)提供全局锁资源的恢复操作

    5)监控全局的锁资源处理死锁和阻塞

    3.LCK  - LOCK  Process

    1)LCK进程主要用来管理实例间资源请求和跨实例调用操作,调用操作包括数据字典等对象的访问

    2)处理非cache fusion的cache资源请求,像dictionary cache或row cache

    4.LMD – Global Enqueue Service Daemon全局队列服务守护进程

    1)LMD进程主要管理对全局队列和资源的访问,并更新相应队列的状态,处理来自于其他实例的资源请求。

    2)每一个全局队列的当前状态存储在相应的实例共享内存中,该状态表明该实例具有相应的权利使用该资源。

    3)LMD进程还负责队列的死锁问题

    5.DIAG – Diagnostic Daemon诊断守护进程

    1)Oracle10g新的后台进程

    2)主要用来捕获实例中失败进程的诊断信息,并生成相应的trace文件

    3)此进程不需要配置,自动启动无需调整

    4)如果该进程失败则自动重启

    具体进程结构请参考下面的图示

    6e617f9d1ebf56277c5de3f96d39be9f.png

    我们使用ps命令输出10g和11g的RAC实例后台进程

    10g RAC特有进程:$ ps -ef|grep ora_oracle    4721     1  0 Feb26 ?        00:00:00 ora_diag_ONEPIECE1oracle    4725     1  0 Feb26 ?        00:02:26 ora_lmon_ONEPIECE1oracle    4727     1  0 Feb26 ?        00:00:02 ora_lmd0_ONEPIECE1oracle    4729     1  0 Feb26 ?        00:00:01 ora_lms0_ONEPIECE1oracle    4733     1  0 Feb26 ?        00:00:01 ora_lms1_ONEPIECE1oracle    4761     1  0 Feb26 ?        00:00:07 ora_lck0_ONEPIECE1oracle    4772     1  0 Feb26 ?        00:00:00 ora_asmb_ONEPIECE1oracle    4776     1  0 Feb26 ?        00:00:00 ora_rbal_ONEPIECE1oracle    4840     1  0 Feb26 ?        00:00:00 ora_o001_ONEPIECE111g RAC特有进程:$ ps -ef|grep ora_oracle     426     1  0 Feb27 ?        00:00:08 ora_o000_RAC11G21oracle    9082     1  0 Feb25 ?        00:01:09 ora_diag_RAC11G21oracle    9086     1  0 Feb25 ?        00:00:27 ora_ping_RAC11G21oracle    9088     1  0 Feb25 ?        00:00:06 ora_acms_RAC11G21oracle    9092     1  0 Feb25 ?        00:05:27 ora_lmon_RAC11G21oracle    9094     1  0 Feb25 ?        00:01:32 ora_lmd0_RAC11G21oracle    9096     1  0 Feb25 ?        00:02:07 ora_lms0_RAC11G21oracle    9100     1  0 Feb25 ?        00:00:06 ora_rms0_RAC11G21oracle    9102     1  0 Feb25 ?        00:00:14 ora_lmhb_RAC11G21oracle    9116     1  0 Feb25 ?        00:00:09 ora_rbal_RAC11G21oracle    9118     1  0 Feb25 ?        00:00:05 ora_asmb_RAC11G21oracle    9136     1  0 Feb25 ?        00:04:25 ora_lck0_RAC11G21oracle    9138     1  0 Feb25 ?        00:00:14 ora_rsmn_RAC11G21oracle    9295     1  0 Feb25 ?        00:00:07 ora_gtx0_RAC11G21oracle    9297     1  0 Feb25 ?        00:00:07 ora_rcbg_RAC11G21

    4.画图说明,当RAC中的一个实例down掉之后,其它实例是如何接管这个实例上的事务的?如图所示:我们现在拥有2个节点,我们在这2个节点上部署RAC集群,每个节点上创建一个实例,这2个节点使用内联网传输数据和信息,同时共享一个存储磁阵。介绍完了RAC架构,下面叙述一下RAC的实例级容错。

    53e50a14530610af11ecd4bcf4d77b64.png

    场景:在生产使用中,突然instance1  shutdown,那么在其上面没有完成的事物如何处理呢。

    1)当实例1 crash后,实例2通过VIP就可以知道实例1已经down了。

    2)此时需要处理的有2部分数据,一部分是commit的数据,一部分非commit数据

    3)对于已经commit写入redo日志但是还没有来得及写入数据文件的记录,实例2可以访问实例1的redo log并从最后一次check point之后的信息开始实例恢复。把数据同步到最新状态。

    4)对于没有commit的数据利用undo旧映像进行回滚事物。

    RAC   CRS集群failover后台进程

    Leonarding

    2013.06.26

    北京&summer

    分享技术~成就梦想Blog:www.leonarding.com

    展开全文
  • 处理如下:1 用grid用户执行 crs_stat -t 查看rac运行状态,显然ora.rac1.vip显示offline了Name Type Target State Host------------------------------------------------------------ora.DATADG.dg ora.......
  • Oracle RAC HAIP

    2019-12-02 17:03:02
    Oracle 从11.2.0.2开始引入了一个新特性叫做Redundant Interconnect,简称HAIP。HAIP的目的用来代替操作系统级别的网卡绑定以实现Active-Active的模式进行数据传输。一来可以实现传统操作系统网卡绑定带来的故障转移...
  • OracleRAC+DG实验】OracleRAC+ASM+DataGuard配置实验记录+常见问题 1、环境规划: ---RAC环境介绍(primary database)rac1 rac2______________________________________________________ public ip...
  • Oracle RAC 实施

    2009-12-08 15:10:10
    Oracle RAC 实施作者:Christopher Haskins 定义、设计和提供成功 Oracle RAC 项目的指南。 2006 年 4 月发布 Oracle 真正应用集群 (RAC) 是 RDBMS 市场中的最...
  • Oracle RAC日记

    2013-05-23 12:36:00
     本书以Oracle 10g为基础,从基础知识、安装升级、故障处理、性能优化4个角度,由浅入深地介绍了Oracle RAC项目实施的一些方法和思路。  本书一共包括了9个综合案例,每一个案例构成独立的一章,按照“遇到问题...
  • 《大话Oracle RAC》要二版了,编辑很开心,这年头技术书能二版的很少;我也很开心,又能加新东西了。搞了个二版说明,先放上来,纪念一下。 Oracle现在已经到了11.2版本了,每次Oracle新版本的推出...
  • Oracle RAC One node

    2019-09-24 17:53:52
    一、RAC One Node介绍 1、rac one node数据库可以转换成RAC数据库,转换过程可以在线,无需停止RAC one node数据库; 2、r...
  • Oracle RAC 提供了两种不同的方法来分散负载。 一种是通过Connection Balancing,按照某种算法把用户分配到不同的节点。也可认为是纯技术的分散负载。 另一种是通过Service,在应用层上进行分散,也可认为是根据...
  • Oralce RAC用到的技术: 1.ASM:Automatical Storage Management==>自动存储管理 2.CRS:Cluster Ready Service===>集群就绪服务 3.Cache Fusion==>缓存熔合 4.RAID==>Redundant Array of Independent...
  • oracle rac理解和用途扩展

    千次阅读 2015-07-21 23:54:20
    Oracle RAC的优势在于利用多个节点(数据库实例)组成一个数据库,这样在保证了数据库高可用性的情况下更充分的利用了多个主机的性能,而且可以通过增加节点进行性能的扩展。实现Oracle RAC需要解决的关键问题就是多...
  • Oracle RAC数据库的安装相对单机数据库复杂一些,因为整个安装过程涉及网络、操作系统、存储等方面,一个环节设置不当,都可能导致安装失败。本文将详细的讲述RAC数据库的安装过程。 1、 安装前的系统配置需求 安装...
  • 1、RAC并发 RAC的本质是一个数据库,只不过现在这个数据库运行在了多台计算机上,在原先的单实例中,一个进程是否可以修改一条数据,取决于是否有其他进程(同一台计算机上)并发修改。在RAC环境下,这种判断已经...
  • Investigating Oracle RAC Interconnect Performance By Scott Jesse, Bill Burton, Bryan Vongray The interconnect in an Oracle RAC environment is the backbone of your cluster. A highl
  • Oracle RAC软件权限修复

    千次阅读 2019-08-19 17:58:24
    1.1 权限修复 ----模拟误操作 ... /tmp/bk_lhr_perm_u01_rac1.txt ./permission.pl /u01/app ocrconfig -export /tmp/export_asm_lhr.bak chown -R oracle.oinstall /u01 chmod -R 444 /u01...
  • OracleRAC环境实时数据迁移 ——————————————————————————————————————— 系统要求及安装前的说明 OracleGoldenGate可以在Oracle不同版本间移动数据,也可以在Oracle和...
  • 引言对于访问 数据库而言, Real Application Cluster (RAC) 可用于高可用性和工作负载管理。...遗憾的是,使用 10g 版本的 Oracle JDBC 驱动程序在多个 Oracle RAC 节点中进行工作负载管理会造成微妙的两阶段提...
  • Oracle RAC是一个集群数据库,可以实现负载均衡和故障无缝切换。如何知道RAC数据库已经实现了这些功能呢,下面就对此进行功能测试。 负载均衡测试 RAC数据库的负载均衡是指对数据库连接的负载均衡,当一个新的...
  • 第一章 技术人生系列 · 我和数据中心的故事(第二期)——风险提醒之Oracle RAC高可用失效 中亦安图 | 2016-01-15 21:36 前言 不知不觉,技术人生·我和数据中心的故事来到了第二期,有朋友开始关心小y是谁,...
  • 安装Oracle RAC 11g

    2014-05-15 16:07:00
    1、Oracle Enterprise Linux 和 iSCSI 上构建 Oracle RAC 11g 集群 2、Oracle RAC 的所有共享磁盘存储将基于iSCSI,iSCSI 使用在第三个节点(该节点在本文中称为网络存储服务器)上运行的 Openfiler 2.3 版 x86_64 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,399
精华内容 2,159
关键字:

oraclerac技术说明