• 通过srvctl add命令添加database信息到srvctl管理器-转


    这是我在实际中遇到的一个问题,rac+dg架构将备库切为主库,srvctl管理器中没有database信息。

    对于dbca创建的数据库,srvctl中包含了数据库和实例的信息。但是对于备份恢复的RAC数据库来说,srvctl中不包含数据库和实例信息。

    srvctl管理器中没有database信息,很多地方都无法使用srvctl命令管理。所以,需要手动将database信息添加到srvctl管理器中。

    1.创建实验环境,实现srvctl管理器中没有database信息的目的。
    --原有环境是database信息
    [grid@rac1 ~]$ crs_stat -t
    Name           Type           Target    State     Host        
    ------------------------------------------------------------
    ora.DATA.dg    ora....up.type ONLINE    ONLINE    rac1        
    ora.FRA.dg     ora....up.type ONLINE    ONLINE    rac1        
    ora....ER.lsnr ora....er.type ONLINE    ONLINE    rac1        
    ora....N1.lsnr ora....er.type ONLINE    ONLINE    rac2        
    ora....DISK.dg ora....up.type ONLINE    ONLINE    rac1        
    ora.asm        ora.asm.type   ONLINE    ONLINE    rac1        
    ora.cvu        ora.cvu.type   ONLINE    ONLINE    rac2        
    ora.gsd        ora.gsd.type   OFFLINE   OFFLINE               
    ora....network ora....rk.type ONLINE    ONLINE    rac1        
    ora.oc4j       ora.oc4j.type  ONLINE    ONLINE    rac1        
    ora.ons        ora.ons.type   ONLINE    ONLINE    rac1        
    ora.rac.db     ora....se.type ONLINE    ONLINE    rac1         <-----------------
    ora....SM1.asm application    ONLINE    ONLINE    rac1        
    ora....C1.lsnr application    ONLINE    ONLINE    rac1        
    ora.rac1.gsd   application    OFFLINE   OFFLINE               
    ora.rac1.ons   application    ONLINE    ONLINE    rac1        
    ora.rac1.vip   ora....t1.type ONLINE    ONLINE    rac1        
    ora....SM2.asm application    ONLINE    ONLINE    rac2       


    ora....C2.lsnr application    ONLINE    ONLINE    rac2        
    ora.rac2.gsd   application    OFFLINE   OFFLINE               
    ora.rac2.ons   application    ONLINE    ONLINE    rac2        
    ora.rac2.vip   ora....t1.type ONLINE    ONLINE    rac2        
    ora.scan1.vip  ora....ip.type ONLINE    ONLINE    rac2

    <1>.停止数据库
    su - oracle
    [oracle@rac1 ~]$ srvctl stop database -d rac

    --db 已经停掉
    [grid@rac1 ~]$ crs_stat -t|grep db
    ora.rac.db     ora....se.type OFFLINE   OFFLINE   

    <2>.删除database信息
    [oracle@rac1 ~]$ srvctl  remove database -d rac
    是否删除数据库 rac? (y/[n]) y

    [grid@rac1 ~]$ crs_stat -t|grep db
    --返回空,没有了database信息

    <3>.通过startup方式启动数据库
    [oracle@rac1 ~]$ sqlplus  / as sysdba
    SQL*Plus: Release 11.2.0.3.0 Production on Wed Sep 18 12:59:51 2013
    Copyright (c) 1982, 2011, Oracle.  All rights reserved.
    Connected to an idle instance.

    SQL> startup
    ORACLE instance started.

    Total System Global Area  488534016 bytes
    Fixed Size                  2229624 bytes
    Variable Size             276826760 bytes
    Database Buffers          205520896 bytes
    Redo Buffers                3956736 bytes
    Database mounted.

    <4>.实现缺少database信息的目的
    --srvctl命令无法使用,原因:缺少database信息
    $ srvctl status database -d rac
    PRCD-1120 : 找不到数据库 rac 的资源。
    PRCR-1001 : 资源 ora.rac.db 不存在

    2.通过srvctl add命令添加database信息和实例信息
    su - oracle
    $ srvctl  add database -d rac -o /u01/app/oracle/11.2.0/db -p +DATA/rac/spfilerac.ora http://www.luyouqiwang.com/ # -d db_unique_name; -o oracle_home; -p spfile_path
    $ srvctl add instance -d rac -i rac1 -n rac1   #-i instance_name;-n node_name

    --虽然添加了database信息,但是database的状态是错误的
    --crs_stat显示db没有online,实际db是启动的
    $ crs_stat -t|grep db        
    ora.rac.db     ora....se.type OFFLINE   OFFLINE 

    [oracle@rac1 ~]$ srvctl status database -d rac
    实例 rac1 没有在 rac1 节点上运行


    3.启动db,修正数据库信息(感觉更像是注册database信息,因为db实际已经启动)
    [oracle@rac1 ~]$ srvctl start database -d rac 

    --database信息变为正常
    [grid@rac1 ~]$ crs_stat -t
    Name           Type           Target    State     Host        
    ------------------------------------------------------------
    ora.DATA.dg    ora....up.type ONLINE    ONLINE    rac1        
    ora.FRA.dg     ora....up.type ONLINE    ONLINE    rac1        
    ora....ER.lsnr ora....er.type ONLINE    ONLINE    rac1        
    ora....N1.lsnr ora....er.type ONLINE    ONLINE    rac2        
    ora....DISK.dg ora....up.type ONLINE    ONLINE    rac1       


    ora.asm        ora.asm.type   ONLINE    ONLINE    rac1        
    ora.cvu        ora.cvu.type   ONLINE    ONLINE    rac2        
    ora.gsd        ora.gsd.type   OFFLINE   OFFLINE               
    ora....network ora....rk.type ONLINE    ONLINE    rac1        
    ora.oc4j       ora.oc4j.type  ONLINE    ONLINE    rac1        
    ora.ons        ora.ons.type   ONLINE    ONLINE    rac1        
    ora.rac.db     ora....se.type ONLINE    ONLINE    rac1        <---------------
    ora....SM1.asm application    ONLINE    ONLINE    rac1        
    ora....C1.lsnr application    ONLINE    ONLINE    rac1        
    ora.rac1.gsd   application    OFFLINE   OFFLINE               
    ora.rac1.ons   application    ONLINE    ONLINE    rac1        
    ora.rac1.vip   ora....t1.type ONLINE    ONLINE    rac1        
    ora....SM2.asm application    ONLINE    ONLINE    rac2        
    ora....C2.lsnr application    ONLINE    ONLINE    rac2        
    ora.rac2.gsd   application    OFFLINE   OFFLINE               
    ora.rac2.ons   application    ONLINE    ONLINE    rac2        
    ora.rac2.vip   ora....t1.type ONLINE    ONLINE    rac2        
    ora.scan1.vip  ora....ip.type ONLINE    ONLINE    rac2 

    [oracle@rac1 ~]$ srvctl status database -d rac
    实例 rac1 正在节点 rac1 上运行

    这样数据库就可以利用srvctl命令维护了。

    用srvctl查看数据库配置信息
    [oracle@rac1 ~]$ srvctl config database -d rac -a
    数据库唯一名称: rac
    数据库名: 
    Oracle 主目录: /u01/app/oracle/11.2.0/db
    Oracle 用户: oracle
    Spfile: +DATA/rac/spfilerac.ora
    域: 
    启动选项: open
    停止选项: immediate
    数据库角色: PRIMARY
    管理策略: AUTOMATIC
    服务器池: rac
    数据库实例: rac1
    磁盘组: 
    装载点路径: 
    服务: 
    类型: RAC
    数据库已启用
    数据库是管理员管理的

    ======
    补充
    ======

    由于实验关键rac只剩了一个节点,虽然步骤和命令都是正确的,但是不是很准确。
    下面是添加database信息和实例信息的准确命令。
    $ srvctl add database -d db_unique_name -o oracle_home e -m DB_DOMAIN -p spfile_path
    $ srvctl add instance -d db_unique_name -i instance_node1 -n node_name1
    $ srvctl add instance -d db_unique_name -i instance_node2 -n node_name1

    如果使用DBCA建库,在创建好RAC数据库后,DBCA自动将数据库信息添加到SRVCTL管理器中。

    但是如果手工创建数据库,或者通过备份恢复的数据库,就需要手工添加数据库信息了。

      当前服务器上安装了两套RAC数据库,分别是rac11g和ractest,其中ractest是通过dbca创建的,而rac11g是通过备份恢复的。

    $ srvctl status database -d rac11g
    PRKR-1001 : cluster database rac11g does not exist
    PRKO-2005 : Application error: Failure in getting Cluster Database Configuration for: rac11g
    $ srvctl status database -d ractest
    Instance ractest1 is running on node ser1
    Instance ractest2 is running on node ser2

    对于dbca创建的数据库,srvctl中包含了数据库和实例的信息,而对于备份恢复的数据库rac11g来说,srvctl中不包含数据库和实例信息。

    下面通过srvctl add命令来添加数据库和实例信息:

    $ srvctl add database -d rac11g -o /data/oracle/product/11.1/database -m us.oracle.com -p +DATA/RAC11G/spfilerac11g.ora
    $ srvctl add instance -d rac11g -i rac11g1 -n ser1
    $ srvctl add instance -d rac11g -i rac11g2 -n ser2

    检查数据库状态:

    $ srvctl status database -d rac11g
    Instance rac11g1 is not running on node ser1
    Instance rac11g2 is not running on node ser2

    数据库目前没有启动,利用srvctl start命令启动数据库:

    $ srvctl start db -d rac11g  
    $ srvctl status db -d rac11g
    Instance rac11g1 is running on node ser1
    Instance rac11g2 is running on node ser2

    现在RAC数据库RAC11G已经可以通过SRVCTL命令来维护了。

    利用srvctl config命令可以看到现有数据库的配置信息:

    bash-3.00$ srvctl config database -d rac11g -a
    ser1 rac11g1 /data/oracle/product/11.1/database
    ser2 rac11g2 /data/oracle/product/11.1/database
    DB_UNIQUE_NAME: rac11g
    DB_NAME: null
    ORACLE_HOME: /data/oracle/product/11.1/database
    SPFILE: +DATA/RAC11G/spfilerac11g.ora
    DOMAIN: us.oracle.com
    DB_ROLE: null
    START_OPTIONS: null
    POLICY:  AUTOMATIC
    ENABLE FLAG: DB ENABLED

      http://blog.itpub.net/4227/viewspace-469962/

  • 相关阅读:
    Android Permission 访问权限大全(转)
    .NET中DateTime.Now.ToString的格式化字符串
    linux
    code only
    常用JavaScript操作页面元素的方法
    C#将字符串数组转换为以逗号分隔的字符串
    C#去除数组空格
    追源索骥:透过源码看懂Flink核心框架的执行流程
    高并发请求的缓存设计策略
    spark 2.3 导致driver OOM的一个SparkPlanGraphWrapper源码的bug
  • 原文地址:https://www.cnblogs.com/future2012lg/p/4882189.html
Copyright © 2020-2023  润新知