Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2833818
  • 博文数量: 200
  • 博客积分: 2413
  • 博客等级: 大尉
  • 技术积分: 3067
  • 用 户 组: 普通用户
  • 注册时间: 2011-04-01 22:07
文章分类

全部博文(200)

文章存档

2018年(2)

2017年(8)

2016年(35)

2015年(14)

2014年(20)

2013年(24)

2012年(53)

2011年(44)

分类: Oracle

2014-01-13 22:45:04

================================================
通过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  # -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信息和实例信息的准确命令。
node1&node2 oracle

$ srvctl add database -d db_unique_name -o oracle_home e -m DB_DOMAIN -p spfile_path
$ srvctl start database -d db_unique_name 

node1 oracle:

$ srvctl add instance -d db_unique_name -i instance_node1 -n node_name1

node2 oracle:

$ srvctl add instance -d db_unique_name -i instance_node2 -n node_name1


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

阅读(17672) | 评论(1) | 转发(1) |
给主人留下些什么吧!~~

vcdog2014-03-10 15:43:40

srvctl管理器是oracle数据库RAC环境运维时必备利器,思路清晰慎密!赞一个!