oracle 11g中的 oracle restart特性

kingsql發表於2015-07-10
oracle restart性特
在oracle 11g r2 以前對於單例項一般都是寫指令碼為自動啟動oracle,在oracle 11g r2中使用oracle restart功能來配置在硬體或軟體出現故障或者資料庫所在主機重啟之後自動重新啟動資料庫,監聽和其它oracle元件對於非叢集環境,只需要安裝OracleGrid Infrastructure,在安裝的時候選擇“僅安裝網格基礎結構軟體”,然後執行如下指令碼
來安裝Oracle Restart:$GRID_HOME/crs/install/roothas.pl

[root@jyrac1 install]# ./roothas.pl
2014-05-28 12:11:54: Checking for super user privileges
2014-05-28 12:11:54: User has super user privileges
2014-05-28 12:11:54: Parsing the host name
Using configuration parameter file: ./crsconfig_params
Creating trace directory
LOCAL ADD MODE
Creating OCR keys for user 'grid', privgrp 'oinstall'..
Operation successful.
CRS-4664: Node jyrac1 successfully pinned.
Adding daemon to inittab
CRS-4123: Oracle High Availability Services has been started.
ohasd is starting


jyrac1     2014/05/28 12:12:47     /grid/11.2.0/grid/cdata/jyrac1/backup_20140528_121247.olr
Successfully configured Oracle Grid Infrastructure for a Standalone Server
[root@jyrac1 install]# srvctl
-bash: srvctl: command not found
[root@jyrac1 install]# su - grid
[grid@jyrac1 ~]$ srvctl
Usage: srvctl []
    commands: enable|disable|start|stop|status|add|remove|modify|getenv|setenv|unsetenv|config
    objects: database|service|asm|diskgroup|listener|home|ons|eons
For detailed help on each command and object and its options use:
  srvctl -h or
  srvctl -h

oracel restart提高了資料庫的可用性.當你安裝oracle restart之後在硬體或軟體出現故障或者資料庫所在主機重啟之後各種
oracle元件能夠自動重啟.
表:  透過oracle restart自動重啟的oracle元件

------------------------------------------------------------------------------------------------------------
元件                           說明
------------------------------------------------------------------------------------------------------------
例項                           oracle restart能夠用於單主機上的多個資料庫例項


監聽程式


資料庫服務                     不包括預設建立的預設服務因為它是由oracle資料庫來管理的且不包括在資料庫建立時
                               所建立的預設服務


oracle asm例項


oracle asm磁碟組               重新啟動磁碟組並載入磁碟組


oracle ONS通知服務             在單獨的環境中,ONS在data guard安裝中被用來在主庫和備庫之間透過
                               fast application notification(fan)來自動進行故障切換.ONS是一個服務用來傳送
                               FAN事件被整合到客戶端的故障轉移功能中.


-------------------------------------------------------------------------------------------------------------

oracle restart會定期執行檢查操作來監控這些元件的健康.如果對一個元件的檢查操作失敗,那麼這個元件會被關閉然後再重新啟動.


oracle restart只能用於獨立的伺服器環境(非叢集).對於oracle rac來說是由oracle clusterware來提供自動重啟元件的功能.


oracle restart是在oracle grid 架構目錄之外的目錄執行的它的安裝目錄是與oracle資料庫的home目錄分開的.


關於啟動的依賴性
oracle restart能確保oracle元件根據元件之間的依賴性以合適的順序被啟動.例如,如果資料檔案被儲存在oracle asm磁碟組中,那麼在啟動資料庫例項之前,oracle restart會確保oracle asm例項被啟動且被要求的磁碟組會被載入.同樣的如果一個元件必須被關閉,oracle restart會確保依賴元件首先會被關閉.


oracle restart也管理資料庫例項和oracle監聽之間的弱依賴:當一個資料庫例項被啟動時,oracle restart會試圖啟動監聽.如果監聽啟動失敗,資料庫仍然處於啟動狀態.如果監聽後啟動失敗,oracle restart不會關閉例項然後再重啟例項.




