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

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

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

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

1.创建实验环境,实现srvctl管理器中没有database信息的目的。
--原有环境是database信息
[[email protected] ~]$ 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
[[email protected] ~]$ srvctl stop database -d rac

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

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

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

<3>.通过startup方式启动数据库
[[email protected] ~]$ 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

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

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

--database信息变为正常
[[email protected] ~]$ 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

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

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

用srvctl查看数据库配置信息
[[email protected] ~]$ 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/

时间: 2024-10-01 06:54:12

通过srvctl add命令添加database信息到srvctl管理器-转的相关文章

在linux系统上怎么获取命令的帮助信息及man文档划分

如何在linux系统上获取命令的帮助信息及man文档的章节划分 1.命令 -- help 2.man 命令 后者更加详细 首先帮助中尖括号<>和方括号[]以及省略号...的含义, 在方括号内的表达式("[" 和 "]"之间的字符)是可选的(写命令时要去掉括号). 在尖括号内的表达式("[" 和 "]"之间的字符)是必须替换的表达式(而且要去掉括号). 省略号表示该选项可以单个或多个 以7z的参数为例: 7z [..

rac 中添加添加database和 instance 的注意事项

添加database和 instance 一定要用oracle用户进入,使用oracle_database_home/bin下的srvctl添加. How to Delete From or Add Resource to OCR in Oracle Clusterware (Doc ID 1069369.1)

使用pyinstaller 2.1将python打包并添加版本信息和图标

最近用 wxpython写了一个小的脚本,因为想要发布给没有装python和wxpython的人使用,遂决定使用pyinstaller 2.1进行打包. 其中遇到几个问题: 1,给打包的文件添加图标 查看pyinstaller 的操作手册很容易发现: -i <FILE.ico>, -i <FILE.exe,ID>, --icon=<FILE.ico>, --icon=<FILE.exe,ID>   Add an icon to the output exec

u-boot的启动、编译过程和命令添加

MCU:s5pv210 开发板:unsp210 u-boot:1.3.4 一.简介 U-Boot是一种支持多架构,多操作系统的Bootloader(启动引导程序) u-boot目前最新版本是:http://ftp.denx.de/pub/u-boot/ 二.启动过程 嵌入式Bootloader的启动过程可以分为单阶段(Single-Stage)和多阶段(Multi-Stage) 通常多阶段的Bootloader能够提供更复杂的功能,及更好的可读性和移植性. 从外部存储设备上启动的Bootload

Memcached add 命令

Memcached add 命令用于将 value(数据值) 存储在指定的 key(键) 中. 如果 add 的 key 已经存在,则不会更新数据,之前的值将仍然保持相同,并且您将获得响应 NOT_STORED. 语法: add 命令的基本语法格式如下: add key flags exptime bytes [noreply] value 参数说明如下: key:键值 key-value 结构中的 key,用于查找缓存值. flags:可以包括键值对的整型参数,客户机使用它存储关于键值对的额外

git add 命令

git add xx命令可以将xx文件添加到暂存区,如果有很多改动可以通过 git add -A .来一次添加所有改变的文件. 注意 -A 选项后面还有一个句点. git add -A表示添加所有内容, git add . 表示添加新文件和编辑过的文件不包括删除的文件; git add -u 表示添加编辑或者删除的文件,不包括新添加的文件.

VS2010自动添加版权信息

原文:http://www.cnblogs.com/justconnor/archive/2013/04/07/3006331.html   自动生成版权信息设置 现在大多数公司都规定程序员在程序文件的头部加上版权信息如下: /****************************************************************** * Copyright (C): **公司 * NameSpace: Test * FileName: WebForm4 * Create

VS2013点击右键菜单命令添加xml元素插件开发

一.选择Visual Studio Package模板建立插件项目 由于此功能需要在右键菜单上添加命令,所以选择Visual Studio Package模板,根据模板向导步骤插件项目,在Select VSPackage Options步骤的时候选择Menu Command选项,如图-1所示: 图-1 接下来是设置命令的名称,如图-2所示 图-2 修改Command name的值,将其设置为我们要添加到右键菜单时的名称.Command ID可选择是否修改,值是一个十六进制数,由于标识我们的添加的

TListView列表拒绝添加重复信息

//TListView列表拒绝添加重复信息 procedure TForm1.Button1Click(Sender: TObject);var  i: Integer;begin  if (Trim(Edit1.Text)<>'') then  begin    for i := 0 to ListView1.Items.Count-1 do    if Trim(Edit1.Text) = Trim(ListView1.Items[i].Caption) then    begin