程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle數據庫基礎 >> Windows平台上Oracle數據庫服務解析

Windows平台上Oracle數據庫服務解析

編輯:Oracle數據庫基礎

如果在Windows操作系統上部署Oracle數據庫系統,會將起動過程寫入到操作系統的服務列表中。並且一些主要的服務都會被設置為自動啟動。如此的話,當操作系統啟動的時候,數據庫會自動啟動。當關閉操作系統時這些服務也會自動關閉。如下圖所示,就是在Windows操作系統下的Oralce數據庫系統的典型服務。

Oracle服務

一、了解主要的Oracle數據庫服務

雖然上圖中列舉出了很多的Oracle數據庫服務,但是在實際過程中我們用到的只是其中的四種。分別為OracleTNSListener(上圖中的第二個服務,這服務對應於數據庫的監聽程序)、OracleServiceDTM123(上圖中的第一個服務,對應於數據庫例程)、OracleDBConsoledmt123(上圖中最後一個服務,對應於數據庫的企業管理器)、OracleiSQL*Plus(上圖中的第五個服務,對應於數據庫的Isql*plus工具)。數據庫管理員必須要對這四個服務的作用以及相互之間的關系了如指掌。因為有時候處於維護的需要,數據庫管理員需要通過這個服務列表來管理數據庫的啟動與關閉。

如當啟動這些數據庫服務的時候,會占用比較多的內存、CPU等系統資源。有時候在Windows操作系統上安裝Oracle數據庫系統可能只是出於測試、培訓等目的。為此沒有必要讓這些數據庫服務一直運行著,而影響操作系統上的其它服務。所以有時候數據庫管理員不希望這些數據庫服務隨著操作系統的啟動而自動啟動。他們希望能夠在需要的時候手工啟動這些服務。如此的話,在不需要用到數據庫的時候,這些服務就不會占用寶貴的例程。此時數據庫管理員就需要更改這些服務的啟動方式。如上圖所示,可以將以上四種服務設置為“手動”啟動方式。如此的話,數據庫系統不會隨著操作系統的啟動而自動啟動。如果需要更改這些服務的啟動方式,只需要選中以上對應的服務,雙擊這個服務,會打開一個服務管理的對話框。在這個對話框內我們可以發現有一個啟動類型的下拉列表,只要選擇“手動”,即可以更改這些服務的啟動方式。默認情況下,這個啟動類型為“自動”。如果一直不需要使用這些服務,甚至可以將啟動類型設定為“已禁用”。

二、了解各種服務之間的關系。

Oracle各種服務之間有著比較復雜的關系,這個復雜性主要體現在他們有很嚴格的相互依存關系。當啟動某個服務或者關閉某個服務的時候往往需要按照一定的順序來啟動或者關閉。否則的話,可能會出現錯誤信息。如就以上面四種主要服務來說,他們之間的關系就比較復雜。一般情況下,只有先啟動OracleTNSListener(監聽程序)服務,才可以打開啟動服務。如果在沒有打開這個服務的情況下,而打開其他數據庫服務,如OracleDBConsoledmt123(數據庫企業管理器)服務,就會出現錯誤。系統會提示:“一些服務依賴於其它服務、系統驅動程序或者組的加載順序,如果系統組建被停止或者運行不正常,則依賴於它的服務會受到影響”。簡單的說,就是監聽程序服務沒有打開的話,企業管理器服務就無法啟動。這兩個服務之間存在著依存的關系。類似的,企業管理器服務跟OracleServiceDTM123(數據庫例程)服務之間也存在著千絲萬縷的關系。如果要使用企業管理器服務,那麼必須先啟動數據庫例程服務。否則的話,又會拋出以上的異常信息。

