標籤:
這是我在實際中遇到的一個問題,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/
通過srvctl add命令添加database資訊到srvctl管理器-轉