通過srvctl add命令添加database資訊到srvctl管理器-轉

來源:互聯網
上載者:User

標籤:

這是我在實際中遇到的一個問題,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管理器-轉

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.