並於使用oracle restart啟動和停止元件
當有需要時oracle restart會自動重啟各種oracle元件,當你手動關閉你的作業系統時oracle restart會以合理的順序來停止oracle元件.可能有時候你想手動啟動或者停止單個的oracle元件.oracle restart包括服務控制工具(srvctl)可以用它來手動啟動和停止由oracle restart管理的元件.當使用oracle restart時,oracle強烈建議使用srvctl來手動啟動和停止元件.


在你使用srvctl停止一個元件,如果出現故障oracle restart不會自動重啟這個元件.如果你使用srvctl啟動這個元件,那麼這個元件對於自動重啟又再次可以使用.


oracle工具象SQL*Plus,監聽控制工具(LSNRCTL)和ASMCMD都被整合到oracle restart中.如果使用SQL*Plus關閉資料庫,oracle restart不會把資料庫看作是故障不會試圖重新啟動資料庫.類似地如果你使用SQL*Plus或ASMCMD關閉oracle asm例項,oracle restart不會試圖重啟它.


使用srvctl啟動一個元件和使用SQL*Plus(或者其它工具)啟動有以下重要的不同:
.當你使用srvctl啟動一個元件時,這個元件所依賴的任何元件都會首先以合理的順序自動啟動.


.當你使用SQL*Plus(或其它工具)啟動一個元件該元件所依賴的其它元件是不會自動啟動的,你必須確保它所依賴的元件已經被啟動.


另外透過在指定的oracle home目錄中oracle restart使用單個命令能夠讓你啟動和停止所有的元件.這個oracle home目錄可以是一個資料庫home目錄或者oracle grid infrastructure home目錄.這個功能在打補丁時是非常有用的.


關於啟動和停止oracle restart
crsctl工具用來啟動和停止oracle restart.也可以使用crsctl工具來啟用或禁用oracle高可用服務.oracle restart使用高可用服務來自動啟動和停止由oracle restart管理的元件.例如,oracle高可用服務守護程式會自動啟動資料庫,監聽和oracle asm例項.當oracle高可用服務被禁用時,當一個節點被重啟時不會有透過oracle restart來管理的元件被自動啟動.


通常來說在oracle安裝時當要停止所有執行的oracle軟體時可以使用crsctl工具.例如,錄正在打補丁或者執行作業系統維護操作時可能需要停止oracle restart.當維護操作完成後可以使用crsctl工具啟動oracle restart.


oracle restart配置
oracle restart維護了一個由它管理的所有oracle元件的一個元件列表和每一個元件的配置資訊.所有這些配置資訊是一個集合被稱作oracle restart配置.當oracle restart啟動一個元件時它將根據這個元件的配置資訊來啟動這個元件.例如,oracle restart配置包含資料庫的一個本地伺服器引數檔案(spfile)和監聽程式的監聽埠.


如果你先安裝oracle restart然後再使用DBCA建立資料庫那麼DBCA會自動將資料庫新增到oracle restart配置中.當DBCA啟動 資料庫時,在資料庫和其它元件之間要求的依賴關係(例如儲存資料的磁碟組)會被建立,oracle restart將開始管理資料庫.


可以使用srvctl命令來向oracle restart配置中手動增加或刪除元件.例如,如果你在執行資料庫的主機上安裝了oracle restart 可以使用srvctl來向oracle restart配置增加一個資料庫.當你手動向oracle restart配置中增加一個元件後可以使用srvctl 來啟動它.oracle restart就會開始管理這個元件當有需要時重啟這個元件.


注意:向oracle restart配置增加一個元件也可以稱作使用oracle restart註冊一個元件


其它的srvctl命令可以用來檢視oracle restart管理元件的狀態和配置資訊,如臨時禁用和重新啟用元件管理等等.


當安裝oracle restart後許多建立oracle元件的操作會自動將元件增加到oracle restart配置中.




表:建立操作和oracle restart配置

---------------------------------------------------------------------------------------------------------
建立操作                                                     建立元件並自動增加到oracle restart配置中?
---------------------------------------------------------------------------------------------------------
使用OUI或DBCA建立資料庫                                          yes


使用create database語句建立資料庫                                no


使用OUI,DBCA或ASMCA建立oracle asm例項                            yes


使用任何方法建立磁碟組                                           yes


