Bo's Oracle Station

【博客文章2021】Oracle RAC的策略管理的集群和策略管理的数据库

2021-11-5 18:11| 发布者: admin| 查看: 6986| 评论: 0|原作者: Bo Tang

摘要: 【博客文章2021】Oracle RAC的策略管理的集群和策略管理的数据库
【博客文章2021】Oracle RAC的策略管理的集群和策略管理的数据库

Author: Bo Tang

1. 策略管理的集群的Category:

    只要是Flex集群,就有以下默认两个Category:

[grid@station12 ocrbackup]$ crsctl status category
NAME=ora.hub.category
ACL=owner:root:rwx,pgrp:root:r-x,other::r--
ACTIVE_CSS_ROLE=hub
EXPRESSION=
NAME=ora.leaf.category
ACL=owner:root:rwx,pgrp:root:r-x,other::r--
ACTIVE_CSS_ROLE=leaf
EXPRESSION=
 
    查看这两个Category里包含的节点:

[grid@station11 ~]$ crsctl status server -category ora.hub.category
NAME=station11
STATE=ONLINE
NAME=station12
STATE=ONLINE
[grid@station11 ~]$ crsctl status server -category ora.leaf.category
 
2. 策略管理的集群的策略集:

    策略集管理Serverpool,默认只有一个策略集管理着一个策略“Current”,“Current”策略管理着“Free”和“Generic”两个Serverpool:
    LAST_ACTIVATED_POLICY为空,说明没有用户定义的策略生效过。 下面我们写一个用于生成策略集的文本文件policysetfile.txt,这个文件将用于更新默认的策略集。该文本文件中规定什么服务器当作hub用,什么服务器当作leaf用。该策略集包含两个策略:“day”和“night”,管理着Freeora.racdbpoolora.rep这三个Serverpool。
    policysetfile.txt:

SERVER_POOL_NAMES=Free ora.racdbpool ora.rep
POLICY
NAME=day
DESCRIPTION=The day policy
SERVERPOOL
NAME=ora.racdbpool
IMPORTANCE=10
MAX_SIZE=5
MIN_SIZE=2

SERVER_CATEGORY=ora.hub.category
SERVERPOOL
NAME=ora.rep
IMPORTANCE=0
MAX_SIZE=2
MIN_SIZE=1

SERVER_CATEGORY=
ora.hub.category

POLICY
NAME=night
DESCRIPTION=The night policy
SERVERPOOL
NAME=ora.racdbpool
IMPORTANCE=0
MAX_SIZE=2
MIN_SIZE=1

SERVER_CATEGORY=ora.hub.category
SERVERPOOL
NAME=ora.rep
IMPORTANCE=5
MAX_SIZE=2
MIN_SIZE=1

SERVER_CATEGORY=
ora.hub.category
 
    查看一下crsctl  modify命令的帮助,准备使用上述的policysetfile.txt改动策略集:

[grid@station11 ~]$ crsctl  modify
Usage:
  crsctl modify {resource|type|serverpool|policy|policyset}
where
    name         Name of the CRS entity
    options      Options to be passed to the modify command
    See individual CRS entity help for more details
  crsctl modify wallet -type
where
    wallet_type   Type of wallet i.e. , APPQOSADMIN, APPQOSUSER, APPQOSDB, MGMTDB, OSUSER or CVUDB.
    options       Options to be passed to the modify command
  crsctl modify policyset {-attr "=[,...]" | -file } [-ksp] [-f]
where
  
  attrName   Name of the policy set attribute, e.g. SERVER_POOL_NAMES, etc.
    value      Value of the attribute
    fileName   Name of text file containing policy set definition
    -ksp       Keep server pools in the system
    -f         Force option
  crsctl modify category -attr "=[,...]" [-f] [-i]
where
    categoryName Name of server category to be modified
    attrName     Attribute name
    value        Attribute value
    -f           Force option
    -i           Fail if request cannot be processed immediately
 
    修改策略集:

