================================================
通过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信息和实例信息的准确命令。
$ 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