收藏本站

人工智能培训机构,上海涛德,算法工程师,数据科学家高端培训机构-上海涛德

涛德原创:实现基于策略的Oracle 12c Cluster Serverpool 管理

2015-11-12 21:02| 查看: 866| 评论: 0|原作者: 唐涛

摘要: 实现基于策略的Oracle 12c Cluster Serverpool 管理 作者唐涛: 微博:http://weibo.com/tangtao1980 在Oracle 12c 中我们可以在实现基于策略的SERVER管理,这种管理对标准集群,以及Flex Cluster都支持。 当前已 ...

实现基于策略的Oracle 12c Cluster Serverpool 管理

 

作者唐涛(涛德数据科学人工智能讲师):

微博:http://weibo.com/tangtao1980

 

Oracle 12c 中我们可以在实现基于策略的SERVER管理,这种管理对标准集群,以及Flex Cluster都支持。

 

当前已安装的集群的节点

crsctl status server

 

NAME=c01n01

STATE=ONLINE

 

NAME=c01n02

STATE=ONLINE

 

考察其中的节点一

crsctl status server c01n01 –f ,可以看到这是一个Hub 节点,运行在一个名称叫racdbpool server pool 下。 第二个节点与第一个节点类似。本例只是节点名字不同。

NAME=c01n01

MEMORY_SIZE=5834

CPU_COUNT=1

CPU_CLOCK_RATE=0

CPU_HYPERTHREADING=0

CPU_EQUIVALENCY=1000

DEPLOYMENT=other

CONFIGURED_CSS_ROLE=hub

RESOURCE_USE_ENABLED=1

SERVER_LABEL=

PHYSICAL_HOSTNAME=

STATE=ONLINE

ACTIVE_POOLS=ora.racdbpool

STATE_DETAILS=

ACTIVE_CSS_ROLE=hub

 

检测默认的server category (一个server应该属于一个或者多个category)。

 

我们会发现 系统内置了2category,一个是hub.category,一个是leaf.category。正好对应我们FLEX CLUSTER2种节点类型。默认的category EXPRESSION为空(后面将介绍利用EXRESSION 创建自定义的category

 

检测命令如下:

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=

 

 

 

 

我们可以查询那些server属于 ora.hub.category 用下面的命令(可以看到我的两个节点都属于hub.category这种内置的CATEGORY

 

crsctl status  server -category ora.hub.category

NAME=c01n01

STATE=ONLINE

 

NAME=c01n02

STATE=ONLINE

 

 

也可以自定义 category

例如:添加一个 名称叫seantang category ,要求的条件是 server的内容大于5800M

crsctl add category seantang -attr "EXPRESSION='(MEMORY_SIZE > 5800)'"

 

 

再次检查cluster环境下的所有category,会发现多出一个我们刚刚建立的 seantang category

crsctl status  category

NAME=ora.hub.category

ACL=owner:root:rwx,pgrp:root:r-x,other::r--

ACTIVE_CSS_ROLE=hub

EXPRESSION=


NAME=seantang

ACL=owner:grid:rwx,pgrp:oinstall:rwx,other::r--

ACTIVE_CSS_ROLE=hub

EXPRESSION=(MEMORY_SIZE > 5800)

 

 

 

 

查询属于这个category server  因为我环境下只有 节点1 大于5800M 。所以节点没有列在这个category下面

crsctl status  server -category  seantang

NAME=c01n01


 

 

下面的命令显示了,一个server(本例是节点1)可以同时属于两个 categoryhub.category,以及seantang

crsctl status  category  -server c01n01

 

NAME=ora.hub.category

ACL=owner:root:rwx,pgrp:root:r-x,other::r--

ACTIVE_CSS_ROLE=hub

EXPRESSION=

NAME=seantang

ACL=owner:grid:rwx,pgrp:oinstall:rwx,other::r--

ACTIVE_CSS_ROLE=hub

EXPRESSION=(MEMORY_SIZE > 5800)

 

 

 

有了以上的基础,我们可以进一步来学习 集群policy相关的内容。

默认系统只有一个叫CURRENTPolicy ,这个Policy中包含了集群环境下所有的Server Pool 的定义。

 

 

可以用 crsctl status policyset 查看

 

为什么要使用Policy ?

 

处于某种需求,我们可能希望在某个时刻使用更多的服务器资源(Policy1 hub.category 对应的2server, seantang没有server ),另外一个时刻使用更少的服务器资源(Policy2seantang category对应的一台server)。这时我们可以定义2Policy,在特定的时间激活某一个Policy

 

其中:

Policy 1 我们设置racdbpool服务器池(RAC数据库使用)对应至少2SERVER同时这些SERVER属于hub.category,而lesspool 服务器池对应0SERVER

 

 

 

Policy 2 我们设置racdbpool服务器池对应最多1SERVER同时这些SERVER属于hub.category,而lesspool 服务器池对应1SERVERcategory属于seantang

 

如果我们激活Policy1 2SERVER 运行在racdbpool (RAC 数据库将使用) 服务器池。

 

如果我们激活Policy2 1 c01n02 SERVER 运行在racdbpool (RAC 数据库将使用) 服务器池。有1台(c01n01)运行在lesspool服务器池。

 

为什么不会是 c01n02运行在 racdbpool 因为我们设置了lesspool优先级更高。

 

换句话说我们激活Policy2变相的实现了RAC ONE NODE的功能。

 

 

srvctl add serverpool  -serverpool lesspool -servers "c01n01,c01n02"


具体做法

1 创建服务器池。这里叫lesspool

srvctl add serverpool  -serverpool lesspool -servers "c01n01,c01n02"

2创建policy文件。例如内容例如下面:

Cat /home/grid/po.txt

SERVER_POOL_NAMES=Free lesspool ora.racdbpool

POLICY

NAME=polocy1

DESCRIPTION=more server

SERVERPOOL

NAME=ora.racdbpool

IMPORTANCE=10

MAX_SIZE=5

MIN_SIZE=2

SERVER_CATEGORY=ora.hub.category

SERVERPOOL

NAME=lesspool

IMPORTANCE=0

MAX_SIZE=0

MIN_SIZE=0

SERVER_CATEGORY=seantang

POLICY

NAME=policy2

SERVER_CATEGORY=seantang

 

3 设置 系统使用我们的Policy文件

crsctl modify policyset -file /home/grid/po.txt

4 检测是否生效,可以看到我们刚才在文件中定义的信息。

crsctl status policyset

 

5 强行激活policy2 (不加-f会失败,因为激活policy2意味着c01n01的上的数据库实例会SHOWDOWN

crsctl modify policyset -attr "LAST_ACTIVATED_POLICY='policy2'" -f

CRS-2673: Attempting to stop 'ora.racdb.db' on 'c01n01'

CRS-2677: Stop of 'ora.racdb.db' on 'c01n01' succeeded

 

6 检测数据库状态

srvctl status database -d racdb

Instance RACDB_1 is running on node c01n02

<点击:上海涛德Oracle OCM认证及BI商业智能课程>|人工智能培训-上海涛德 ( 沪ICP备14006824号 )|网站地图   My title page contents

GMT+8, 2018-7-17 09:55 , Processed in 0.172308 second(s), 14 queries , Gzip On.

回顶部