[grid@station11 ~]crsctl modify policyset  -file  policysetfile.txt
 
    查看修改过的策略集,并激活它:

[grid@station11 ~]$ crsctl status policyset
ACL=owner:grid:rwx,pgrp:oinstall:rwx,other::r--
LAST_ACTIVATED_POLICY=
SERVER_POOL_NAMES=Free ora.racdbpool ora.rep
POLICY
  NAME=Current
  DESCRIPTION=This policy is built-in and managed automatically to reflect current configuration
  SERVERPOOL
    NAME=Free
    IMPORTANCE=0
    MAX_SIZE=-1
    MIN_SIZE=0

    SERVER_CATEGORY=
    SERVER_NAMES=
  SERVERPOOL
    NAME=Generic
    IMPORTANCE=0
    MAX_SIZE=-1
    MIN_SIZE=0

    SERVER_CATEGORY=
    SERVER_NAMES=
POLICY
  NAME=day
  DESCRIPTION=The day policy
  SERVERPOOL
    NAME=Free
    IMPORTANCE=0
    MAX_SIZE=-1
    MIN_SIZE=0

    SERVER_CATEGORY=
    SERVER_NAMES=
  SERVERPOOL
    NAME=ora.racdbpool
    IMPORTANCE=10
    MAX_SIZE=5
    MIN_SIZE=2

    SERVER_CATEGORY=ora.hub.category
    SERVER_NAMES=
  SERVERPOOL
    NAME=ora.rep
    IMPORTANCE=0
    MAX_SIZE=2
    MIN_SIZE=1

    SERVER_CATEGORY=ora.hub.category
    SERVER_NAMES=
POLICY
  NAME=night
  DESCRIPTION=The night policy
  SERVERPOOL
    NAME=Free
    IMPORTANCE=0
    MAX_SIZE=-1
    MIN_SIZE=0

    SERVER_CATEGORY=
    SERVER_NAMES=
  SERVERPOOL
    NAME=ora.racdbpool
    IMPORTANCE=0
    MAX_SIZE=2
    MIN_SIZE=1

    SERVER_CATEGORY=ora.hub.category
    SERVER_NAMES=
  SERVERPOOL
    NAME=ora.rep
    IMPORTANCE=5
    MAX_SIZE=2
    MIN_SIZE=1

    SERVER_CATEGORY=ora.hub.category
    SERVER_NAMES=
[grid@station11 ~]$ crsctl modify policyset -attr "LAST_ACTIVATED_POLICY=day"
[grid@station11 ~]$
 
3. 策略管理的集群的Serverpool:

    Free池和Generic池是不可删除的也不需要创建,其他的Serverpool是policysetfile.txt创建的:

[oracle@station11 ~]$ srvctl config srvpool
Server pool name: Free
Importance: 0, Min: 0, Max: -1
Candidate server names:
Server pool name: Generic
Importance: 0, Min: 0, Max: -1
Candidate server names:
Server pool name: ora.racdbpool
Importance: 10, Min: 2, Max: 5
Candidate server names: station11,station12
Server pool name: ora.rep
Importance: 0, Min: 1, Max: 2
Candidate server names: station11,station12
 

[oracle@station11 ~]$ crsctl status  serverpool   -p
NAME=Free
IMPORTANCE=0
MIN_SIZE=0
MAX_SIZE=-1

SERVER_NAMES=
PARENT_POOLS=
EXCLUSIVE_POOLS=
ACL=owner:oracle: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:oracle:r-x,pgrp:oinstall:r-x,other::r-x
NAME=ora.racdbpool
IMPORTANCE=10
MIN_SIZE=2
MAX_SIZE=5

SERVER_NAMES=station11 station12
PARENT_POOLS=
EXCLUSIVE_POOLS=
ACL=owner:oracle:rwx,pgrp:oinstall:rwx,other::r--
NAME=ora.rep
IMPORTANCE=0
MIN_SIZE=1
MAX_SIZE=2

