您好,登錄后才能下訂單哦!
小編給大家分享一下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方法配置”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。