• ORACLE RAC 日常管理[10g,11g]


    注明:本文是本人经过收集网络上内容整理形成的一份文档,主要用于自己检索方便,如果引起原作者不适,请留言,我会尽快撤销该文章。

    -----------------------------------***********************-------------------------------

    管理oracle 10g RAC 常用命令

    一、Oracle RAC简介

    Oracle RAC 支持 Oracle 数据库在集群上运行真正的应用程序。此处的真正应用是指 RAC 能够支持所有类型的主流商业应用程序。这包括流行的封装产品,如 SAP、PeopleSoft 和 Oracle E*Business Suite 等,以及自主研发的应用程序,其中包括 OLTP 和 DSS,以及 Oracle 有效支持混合 OLTP/DSS 环境的独有能力。Oracle 是唯一提供具备这一功能的开放系统数据库的厂商。

       Oracle RAC 运行于集群之上,为 Oracle 数据库提供了最高级别的可用性、可伸缩性和低成本计算能力。如果集群内的一个节点发生故障,Oracle 将可以继续在其余的节点上运行。如果需要更高的处理能力,新的节点可轻松添加至集群。为了保持低成本,即使最高端的系统也可以从采用标准化商用组件的小型低成本集群开始逐步构建而成。

       Oracle 的主要创新是一项称为高速缓存合并的技术,它最初是针对 Oracle9i 真正应用集群开发的。高速缓存合并使得集群中的节点可以通过高速集群互联高效地同步其内存高速缓存,从而最大限度地低降低磁盘 I/O。高速缓存最重要的优势在于它能够使集群中所有节点的磁盘共享对所有数据的访问。数据无需在节点间进行分区。Oracle 是唯一提供具备这一能力的开放系统数据库的厂商。其它声称可以运行在集群上的数据库软件需要对数据库数据进行分区。这对于拥有复杂的数据结构的真正应用程序而言,显得不切实际。而且也不可能对集群系统进行统一变更。如果您添加或删除节点或存储资源,数据则需要完全重新分区。

     

    二、ORACLE RAC工作原理

      在一个应用环境当中,所有的服务器使用和管理同一个数据库,目的是为了分散每一台服务器的工作量,硬件上至少需要两台以上的服务器,而且还需要一个共享存储设备。同时还需要两类软件,一个是集群软件,另外一个就是Oracle数据库中的RAC组件。同时所有服务器上的OS都应该是同一类OS,根据负载均衡的配置策略,当一个客户端发送请求到某一台服务的listener后,这台服务器根据我们的负载均衡策略,会把请求发送给本机的RAC组件处理也可能会发送给另外一台服务器的RAC组件处理,处理完请求后,RAC会通过集群软件来访问我们的共享存储设备。
      逻辑结构上看,每一个参加集群的节点有一个独立的instance,这些instance访问同一个数据库。节点之间通过集群软件的通讯层(communication layer)来进行通讯。同时为了减少IO的消耗,存在了一个全局缓存服务,因此每一个数据库的instance,都保留了一份相同的数据库cache。

     

     

    架构图:

     

     

    三、Oracle rac日常管理:

     

    1. rac状态检查:

       

      application service状态应该都为online:

       

      HDOADB1:> crs_stat -t

      Name Type Target State Host

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

      ora....s1.inst application ONLINE ONLINE hdoadb1

      ora....s2.inst application ONLINE ONLINE hdoadb2

      ora.ams.db application ONLINE ONLINE hdoadb2

      ora....B1.lsnr application ONLINE ONLINE hdoadb1

      ora....db1.gsd application ONLINE ONLINE hdoadb1

      ora....db1.ons application ONLINE ONLINE hdoadb1

      ora....db1.vip application ONLINE ONLINE hdoadb1

      ora....B2.lsnr application ONLINE ONLINE hdoadb2

      ora....db2.gsd application ONLINE ONLINE hdoadb2

      ora....db2.ons application ONLINE ONLINE hdoadb2

      ora....db2.vip application ONLINE ONLINE hdoadb2

      ora.orcl.db application ONLINE ONLINE hdoadb1

      ora....l1.inst application ONLINE ONLINE hdoadb1

      ora....l2.inst application ONLINE ONLINE hdoadb2

       

     

    1. 查看两台机器rac db状态

       

      $ srvctl status database –d orcl

      $ srvctl status database –d ams

      查看一台机器的实例的状态

      $ srvctl status instance -d orcl -i orcl1

       

       

    特定节点上节点应用程序的状态

    IXDBA.NET社区论坛

    srvctl status nodeapps -n linux1
    VIP is running on node: linux1
    GSD is running on node: linux1
    Listener is running on node: linux1
    ONS daemon is running on node: linux1

     

     

    1. 关闭整个rac db:

       

      $ srvctl stop database –d orcl

      $ srvctl stop database –d ams

      $ srvctl stop nodeapps –n hdoadb1

      $ srvctl stop nodeapps –n hdoadb2

       

      用crs_stat命令来检查application service状态应该都为offline

       

    HDOADB1: > crs_stat -t

    Name Type Target State Host

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

    ora....s1.inst application OFFLINE OFFLINE hdoadb1

    ora....s2.inst application OFFLINE OFFLINE hdoadb2

    ora.ams.db application OFFLINE OFFLINE hdoadb2

    ora....B1.lsnr application OFFLINE OFFLINE hdoadb1

    ora....db1.gsd application OFFLINE OFFLINE hdoadb1

    ora....db1.ons application OFFLINE OFFLINE hdoadb1

    ora....db1.vip application OFFLINE OFFLINE hdoadb1

    ora....B2.lsnr application OFFLINE OFFLINE hdoadb2

    ora....db2.gsd application OFFLINE OFFLINE hdoadb2

    ora....db2.ons application OFFLINE OFFLINE hdoadb2

    ora....db2.vip application OFFLINE OFFLINE hdoadb2

    ora.orcl.db application OFFLINE OFFLINE hdoadb1

    ora....l1.inst application OFFLINE OFFLINE hdoadb1

    ora....l2.inst application OFFLINE OFFLINE hdoadb2

     

     

     

     

     

     

     

     

    1. 开启整个rac db:

       

      正常情况下当机器启动时oracle rac会自动启动的。

       

      手动启动过程如下:

      $ srvctl start nodeapps –n hdoadb1

      $ srvctl start nodeapps –n hdoadb2

      $srvctl start database –d orcl

      $ srvctl start database –d ams

       

     

    1. 只停一个节点的instance(node1)

       

      $ srvctl stop instance –d orcl –I orcl1

      $ srvctl stop instance –d ams –I ams1

     

    1. Oracle Clusterware的关闭与启动:

       

      #cd $ORACLE_CRS_HOME/bin

      # crsctl start crs------>启动CRS,会自动把其它的resource也启动

      # crsctl stop crs------->关闭CRS,会自动把其它的resource也关闭

       

     

    四、Oracle RAC常用的日志文件:

     

    1. db的alertlog文件:

      $ORACLE_BASE/admin/orcl/bdump/

      $ORACLE_BASE/admin/ams/bdump/

       

    2. oracle crs日志文件:

      $ORACLE_CRS_HOME/crs/log

      $ORACLE_CRS_HOME/css/log

      $ORACLE_CRS_HOME/evm/log

      $ORACLE_CRS_HOME/srvm/log

       

       

    CRS的管理

    CRSCTL命令控制着本地节点的CRS服务(Oracle clusterware processes)

    停止CRS:
    $ crsctl stop crs
    或者
    $ /etc/init.d/init.crs stop
    或者
    $ crs_stop –all

    启动CRS:
    $ crsctl start crs
    或者
    $ /etc/init.d/init.crs start

    禁止Clusterware在系统重启后自动启动的方法:
    $ /etc/init.d/init.crs disable

    启动Clusterware在系统重启后自动启动的方法:
    $ /etc/init.d/init.crs enable

    查看CRS服务状态
    $ crsctl check crs

    #############################################################

    OCR的资源管理

    OCR的资源,当RAC cluster启动并成功运行以后,你可以使用crs_stat工具看到如下内容:
    $ORA_CRS_HOME/bin/crs_stat

    通常情况下,所有的资源的状态都应该是online。另外,OCR4个小时会备份一次。有一些情况你可以通过恢复的OCR的配置文件来恢复出现问题的OCR
    比如使用出现如下情况:
    $ crs_stat -t
    CRS-0184: Cannot communicate with the CRS daemon.

    $ crsctl check boot
    Failure 4 at procr_open_key with status 4.
    PROC-4: The cluster registry key to be operated on does not exist.

    $ crsctl check crs
    Failure 1 contacting CSS daemon
    Cannot communicate with CRS
    Cannot communicate with EVM
    引起这个错误的一种可能原因是OCR配置丢了。这个我们可以利用这些备份来还原以前的配置。

    # /etc/init.crs disable
    # /etc/init.crs stop

    先保证所有的crs进程全部停止。
    # su – oracle
    $ cd $ORA_CRS_HOME/bin
    $./ocrconfig -restore /opt/app/oracle/crs/cdata/crs/week.ocr

    然后切换到root用户下,重新enable CRS
    # /etc/init.crs enable

    最后reboot两个节点

    ##############################################################

     


    SRVCTL
    命令介绍
    SRVCTL
    命令可以控制RAC数据库中的instancelistener以及services
    通常SRVCTLORACLE用户下执行。下面我们来介绍srvctl命令。

    1、通过SRVCTL命令来start/stop/check所有的实例:
    $ srvctl start|stop|status database -d <db_name>

    2start/stop指定的实例:
    $ srvctl start|stop|status instance -d <db_name> -i <instance_name>

    3、列出当前RAC下所有的
    $ srvctl config database -d <db_name>

    4start/stop/check所有的nodeapps,比如:VIP, GSD, listener, ONS
    $ srvctl start|stop|status nodeapps -n <node_name>

    5、如果你使用ASMsrvctl也可以start/stop ASM实例:
    $ srvctl start|stop asm -n <node_name> [-i <asm_inst_name>] [-o<oracle_home>]

    6、可以获取所有的环境信息:
    $ srvctl getenv database -d <db_name> [-i <instance_name>]

    7、设置全局环境和变量:
    $ srvctl setenv database -d <db_name> -t LANG=en

    8、从OCR中删除已有的数据库:
    $ srvctl remove database -d <db_name>

    9、向OCR中添加一个数据库:
    $ srvctl add database -d <db_name> -o <oracle_home>

    [-m <domain_name>] [-p<spfile>] [-A <name|ip>/netmask] [-r {PRIMARY | PHYSICAL_STANDBY |LOGICAL_STANDBY}] [-s <start_options>]

    10、向OCR中添加一个数据库的实例:
    $ srvctl add instance -d <db_name> -i <instance_name> -n <node1>
    $ srvctl add instance -d <db_name> -i <instance_name> -n <node2>

    11、向OCR中添加一个ASM实例:
    $ srvctl add asm -n <node_name> -i <asm_inst_name> -o <oracle_home>

    12、添加一个service
    $ srvctl add service -d <db_name> -s <service_name> -r <preferred_list>[-a <available_list>] [-P <TAF_policy>] [-u]

    13、修改在其他节点上的service
    $ srvctl modify service -d <db_name> -s <service_name> -I <orig_instance_name> -t <target_instance_name>

    14relocate某个节点的service到其他节点
    srvctl relocate service -d <db_name> -s <service_name> -I

     

    CRS及相关服务的常用命令的演示

    1、查看状态的命令
    # su–oracle --
    先切换到oracle用户
    $ crs_stat -t --
    查看crs及所有的service的状态
    $ crsctl check crs --
    crsctl命令,检查crs相关服务的状态
    $ srvctl status nodeapps -n db01 (db02) --
    使用srvctl查看所有节点上的服务是否正常
    $ srvctl status database -d db --
    使用srvctl查看数据库状态

    启动和关闭相关服务的命令
    # su – oracle
    $ crs_start–all --
    启动所有的crs服务
    $ crs_stop–all --
    停止所有的crs服务
    $ crsctl start crs --
    启动crs服务
    $ crsctl stop crs --
    停止crs服务
    $ srvctl start nodeapps -n db01(db02) --
    启动某节点上所有的应用
    $ srvctl stop nodeapps -n db01(db02) --
    停止某节点上所有的应用
    $ srvctl start listener -n db01(db02) --
    启动某个节点的listener
    $ srvctl stop listener -n db01(db02) --
    停止某个节点的listener
    $ srvctl start instance –d db –i db01(db02) --
    启动某个instance
    $ srvctl stop instance –d db –i db01(db02) --
    停止某个instance
    $ srvctl start database –d db --
    启动数据库
    $ srvctl stop database –d db --
    停止数据库

     

    --------------------------------------------------*************************-------------------------------

    管理oracle 11g RAC 常用命令

    1)、检查集群状态:

      [grid@rac02 ~]$ crsctl check cluster
      CRS-4537: Cluster Ready Services is online
      CRS-4529: Cluster Synchronization Services is online
      CRS-4533: Event Manager is online

    2)、所有 Oracle 实例(数据库状态):
      [grid@rac02 ~]$ srvctl status database -d racdb
      Instance racdb1 is running on node rac01
      Instance racdb2 is running on node rac02

    3)、检查单个实例状态:
      [grid@rac02 ~]$ srvctl status instance -d racdb -i racdb1
      Instance racdb1 is running on node rac01

    4)、节点应用程序状态:
      [grid@rac02 ~]$ srvctl status nodeapps
      VIP rac01-vip is enabled
      VIP rac01-vip is running on node: rac01
      VIP rac02-vip is enabled
      VIP rac02-vip is running on node: rac02
      Network is enabled
      Network is running on node: rac01
      Network is running on node: rac02
      GSD is disabled
      GSD is not running on node: rac01
      GSD is not running on node: rac02
      ONS is enabled
      ONS daemon is running on node: rac01
      ONS daemon is running on node: rac02
      eONS is enabled
      eONS daemon is running on node: rac01
      eONS daemon is running on node: rac02

    5)、列出所有的配置数据库:
      [grid@rac02 ~]$ srvctl config database
      racdb

    6)、数据库配置:
      [grid@rac02 ~]$ srvctl config database -d racdb -a
      Database unique name: racdb
      Database name: racdb
      Oracle home: /u01/app/oracle/product/11.2.0/dbhome_1
      Oracle user: oracle
      Spfile: +RACDB_DATA/racdb/spfileracdb.ora
      Domain: xzxj.edu.cn
      Start options: open
      Stop options: immediate
      Database role: PRIMARY
      Management policy: AUTOMATIC
      Server pools: racdb
      Database instances: racdb1,racdb2
      Disk Groups: RACDB_DATA,FRA
      Services:
      Database is enabled
      Database is administrator managed

    7)ASM状态以及ASM配置:

      [grid@rac02 ~]$ srvctl status asm
      ASM is running on rac01,rac02
      [grid@rac02 ~]$ srvctl config asm -a
      ASM home: /u01/app/11.2.0/grid
      ASM listener: LISTENER
      ASM is enabled.

    8)TNS监听器状态以及配置:
      [grid@rac02 ~]$ srvctl status listener
      Listener LISTENER is enabled
      Listener LISTENER is running on node(s): rac01,rac02
      [grid@rac02 ~]$ srvctl config listener -a
      Name: LISTENER
      Network: 1, Owner: grid
      Home: <CRS home>
      /u01/app/11.2.0/grid on node(s) rac02,rac01
      End points: TCP:1521

    9)SCAN状态以及配置:
      [grid@rac02 ~]$ srvctl status scan
      SCAN VIP scan1 is enabled
      SCAN VIP scan1 is running on node rac02
      [grid@rac02 ~]$ srvctl config scan
      SCAN name: rac-scan.xzxj.edu.cn, Network: 1/192.168.1.0/255.255.255.0/eth0
      SCAN VIP name: scan1, IP: /rac-scan.xzxj.edu.cn/192.168.1.55

    10)VIP各个节点的状态以及配置:
      [grid@rac02 ~]$ srvctl status vip -n rac01
      VIP rac01-vip is enabled
      VIP rac01-vip is running on node: rac01
      [grid@rac02 ~]$ srvctl status vip -n rac02
      VIP rac02-vip is enabled
      VIP rac02-vip is running on node: rac02
      [grid@rac02 ~]$ srvctl config vip -n rac01
      VIP exists.:rac01
      VIP exists.: /rac01-vip/192.168.1.53/255.255.255.0/eth0
      [grid@rac02 ~]$ srvctl config vip -n rac02
      VIP exists.:rac02
      VIP exists.: /rac02-vip/192.168.1.54/255.255.255.0/eth0


    11)
    、节点应用程序配置VIPGSDONS、监听器)

      [grid@rac02 ~]$ srvctl config nodeapps -a -g -s -l
      -l option has been deprecated and will be ignored.
      VIP exists.:rac01
      VIP exists.: /rac01-vip/192.168.1.53/255.255.255.0/eth0
      VIP exists.:rac02
      VIP exists.: /rac02-vip/192.168.1.54/255.255.255.0/eth0
      GSD exists.
      ONS daemon exists. Local port 6100, remote port 6200
      Name: LISTENER
      Network: 1, Owner: grid
      Home: <CRS home>
      /u01/app/11.2.0/grid on node(s) rac02,rac01
      End points: TCP:1521

    12)、验证所有集群节点间的时钟同步:
      [grid@rac02 ~]$ cluvfy comp clocksync -verbose
      Verifying Clock Synchronization across the cluster nodes
      Checking if Clusterware is installed on all nodes...
      Check of Clusterware install passed
      Checking if CTSS Resource is running on all nodes...
      Check: CTSS Resource running on all nodes
      Node Name Status
      ------------------------------------ ------------------------
      rac02 passed
      Result: CTSS resource check passed
      Querying CTSS for time offset on all nodes...
      Result: Query of CTSS for time offset passed
      Check CTSS state started...
      Check: CTSS state
      Node Name State
      ------------------------------------ ------------------------
      rac02 Active
      CTSS is in Active state. Proceeding with check of clock time offsets on all nodes...
      Reference Time Offset Limit: 1000.0 msecs
      Check: Reference Time Offset
      Node Name Time Offset Status
      ------------ ------------------------ ------------------------
      rac02 0.0 passed
      Time offset is within the specified limits on the following set of nodes:
      "[rac02]"
      Result: Check of clock time offsets passed
      Oracle Cluster Time Synchronization Services check passed
      Verification of Clock Synchronization across the cluster nodes was successful.

    13)、集群中所有正在运行的实例 — (SQL):

      SELECT inst_id , instance_number inst_no , instance_name inst_name , parallel , status ,

    database_status db_status , active_state state , host_name host FROM gv$instance ORDER BY inst_id;

    14)、所有数据库文件及它们所在的 ASM 磁盘组 — (SQL):

    15)ASM 磁盘卷:

    16)、启动和停止集群:

      以下操作需用root用户执行。
      (1)、在本地服务器上停止Oracle Clusterware 系统:
      [root@rac01 ~]# /u01/app/11.2.0/grid/bin/crsctl stop cluster


     注:在运行"crsctl stop cluster"命令之后,如果 Oracle Clusterware 管理的
    资源中有任何一个还在运行,则整个命令失败。使用 -f 选项无条件地停止所有资源并
    停止 Oracle Clusterware 系统。

      另请注意,可通过指定 -all 选项在集群中所有服务器上停止 Oracle Clusterware
    系统。如下所示,在rac01rac02上停止oracle clusterware系统:
      [root@rac02 ~]# /u01/app/11.2.0/grid/bin/crsctl stop cluster –all

      在本地服务器上启动oralce clusterware系统:
      [root@rac01 ~]# /u01/app/11.2.0/grid/bin/crsctl start cluster

      注:可通过指定 -all 选项在集群中所有服务器上启动 Oracle Clusterware 系统。
      [root@rac02 ~]# /u01/app/11.2.0/grid/bin/crsctl start cluster –all
      还可以通过列出服务器(各服务器之间以空格分隔)在集群中一个或多个指定的
    服务器上启动 Oracle Clusterware 系统:
      [root@rac01 ~]# /u01/app/11.2.0/grid/bin/crsctl start cluster -n rac01 rac02

      使用 SRVCTL 启动/停止所有实例:
      [oracle@rac01 ~]#srvctl stop database -d racdb
      [oracle@rac01 ~]#srvctl start database -d racdb

  • 相关阅读:
    linux运用日志
    ubuntu 8.04冒险记
    Linux破绽要挟网银静谧 SSL证书遽需互换
    红帽胡柏林:中国IT人才考试落伍于印度
    Arch Linux哲学
    slackware 12.0汉化备忘
    Xubuntu菜单删改条记
    UNIX同linux完成nfs共享衔接体例
    成为顶级微软迷
    [恢]hdu 2030
  • 原文地址:https://www.cnblogs.com/junnor/p/2943563.html
Copyright © 2020-2023  润新知