共計 8689 個字符,預計需要花費 22 分鐘才能閱讀完成。
丸趣 TV 小編給大家分享一下 Oracle 11g RAC 如何使用 Manual 和 Policy Managed 方法配置,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
軟件環境:
操作系統:Red Hat Enterprise Linux 5.4(Tikanga)
Oracle:11gR2 11.2.0.4.0 RAC
數據庫名稱: racdb
RAC 集群兩節點名稱:racdb01,racdb02
Policy-Managed 方式介紹
基于策略的管理方式,是以服務器池(Server Pools)為基礎的,簡單地說,就是先定義一些服務器池,池中包含一定量的服務器,然后再定義一些策略,根據這些策略 Oracle 會自動決定讓多少數據 庫實例運行在池中的幾臺機器上。數據庫實例名后綴、數據庫實例個數、所運行的主機,這些都是通過策略決定的,而不是數據庫管理員事先定好的。
何種環境適合使用這種新的方式進行管理?
當管理大量的服務器集群,并且在這些集群中運行著多種不同重要程度,不同策略的 RAC 數據庫時,為了簡化管理,建議使用 Policy- Managed 方式,實際上 Oracle 也建議只有在超過 3 臺的服務器的時候才使用 Policy-Managed 來管理整個數據庫集群。想象一下使用 Policy-Managed 方式可以達到的效果:如果我們有 10 臺服務器組成,根據不同的應用的重要性定義服務器池的關鍵程度,然后在其中某些機器意外 停機的情況下,仍然可以自動地保持足夠多的機器給重要的系統提供數據庫服務,而將不關鍵的系統數據庫服務器個數降低到最低限度。
策略管理:DBA 指定數據庫資源運行在哪個服務器池(排除 generic or free)。Oracle Clusterware 負責將數據庫資源放在一臺服務器。
Policy managed: Database administrators specify in which server pool (excluding generic or free) the database resource will run. Oracle Clusterware is responsible for placing the database resource on a server.
服務器以如下次序被分配入服務器池:
Generic server pool
User assigned server pool
Free
Oralce Clusterware 使用服務器池的重要性決定分配服務器次序:
按重要性次序分配服務器給所有服務器池,直到滿足服務器池的最小數目要求
按重要性次序分配服務器給服務器池,直到它們滿足服務器池的最大數目要求
默認,任何剩下的服務器加入 FREE 服務器池
策略管理數據庫背后的目標是刪除到 1 個特定實例或服務 服務的硬編碼
數據庫可以和 1 個服務器池關聯 (而不是特定的節點集)。服務器池決定被資源(數據庫,服務,第三方應用程序) 所需的最小和最大服務器數目。
數據庫實例將運行在已被分配給服務器池的服務器上。(使用 min_size 決定數據庫必需運行在哪些服務器,以及必需運行在多少服務器上)
既然被分配給服務器池的服務器可以動態地變更,這允許 Oracle 基于集群可用的服務器總數動態地交付服務。
數據庫實例將啟動在足夠多的服務器上 (受制于服務器的可用性)。無需硬編碼規定數據庫實例運行在哪些服務器上。
數據庫的任何實例可以運行在任何節點上。在實例號和節點之間無固定的映射關系。
當服務器被釋放 / 添加 / 刪除時,他們按之前提及的規則被分配到存在的服務器池中。
理論上的例子
例如,如果 1 個集群,總共有 8 個節點組成,并且支持 3 個 RAC 數據庫。每個數據庫將定義服務器的最小和最大數目。
假設 DB1 定義最小 4 臺、最多 6 臺服務器 (重要性為 10),
假設 DB2 定義最小 2 臺、最多 3 臺服務器 (重要性為 7),
假設 DB3 定義最小 2 臺、最多 3 臺服務器 (重要性為 5)。
初始 8 節點將被配置成節點 1 - 4 被分配給 DB1,節點 5 - 6 被分配給 DB2,節點 7 - 8 被分配給 DB3。如果節點 3 由于某種原因發生故障,系統將分配節點 7 或 8 給 DB1,因為其比 DB3 有更高的重要性而且最小需要 4 臺服務器,即使將導致 DB3 降到最小服務器水平以下。如果節點 3 被重新激活,將被立即分配給 DB3 以使數據庫恢復到最小所需的服務器數。
如果第 9 個節點被添加到集群,將被分配給 DB1,因為其重要性最高而且未滿足最大服務器數。
Admin-Managed 方式介紹
實際上上面的表述已經明確說明了,Policy-Managed 和 Admin-Managed 方式的差別。讓我們再回顧一下,在以往我們創建一個 RAC 數 據庫大概是怎樣的方法,我們在 dbca 的界面中會選擇要將數據庫實例運行在整個集群中的幾臺機器上,或者是 2 臺或者是 3 臺,甚或是更多,但是只要在安裝的 時候選定幾臺機器,那么以后如果不做增減節點的操作,就始終會在這幾臺機器上運行。而且,通常會根據主機名稱的排序自動將每臺主機上的數據庫實例依次命名 為 dbname1 到 dbnameN。這些在管理員安裝完畢以后,都不會再自動變化,這就是 Admin-Managed 方式。
管理員管理:DBA 指定數據庫資源運行的所有服務器,并且按需手動放置資源。這是之前版本 Oracle 數據庫使用的管理策略。
Administrator-managed: Database administrators define the servers on which databases resource run, and place resources manually as needed. This is the management strategy used in previous releases.
Policy-Managed 方式和 Admin-Managed 方式 Service 使用例子
1,如何檢查是否 Admin managed 方式:
[grid@racdb01 ~]$ srvctl config database -d racdb
Database unique name: racdb
Database name: racdb
Oracle home: /app/product/oracle/11.2.0.4/db_1
Oracle user: oracle
Spfile: /app/product/oracle/11.2.0/db_1/dbs/spfileracdb1.ora
Domain:
Start options: open
Stop options: immediate
Database role: PRIMARY
Management policy: AUTOMATIC
Server pools: racdb
Database instances: racdb1,racdb2
Disk Groups: ASM_DATA,ASM_FRA
Mount point paths:
Services: rac_first,rac_second
Type: RAC
Database is administrator managed
這就說明是以 Admin Managed 來管理 RAC。
2,下面舉例子來說明如何檢查和修改數據庫服務器池及 Service
A,添加服務器池 mypool(最小數目 0,最大數目 2)
[oracle@racdb01 ~]$ srvctl add serverpool -g mypool -l 0 -u 2
將數據庫加入到自定義的 Server Pool 里面:
B,修改數據庫 racdb 的服務器池
[oracle@racdb01 ~]$ srvctl modify database -d racdb -g mypool
C,檢查 RAC 數據庫 racdb 新的 Policy
[grid@racdb02 ~]$ srvctl config database -d racdb
Database unique name: racdb
Database name: racdb
Oracle home: /app/product/oracle/11.2.0.4/db_1
Oracle user: oracle
Spfile: /app/product/oracle/11.2.0/db_1/dbs/spfileracdb1.ora
Domain:
Start options: open
Stop options: immediate
Database role: PRIMARY
Management policy: AUTOMATIC
Server pools: mypool
Database instances:
Disk Groups: ASM_DATA,ASM_FRA
Mount point paths:
Services: rac_first,rac_second
Type: RAC
Database is policy managed
發現數據庫已經使用 Policy Managed 選項了。
特別提醒:
如果沒有特別強烈需要就不用自定義加 Policy Managed,Admin Managed 能兼容 11g RAC 和之前的版本,更通用。
D,使用 crsctl 檢查服務器池的狀態
已變更為
[grid@racdb02 ~]$ crsctl status serverpool -p
NAME=Free
IMPORTANCE=0
MIN_SIZE=0
MAX_SIZE=-1
SERVER_NAMES=
PARENT_POOLS=
EXCLUSIVE_POOLS=
ACL=owner:grid:rwx,pgrp:oinstall:rwx,other::r-x
NAME=Generic
IMPORTANCE=0
MIN_SIZE=0
MAX_SIZE=-1
SERVER_NAMES=
PARENT_POOLS=
EXCLUSIVE_POOLS=
ACL=owner:grid:r-x,pgrp:oinstall:r-x,other::r-x
NAME=ora.mypool
IMPORTANCE=0
MIN_SIZE=0
MAX_SIZE=2
SERVER_NAMES=
PARENT_POOLS=
EXCLUSIVE_POOLS=
ACL=owner:oracle:rwx,pgrp:oinstall:rwx,other::r—
E,使用 srvctl 檢查服務器池的狀態
[grid@racdb01 ~]$ srvctl config serverpool -g Free
Server pool name: Free
Importance: 0, Min: 0, Max: -1
Candidate server names:
[grid@racdb01 ~]$ srvctl config serverpool -g Generic
PRKO-3160 : Server pool Generic is internally managed as part of administrator-managed database configuration and therefore cannot be queried directly via srvpool object.
[grid@racdb01 ~]$ srvctl config serverpool -g mypool
Server pool name: mypool
Importance: 0, Min: 0, Max: 2
Candidate server names:
注意:MIN_SIZE 屬性指定資源的基數 (數據庫等),假設 min_size 為 2,數據庫實例可以運行在服務器池的兩臺服務器上。
另一個重要的注意事項:使用 crsctl 添加服務器池到集群(警告:使用 crsctl 添加服務器池將對應用服務器等非數據庫資源效力,對數據庫資源,需使用 srvctl 創建服務器池,請參考文檔 here)
F,添加服務器池
For non-database resources,
[grid@racdb02 ~]$ crsctl add serverpool sp1 -attr MIN_SIZE=1, MAX_SIZE=1, IMPORTANCE=1 -f
CRS-2673: Attempting to stop ora.racdb.db on racdb01
CRS-2677: Stop of ora.racdb.db on racdb01 succeeded
檢查服務器池狀態
[grid@racdb02 ~]$ crsctl status serverpool -p
NAME=Free
IMPORTANCE=0
MIN_SIZE=0
MAX_SIZE=-1
SERVER_NAMES=
PARENT_POOLS=
EXCLUSIVE_POOLS=
ACL=owner:grid:rwx,pgrp:oinstall:rwx,other::r-x
NAME=Generic
IMPORTANCE=0
MIN_SIZE=0
MAX_SIZE=-1
SERVER_NAMES=
PARENT_POOLS=
EXCLUSIVE_POOLS=
ACL=owner:grid:r-x,pgrp:oinstall:r-x,other::r-x
NAME=ora.mypool
IMPORTANCE=0
MIN_SIZE=0
MAX_SIZE=2
SERVER_NAMES=
PARENT_POOLS=
EXCLUSIVE_POOLS=
ACL=owner:oracle:rwx,pgrp:oinstall:rwx,other::r–
NAME=sp1
IMPORTANCE=1
MIN_SIZE=1
MAX_SIZE=1
SERVER_NAMES=
PARENT_POOLS=
EXCLUSIVE_POOLS=
ACL=owner:grid:rwx,pgrp:oinstall:rwx,other::r—
刪除服務器池:
[grid@racdb02 ~]$ crsctl delete serverpool sp1
[grid@racdb02 ~]$ crsctl add serverpool sp2 -attr MIN_SIZE=1, MAX_SIZE=1, IMPORTANCE=2
刪除服務器池:
注意:觀察差異,當使用 crsctl 時,你不能指定個別的或你希望的主機,而當使用 srvctl 時可以。
G,查看服務器狀態
[grid@racdb01 ~]$ crsctl status server -f
NAME=racdb01
STATE=ONLINE
ACTIVE_POOLS=Generic ora.racdb ora.racdb_rac_first
STATE_DETAILS=
NAME=racdb02
STATE=VISIBLE
ACTIVE_POOLS=Generic ora.racdb ora.racdb_rac_second
STATE_DETAILS=
轉換 Policy-Managed Database 為 Administrator-Managed Database
A,檢查所有服務和數據庫的當前配置(如果犯錯需要恢復,那么你可以知道當你開始時配置如何),如下:
[oracle@racdb01 ~]$ srvctl config database -d racdb
Database unique name: racdb
Database name: racdb
Oracle home: /app/product/oracle/11.2.0.4/db_1
Oracle user: oracle
Spfile: /app/product/oracle/11.2.0/db_1/dbs/spfileracdb1.ora
Domain:
Start options: open
Stop options: immediate
Database role: PRIMARY
Management policy: AUTOMATIC
Server pools: mypool
Database instances:
Disk Groups: ASM_DATA,ASM_FRA
Mount point paths:
Services: rac_first,rac_second
Type: RAC
Database is policy managed
文檔說:
你不能直接轉換 a policy-managed database 為 administrator-managed database。而是,你可以使用 srvctl remove database 和 srvctl remove service 命令刪除 policy-managed 配置,然后使用 srvctl add database 和 srvctl add instance 命令注冊該數據庫為一個 administrator-managed database。一旦你注冊了數據庫和實例,必需使用 srvctl add service 命令添加回服務。
1. 使用 SRVCTL 工具刪除數據庫
[oracle@racdb01 ~]$ srvctl remove database -d racdb
PRKO-3141 : Database racdb could not be removed because it was running
如果數據庫正在運行可以使用 -f(force)刪除正在運行的數據庫。但是不推薦使用該方式。
停止數據庫并刪除
[oracle@racdb01 ~]$ srvctl remove database -d racdb
PRKO-3141 : Database racdb could not be removed because it was running
[oracle@racdb01 ~]$ srvctl stop database -d racdb
[oracle@racdb01 ~]$ srvctl status database -d racdb
Instance racdb_1 is not running on node racdb01
Instance racdb2 is not running on node racdb02
[oracle@racdb01 ~]$ srvctl remove database -d racdb
Remove the database racdb? (y/[n]) y
[oracle@racdb01 ~]$ srvctl status database -d racdb
PRCD-1120 : The resource for database racdb could not be found.
PRCR-1001 : Resource ora.racdb.db does not exist
2. 添加 administrator-managed 數據庫
[oracle@racdb01 ~]$ srvctl add database -d racdb -o /app/product/oracle/11.2.0.4/db_1 -y automatic
[oracle@racdb01 ~]$ srvctl config database -d racdb
Database unique name: racdb
Database name:
Oracle home: /app/product/oracle/11.2.0.4/db_1
Oracle user: oracle
Spfile:
Domain:
Start options: open
Stop options: immediate
Database role: PRIMARY
Management policy: AUTOMATIC
Server pools: racdb
Database instances:
Disk Groups:
Mount point paths:
Services:
Type: RAC
Database is administrator managed
3. 添加數據庫實例
[oracle@racdb01 ~]$ srvctl add instance -d racdb -i racdb1 -n racdb01
[oracle@racdb01 ~]$ srvctl add instance -d racdb -i racdb2 -n racdb02
[oracle@racdb01 ~]$ srvctl start database -d racdb
[oracle@racdb01 ~]$ srvctl status database -d racdb
Instance racdb1 is running on node racdb01
Instance racdb2 is running on node racdb02
[oracle@racdb01 ~]$ srvctl config database -d racdb
Database unique name: racdb
Database name:
Oracle home: /app/product/oracle/11.2.0.4/db_1
Oracle user: oracle
Spfile:
Domain:
Start options: open
Stop options: immediate
Database role: PRIMARY
Management policy: AUTOMATIC
Server pools: racdb
Database instances: racdb1,racdb2
Disk Groups: ASM_DATA,ASM_FRA
Mount point paths:
Services:
Type: RAC
Database is administrator managed
如果有非默認 service 需使用 srvctl add service 命令添加回服務
4. 你必需在最后一步配置 Oracle Enterprise Manager
以上是“Oracle 11g RAC 如何使用 Manual 和 Policy Managed 方法配置”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注丸趣 TV 行業資訊頻道!