SERVER_NAMES=station11 station12
PARENT_POOLS=
EXCLUSIVE_POOLS=
ACL=owner:oracle:rwx,pgrp:oinstall:rwx,other::r--
 
    DBA可以指定数据库资源运行在哪个服务器池(排除 generic or free)。Oracle Clusterware 负责将数据库资源根据服务器池而放在某一台或某几台服务器上运行。
    服务器以如下次序被分配入服务器池:
    Oralce Clusterware 使用服务器池的重要性决定分配服务器次序:
    a. 按重要性次序分配服务器给所有服务器池,直到满足服务器池的最小数目要求
    b. 按重要性次序分配服务器给服务器池,直到它们满足服务器池的最大数目要求
    c. 任何剩下的服务器加入FREE服务器池
    数据库可以和1个服务器池关联(而不是特定的节点集)。服务器池决定资源(数据库、服务甚至第三方应用程序)所需的最小和最大服务器数目。数据库实例将运行在已被分配给服务器池的服务器上。使用min_size 决定数据库必需运行在哪些服务器,以及必需运行在多少服务器上。既然被分配给服务器池的服务器可以动态地变更,这允许Oracle基于集群可用的服务器总数动态地交付服务。数据库实例将启动在足够多的服务器上(受制于服务器的可用性)。无需硬编码规定数据库实例运行在哪些服务器上。数据库的任何实例可以运行在任何节点上。在实例号和节点之间无固定的映射关系。当服务器被释放、添加或删除时,它们按之前提及的规则被分配到相应服务器池中。下面举例详细说明:
    例如,如果1个集群,总共有8个节点组成,并且支持3个Serverpool。每个Serverpool定义了服务器的最小和最大数目。pool1 定义最小4台、最多6台服务器(重要性为 10);pool2定义最小2台、最多3台服务器(重要性为 7);pool3定义最小2台、最多3台服务器(重要性为 5)。
    8个节点按照规则a将被分配成:节点1-4分配给pool1,节点5-6被分配给pool2,节点7-8分配给pool3。
    如果节点3由于某种原因发生故障,集群系统将分配节点7或8给pool1,即使这样做将导致pool3降到最小服务器水平以下。因为pool1比pool3有更高的重要性,而且它最小需要4台服务器(节点3的缺失,使得它少于4台)
    如果节点3被重新激活,它将被立即分配给pool3以使pool3的Serverpool恢复到最小所需的服务器数。
    如果第9个节点被添加到集群,它将根据规则b分配给pool1,因为它的重要性最高而且未满足最大服务器数。

4. 策略管理的数据库:

    当按照上述方式配置好集群件之后,我们就可以创建RAC数据了。创建数据库的时候,数据库有两种管理方式可供选择(它们之间可以来回转换):Admin-managed RAC和Policy-Managed RAC。Policy-Managed就是利用了Serverpool的RAC。
    Admin-managed RAC:

    Policy-Managed RAC:

    对于Policy-Managed RAC可以改动它的Serverpool:

[oracle@station11 ~]$ srvctl config database -d c01orcl
Database unique name: c01orcl
Database name: c01orcl
Oracle home: /u01/app/oracle/product/12.1.0/dbhome_1
Oracle user: oracle
Spfile: +DATA/racdb/spfilec01orcl.ora
Domain: example.com
Start options: open
Stop options: immediate
Database role: PRIMARY
Management policy: AUTOMATIC
Server pools: rep
Database instances: 
Disk Groups: DATA,FRA
Mount point paths: 
Services: 
Type: RAC
Database is policy managed
 

路过

雷人

握手

鲜花

鸡蛋

QQ|手机版|Bo's Oracle Station   

GMT+8, 2022-4-13 16:48 , Processed in 0.040881 second(s), 21 queries .

返回顶部