數據庫服務在啟動的時候會受到以上限制因素的影響。在關閉這些服務的時候也是如此。不過比服務啟動的時候好的多,操作會在關閉服務的時候去自動檢測是否存在相關的依存服務。如果存在的話,會先自動關閉其它的服務,然後再關閉這個服務。如現在操作系統中同時啟動了數據庫企業管理器服務與數據庫例程這兩個服務。現在數據庫管理員暫時不用Oracle數據庫了,他就要關閉數據庫例程服務以釋放其占用內存與CPU資源。此時在關閉這個服務的時候,操作系統發現現有啟動的服務(企業管理器)需要用到這個正在關閉的服務。此時操作系統會先關閉企業管理器服務,然後再關閉數據庫例程服務。也就是說,服務在啟動的時候,如果服務之間存在依存關系,操作系統是不會自動啟動的。而是拋出異常信息,讓數據庫管理員手工啟動相關聯的服務。但是在關閉服務的時候,則如果遇到相互依存的服務,操作系統會自動關閉相互依存的服務。為此在關閉某個服務的時候,數據庫管理員一定要了解他們之間相互依存關系。要防止為了關閉某個服務,而同時關閉其它正在使用的服務。此時可能會給用戶造成不必要的損失。

三、利用服務啟動數據庫與利用命令啟動數據庫的差異

在使用命令啟動數據庫的時候,可以利用不同的選項讓數據庫啟動在不同的狀態中。如通常情況下利用命令來啟動數據庫,帶上不同的選項,可以讓數據庫只啟動例程(帶上Nomount選項)、掛載數據庫而不打開數據庫(采用mount選賢)、打開數據庫(采用open選項)或者以受限模式(帶上restrict選項)打開數據庫系統。有時候以某種特定的方式來打開數據庫系統對於數據庫管理員維護數據庫是非常重要的。如數據庫管理員需要將某個數據庫文件移動到新的硬盤上以減少硬盤的I/Q沖突或者需要將數據庫從非歸檔模式轉換到歸檔模式的時候,就需要將數據庫啟動到掛載模式。即打開控制文件而沒有打開數據文件。此時可以更改控制文件中的內容(控制文件已經打開);也可以移動數據文件(數據文件在掛載模式下還沒有打開。只有在這個模式下才能夠完成對數據文件的更名、移動等操作。而且利用命令還可以在不同的模式下進行轉換。如現在處於數據庫掛載模式,則可以利用alter database open命令將數據庫轉換為打開模式。這些功能通過Oracle服務都是無法完成的。

而通過服務來控制數據庫的啟動與關閉,就不能夠做到這麼精細的控制。一般情況下,只有監聽程序服務、數據庫例程服務和數據庫企業管理器服務三個服務同時打開的情況下,對應的數據庫才處於啟動狀態。或者說,只有數據庫企業管理器服務啟動時數據庫才處於打開狀態。因為只有有監聽程序服務、數據庫例程服務這兩個服務啟動後,才可以啟動企業管理器服務。所以一般情況下,企業管理器服務啟動了,就表示這三個服務已經同時啟動。如果有一個服務還處於關閉的狀態,那麼數據庫就是處於關閉狀態。

可見通過命令與通過服務來管理數據庫的啟動與關閉存在很多的差異。一般情況下筆者建議大家還是通過命令來維護數據庫的啟動與關閉操作為好。不過通過服務,也可以起到一些命令無法實現的功能。如現在數據庫管理員不希望數據庫隨著操作系統的啟動而自動啟動,此時就可以通過更改對應服務啟動類型來實現。如可以將上面的服務的啟動類型設置為“手工”啟動。此時當操作系統啟動時,就不會自動啟動數據庫系統。不過這主要用於一些測試服務器或者培訓服務器上。對於在企業生產環境中使用的數據庫服務器,往往要將這個服務設置為自動啟動。即讓操作系統啟動時自動啟動數據庫服務,以減少數據庫管理員的工作量。所以說,雖然通過服務來管理數據庫的啟動與關閉進程,屬於粗放型的管理。但是有時候數據庫管理員確實也離不開它。

最後需要提醒的一點是,在Windows操作系統中,默認情況下數據庫系統是會隨著操作系統的啟動而自動啟動的。而在Linux等到作系統平台上,由於沒有這種服務的管理機制,所以在Linux操作系統部署Oracle數據庫系統的時候,默認情況下是不會隨著操作系統的啟動而啟動的。如果數據庫管理員需要讓其隨著操作系統啟動而自動啟動,就需要在啟動列表中加入相關的指令才行。這是在兩個不同操作系統上部署Oracle數據庫的一個很明顯的區別。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved