Oracle 11g RAC如何使用Manual和Policy Managed方法配置

53次阅读
没有评论

共计 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 行业资讯频道!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-07-24发表,共计8689字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)