使用netca新增一個監聽                                            yes


使用srvctl建立一個資料庫服務                                     yes


透過修改service_name初始化引數建立一個資料庫服務                 no


使用dbms_service.create_service建立一個資料庫服務                no


建立一個備份資料庫                                               no
---------------------------------------------------------------------------------------------------------

下在的表格列出了一些delete/drop/remove操作是否會自動從oracle restart配置中刪除元件
表:   Delete/Drop/Remove Operations and the Oracle Restart Configuration

---------------------------------------------------------------------------------------------------------
操作                                                                自動從oracle restart配置中刪除元件?
---------------------------------------------------------------------------------------------------------
使用DBCA刪除一個資料庫                                               yes


使用作業系統命令刪除資料檔案來刪除資料庫                             no


使用netca刪除監聽                                                    yes


使用任何方法來刪除一個磁碟組                                         yes


使用srvctl刪除資料庫服務                                             yes


透過其它方法來刪除資料庫服務                                         no
---------------------------------------------------------------------------------------------------------



配置oracle restart
如果對單機環境透過安裝oracle grid infrastructure安裝了oracle restart然後再建立資料庫,資料庫會自動被增加到oracle restart配置中,然後在需要時自動重啟.然而如果在建立資料庫之後才安裝oracle restart,那麼就需要手動向oracle restart配置中增加資料庫,監聽,oracle asm管理例項,和其它要用的元件.




在配置oracle restart來管理資料庫後能夠做以下事情:
.向oracle restart配置中增加元件


.從oracle restart配置中刪除元件


.臨時暫停oracle restart對一個或多個元件管理


.對單個元件修改oracle restart的配置選項.


準備執行srvctl
要確保從正確的oracle home目錄中執行srvctl,且使用正確的使用者登入主機.表4-6列出了使用srvctl能配置的元件列表.對於每一個元件列出了執行srvctl所要求的oracle home目錄.


表:    判斷從哪個oracle home目錄中執行srvctl

-------------------------------------------------------------------------------------------------------------
被配置的元件                                      執行srvctl的oracle home目錄
-------------------------------------------------------------------------------------------------------------
database,database service                         database home
oracle asm instance,disk group,                   oracle grid infrastructure home
listener,ONS
-------------------------------------------------------------------------------------------------------------

假設監聽不是從oracle grid infrastructure home目錄中啟動的.如果你對一個存在的資料庫安裝oracle restart,那麼監聽可能要從database home目錄中啟動,在這種情況下從database home目錄中執行srvctl


為了執行srvctl
1.判斷應該從哪個oracle home目錄執行srvctl


2.如果打算執行srvctl命令來修改oracle restart配置(add,remove,enable,disable等等),那麼可以按以下步驟來操作:
.在unix和linux中,使用安裝你所判斷執行srvctl命令的oracle home目錄使用者登入到資料庫所在主機


.在windows上使用管理員登入系統
否則使用任何使用者登入到系統


3.開啟命令視窗輸入要使用的srvctl命令.為了輸入命令,要確保在path環境變理中設定了srvctl程式.否則要輸入srvctl程式
的完全路徑.




獲取srvctl幫助
srvctl工具的聯機幫助文件是可用的:
為了獲取srvctl的幫助:
1.準備執行srvctl


2.輸入以下命令:
srvctl


為了獲取更詳細的幫助輸入以下命令:
srvctl -h


為了獲取特定命令的幫助輸入以下命令:
srvctl command -h


例如為了獲取每一個元件型別的不同選項和add命令的幫助資訊輸入:
srvctl add -h


為了獲取特定元件的元件型別的特定命令輸入:
srvctl command object -h


為了獲取關於增加一個資料庫服務的幫助資訊輸入以下命令:
srvctl add service -h


向oracle restart配置中增加元件
在大多數情況下,在正在執行oracle restart的主機上建立一個oracle元件會自動向oracle restart配置中增加這個元件


下面是你要使用srvctl手動向oracle restart配置增加元件的情況:
.在建立資料庫之後才安裝oracle restart


.在相同主機上使用create database語句建立另外的資料庫.


.使用dbms_service.create_service過程建立一個資料庫服務


注意:向oracle restart配置中增加一個元件也叫作使用oracle restart註冊一個元件


向oracle restart配置中增加元件後不會啟動這個元件.必須使用srvctl start命令來啟動它.


你也可以使用oracle企業管理資料庫控制檯來向oracle restart配置增加一個資料庫或監聽.


注意:當你手動向oracle restart配置增加一個資料庫時,必須將oracle grid infrastructure software的所有者(使用者)
加到資料庫的osdba組中.這是因為grid infrastructure元件必須能夠以sysdba角色連線到資料庫啟動和停止資料庫.


例如,如果安裝grid infrastructure軟體的使用者是grid,資料庫的osdba組是dba,那麼使用者grid必須是dba組的一員.


使用srvctl增加元件
當使用srvctl向oracle restart配置中增加一個元件時,你能對這個元件指定配置選項.
1.準備執行srvctl的環境


2.輸入下面的命令:
srvctl add object options
這裡的object是一個元件.


增加一個資料庫
這個例子使用db_unique_name=jycs來增加一個資料庫元件.這個強制的-o選項用來指定oracle home目錄的位置
oracle@jyrac1 ~]$ srvctl add database -d jycs -o /u01/app/oracle/11.2.0/db




增加一個資料庫服務
對於db_unique_name=jycs的資料庫建立一個新的資料庫服務名jytest並將這個資料庫服務增加到oracle restart配置中
[oracle@jyrac1 ~]$ srvctl add service -d jycs -s jytest


增加預設的監聽程式
向oracle restart配置中增加一個預設的監聽程式:(注意增加監聽程式時要使用grid_home目錄
那麼在新增監聽的時候應該指定GI_HOME,而非ORACLE_HOME)
[grid@jyrac1 ~]$ srvctl add listener -o /grid/11.2.0/grid/


現在來驗證資料庫會不會在主機重啟時自動啟動


[root@jyrac1 ~]# reboot
Broadcast message from root (pts/2) (Wed Jun  4 10:30:32 2014):


The system is going down for reboot NOW!


在主機重啟之後透過下面的命令來檢查發現資料庫和監聽程式也自動啟動了

[root@jyrac1 ~]# ps -ef | grep pmon
oracle    3451     1  0 10:32 ?        00:00:00 ora_pmon_jycs
root      3563  3530  0 10:32 pts/1    00:00:00 grep pmon
[root@jyrac1 ~]# ps -ef | grep tns
grid      3438     1  0 10:32 ?        00:00:00 /grid/11.2.0/grid/bin/tnslsnr LISTENER -inherit
root      3565  3530  0 10:33 pts/1    00:00:00 grep tns


[grid@jyrac1 ~]$ crs_stat -t
Name           Type           Target    State     Host
------------------------------------------------------------
ora....ER.lsnr ora....er.type ONLINE    ONLINE    jyrac1
ora.cssd       ora.cssd.type  OFFLINE   OFFLINE
ora.diskmon    ora....on.type OFFLINE   OFFLINE
ora.jycs.db    ora....se.type ONLINE    ONLINE    jyrac1

從oracle restart配置中刪除元件
當使用oracle推薦的方法來刪除一個元件時這個元件會自動從oracle restart配置中刪除.例如,如果使用DBCA來刪除一個資料庫,
DBCA會從oracle restart配置中刪除資料庫.同樣的如果使用netca來刪除監聽,netca會從oracle restart配置中刪除監聽.


如果使用非建議的或手動刪除方法來刪除元件,必須首先使用srvctl從oracle restart配置中刪除元件.不這樣做可能會出現錯誤


從oracle restart配置中刪除一個元件:
srvctl remove object [options]


例如下面刪除一個db_unique_name為dbcrm的資料庫
srvctl remove database -d dbcrm


對一個元件禁用或啟用oracle restart配置
可以臨時對一個元件禁用oracle restart配置.一種原因就是當對元件執行維護任務時.例如,如果一個元件必須被修復,那麼可能想讓它在出現故障或者主機重啟時不自動啟動.


當維護任務完成後可以重新對元件啟用管理


當禁用一個元件時:
.它將不再自動重啟
.透過依賴元件它將不再自動啟動
.使用srvctl不能啟動
.任何依賴於這個資源的元件不再自動啟動或者自動重啟


禁用或啟動一個元件的自動重啟執行以下操作之一:
.禁用一個元件輸入以下命令:
srvctl disable object [options]


啟動一個元件輸入以下命令:
srvctl enable object [options]


例如:對一個db_unique_name為dbcrm的資料庫禁用自動重啟
srvctl disable database -d dbcrm




對一個asm磁碟組名為recovery的磁碟組禁用自動重啟
srvctl disable diskgroup -g recovery


檢視元件狀態
可以使用srvctl來檢視任命由oracle restart管理的元件的執行狀態.對於有些元件還會顯示額外的資訊.


檢視元件的狀態:
srvctl status object [options]


例如檢視db_unique_name為jycs的資料庫的狀態
[oracle@jyrac1 ~]$ srvctl status database -d jycs
Database is running.


檢視一個元件的oracle restart配置資訊
可以使用srvctl來檢視任何元件的oracle restart配置.oracle restart對於每種元件型別維護不同的配置資訊.使用srvctl 命令
可以獲得由oracle restart所管理的元件列表.


檢視元件配置:
srvctl config object options


例如:檢視由oracle restart所管理的所有資料庫列表
[oracle@jyrac1 ~]$ srvctl config database
jycs


檢視一個特定資料庫的配置資訊:
下面的例子檢視db_unique_name為jycs的資料庫的配置:
[oracle@jyrac1 ~]$ srvctl config database -d jycs
Database unique name: jycs
Database name:
Oracle home: /u01/app/oracle/11.2.0/db
Oracle user: grid
Spfile:
Domain:
Start options: open
Stop options: immediate
Database role: PRIMARY
Management policy: AUTOMATIC
Disk Groups:
Services:




修改元件的oracle restart配置
可以使用srvctl來修改元件的oracle restart配置.例如可以修改當oracle重啟動時的監聽程式的監聽埠或者在啟動資料庫時oracle restart所指示的伺服器引數檔案(SPFILE)


修改元件的oracle restart配置
srvctl modify object options


例如:對於db_unique_name為dbcrm的資料庫使用下面的命令將管理策略修改為manual啟動選項修改為nomount:
srvctl modify database -d dbcrm -y manual -s nomount


使用manual管理策略,當資料庫主機重啟時資料庫不會自動重啟.然而,oracle restart將會繼續監控資料庫如果出現故障將會重啟.


[oracle@jyrac1 ~]$ srvctl modify database -h


Modifies the configuration for the database.


Usage: srvctl modify database -d [-n ] [-o ] [-u ] [-m ] [-p ]  [-r {PRIMARY | PHYSICAL_STANDBY | LOGICAL_STANDBY | SNAPSHOT_STANDBY}] [-s ] [-t ] [-y {AUTOMATIC | MANUAL}] [-a ""|-z]
    -d      Unique name for the database
    -n        Database name (DB_NAME), if different from the unique name given by the -d option
    -o         ORACLE_HOME path
    -u         Oracle user
    -m              Domain for database. Must be set if database has DB_DOMAIN set.
    -p              Server parameter file path
    -r                Role of the database (primary, physical_standby, logical_standby, snapshot_standby)
    -s       Startup options for the database. Examples of startup options are open, mount, or nomount.
    -t        Stop options for the database. Examples of shutdown options are normal, transactional, immediate, or abort.
    -y            Management policy for the database (AUTOMATIC or MANUAL)
    -a ""      Comma separated list of disk groups
    -z                       To remove database's dependency upon disk groups
    -h                       Print usage


管理oracle restart配置中的環境變數.
在oracle restart配置中可以儲存環境變數的名值對.如果你通常在啟動資料庫之前設定環境變數(除了oracle_home和oracle_sid
之外),你可以在oracle restart配置中設定其它的環境變數.可以在下面的元件的單個配置中儲存任何數量的環境變數.
.database例項
.監聽
.oracle asm例項


當oracle restart啟動一個元件時它首先會使用儲存在元件配置中的的值來設定元件的環境變數.儘管可以透過oracle元件這種方式
來設定環境變數,這個功能主要是傾向於設定作業系統環境變數.


