【雲和恩墨】嵌入雲端:12c Policy-Managed Cluster為Oracle DBaaS助力

lhrbest發表於2016-05-17


【雲和恩墨】嵌入雲端:12c Policy-Managed Cluster為Oracle DBaaS助力


Oracle | 2016-05-16 00:00

張樂奕

雲和恩墨副總經理,Oracle ACE 總監,ACOUG 聯合創始人


Policy-Managed Cluster 在 Oracle 11gR2 中被引進,在 Oracle 12c 中使用 dbca 建立 RAC 資料庫的時候,Policy-Managed 選項已然成為預設值。

那麼到底什麼是 Policy-Managed 方式的叢集和資料庫呢?與以前的 Admin-Managed 方式有何區別?何種環境適合使用這種新的方式進行管理?本文嘗試回答這些問題,並且做出簡單的測試。

什麼是 Policy-Managed 方式?

基於策略的管理方式,是以伺服器池(Server Pools)為基礎的,簡單地說,就是先定義一些伺服器池,池中包含一定量的伺服器,然後再定義一些策略,根據這些策略 Oracle 會自動決定讓多少資料庫例項執行在池中的幾臺機器上。資料庫例項名字尾、資料庫例項個數、所執行的主機,這些都是透過策略決定的,而不是資料庫管理員事先定好的。

與 Admin-Managed 方式有何區別?

實際上上面的表述已經明確說明了,Policy-Managed 和 Admin-Managed 方式的差別。讓我們再回顧一下,在以往我們建立一個 RAC 資料庫大概是怎樣的方法,我們在dbca的介面中會選擇要將資料庫例項執行在整個叢集中的幾臺機器上,或者是2臺或者是3臺,或是更多,但是隻要在安裝的時候選定幾臺機器,那麼以後如果不做增減節點的操作,就始終會在這幾臺機器上執行。而且,通常會根據主機名稱的排序自動將每臺主機上的資料庫例項依次命名為 dbname1 到 dbnameN。這些在管理員安裝完畢以後,都不會再自動變化,這就是 Admin-Managed 方式。

何種環境適合使用這種新的方式進行管理?

當管理大量的伺服器叢集,並且在這些叢集中執行著多種不同重要程度,不同策略的RAC資料庫時,為了簡化管理,建議使用 Policy-Managed 方式,實際上 Oracle 也建議只有在超過3臺的伺服器的時候才使用 Policy-Managed 來管理整個資料庫叢集。想象一下使用 Policy-Managed 方式可以達到的效果:如果我們有10臺伺服器組成,根據不同的應用的重要性定義伺服器池的關鍵程度,然後在其中某些機器意外停機的情況下,仍然可以自動地保持足夠多的機器給重要的系統提供資料庫服務,而將不關鍵的系統資料庫伺服器個數降低到最低限度。

那麼 Policy-Managed 方式到底長什麼樣?

在預設安裝完 Oracle 12c 的 RAC 資料庫之後,發現資料庫例項始終只會啟動在一個節點中。檢查伺服器池配置。

Free 池和 Generic 池是預設存在的,orcl_pool 池則是在 dbca 建立資料庫的時候由我們自己定義的。其中Min: 0, Max: 1表示在這個池中最少允許有0臺機器,最多允許有1臺機器被使用。所以這也造成了使用這個伺服器池的資料庫例項始終只會啟動在一個節點中,即使這在我們最初的定義中是一個 RAC 資料庫。

當前的資料庫例項啟動在節點2中,比較一下節點1和節點2伺服器使用情況的輸出。

接下來需要修改一下配置,讓 RAC 資料庫以我們熟知的方式啟動在多個節點上。 –修改 orcl_pool 池中最少執行一臺機器,最多執行2臺機器,還記得我們前面說的關鍵程度嗎? importance 表示該池的關鍵程度,數字越大表示關鍵程度越高,越優先被考慮滿足 Min 條件。

–重新檢查伺服器池資訊,可以看到已經修改成功,Min: 1, Max: 2

–檢視當前伺服器池的狀態,可以看到orcl_pool池中啟用的伺服器包括了節點1和節點2兩臺機器。

在修改完畢以後,節點1中的資料庫例項就會自動啟動,我們可以透過 crsctl 命令檢視伺服器的狀態,其中 STATE_DETAILS 欄位顯示了正在啟動資源,在正常啟動完畢以後該欄位會顯示為空。

現在就出現了一個比較尷尬的情況(對於我們以前管理 RAC 的常識來說),由於 dbserver1 中的例項是後啟動的,因此例項名字尾為2,而 dbserver2 中的例項名字尾是1,實際上,在 Policy-Managed 管理的 RAC 環境中,無需關注到底哪個例項啟動在哪臺機器上,我們需要的就是透過 SCAN IP,透過 Service 名去訪問資料庫就好,而不需要透過例項名訪問資料庫。但是這裡為了測試一下功能,還是決定1歸1,2歸2,我有說過我是完美主義者嗎?

最後將這個 RAC 資料庫再改回到只會啟動一個例項的預設狀態。

以後,無論是啟動在哪臺機器上,資料庫的例項名永遠會是 dbname_1(注意,這裡有一個下劃線,這是 Policy-Managed 資料庫例項的命名規則)。而我們訪問資料庫,則不應該指定例項名。比如:

因為現在您已經無需關心到底例項是啟動在哪臺機器上了,後面是一個資源池——是不是有些熟悉這樣的表述,是的,沒錯,Cloud! 我們也貼上了 Cloud 這個紅到發紫的詞,這就是Oracle 私有云解決方案的構成元件之一。


About Me



...............................................................................................................................................................................

本文來自於微信公眾號轉載文章,若有侵權,請聯絡小麥苗及時刪除

ITPUB BLOG:http://blog.itpub.net/26736162

QQ:642808185 若加QQ請註明您所正在讀的文章標題

【版權所有,文章允許轉載,但須以連結方式註明源地址,否則追究法律責任】

...............................................................................................................................................................................


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

相關文章