設定和取消環境變數
使用srvctl來對oracle restart配置中的元件來進行設定或者取消環境變數.


對元件設定或取消環境變數:
.為了設定環境變理使用以下命令:
srvctl setenv {asm|database|listener} options


從配置中刪除環境變數輸入以下命令:
srvctl unsetenv {asm|database|listener} options


例如設定資料庫環境變數
對db_unique_name為dbcrm的資料庫在oracle restart配置中設定NLS_LANG和AIX AIXTHREAD_SCOPE環境變數:
srvctl setenv database -d dbcrm -t "NLS_LANG=AMERICAN_AMERICA.AL32UTF8,AIXTHREAD_SCOPE=S"


檢視環境變數
使用srvctl來檢視oracle restart配置中元件的環境變數.
檢視環境變數的配置:
srvctl getenv {database|listener|asm} options


例如檢視資料庫的所有環境變數
檢視db_unique_name為dbcrm的資料庫在oracle restart配置中的環境變數:
srvctl getenv database -d dbcrm
dbcrm:
NLS_LANG=AMERICAN_AMERICA
AIXTHREAD_SCOPE=S
GCONF_LOCAL_LOCKS=1


例如檢視資料庫的特定環境變數
檢視資料庫的NLS_LANG和AIXTHREAD_SCOPE環境變數:
srvctl getenv database -d dbcrm -t "NLS_LANG,AIXTHREAD_SCOPE"
dbcrm:
NLS_LANG=AMERICAN_AMERICA
AIXTHREAD_SCOPE=S


使用srvctl來建立和刪除資料庫服務
當使用oracle restart來管理資料庫時,oracle建議使用srvctl來建立來刪除資料庫服務.當使用srvctl來增加一個資料庫服務時,
這個服務會自動增加到oracle restart配置中,而且在服務與資料庫之間的依賴關係會被建立.因此如果啟動服務當資料庫沒有
啟動時oracle restart首先會啟動資料庫.


當使用srvctl刪除一個資料庫服務時這個服務也會從oracle restart配置中刪除


使用srvctl來建立一個資料庫服務:
srvctl add service -d db_unique_name -s service_name [options]


例如建立一個資料庫服務


對db_unique_name為dbcrm的資料庫建立一個名叫crmbatch的資料庫服務名


srvctl add service -d dbcrm -s crmbatch


例如建立一個基於角色的資料庫服務
建立一個名叫crmbatch的資料庫服務並指定它的data guard角色為physical_standby.只有dbcrm資料庫的當前角色為物理備庫時
這個服務才會自動啟動.


srvctl add service -d dbcrm -s crmbatch -l PHYSICAL_STANDBY


使用srvctl刪除資料庫服務:
srvctl remove service -d db_unique_name -s service_name [-f]


資料庫服務將會從oracle restart配置中被刪除掉.如果-f強制標示出現即使服務正在執行也會被刪除.如果沒有-f標示如果服務
正在執行會報錯.


與oracle restart相關的crsctl命令


crsctl命令的語法如下:
crsctl command has
這裡command是start,stop或enable,disable等命令的簡稱.而has物件是指示oracle高可用服務.


check顯示oracle restart的狀態.
[grid@jyrac1 ~]$ crsctl check has
CRS-4638: Oracle High Availability Services is online


config顯示oracle restart配置
CRS-4622: Oracle High Availability Services autostart is enabled.


disable禁用oracle restart的自動重啟
[grid@jyrac1 ~]$crsctl disable has


enable啟用oracle restart的自動重啟
[grid@jyrac1 ~]$crsctl enable has


start啟動oracle restart
[grid@jyrac1 ~]$crsctl start has




stop停止oracle restart
[grid@jyrac1 ~]$crsctl stop has [-f]


-f選項:如果任何由oracle restart管理的資源仍然在執行.然後試圖停止這些資源.如果資源不能被停止那麼試圖強制停止.


個人覺得對於單個例項使用oracle restart與寫指令碼來啟動也沒有什麼優勢

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28389881/viewspace-1728526/,如需轉載,請註明出處,否則將追究法律責任。

相關文章