Oracle HA 之 SERVICE和DRM实战
第一部分:service实战
--oracle 11gR2中创建service的方法:db console和srvctl两种方法。
--db console创建service方法-略
--srvctl创建service方法
[oracle@node1 admin]$ srvctl add service -d dbking -s dbkt02 -r dbking1,dbking2
[oracle@node1 admin]$ srvctl start service -d dbking -s dbkt02
--查看数据库的所有service信息:
[oracle@node1 admin]$ srvctl config service -d dbking
Service name: dbkt01
Service is enabled
Server pool: dbking_dbkt01
Cardinality: 2
Disconnect: false
Service role: PRIMARY
Management policy: AUTOMATIC
DTP transaction: false
AQ HA notifications: false
Failover type: NONE
Failover method: NONE
TAF failover retries: 0
TAF failover delay: 0
Connection Load Balancing Goal: LONG
Runtime Load Balancing Goal: NONE
TAF policy specification: NONE
Edition:
Preferred instances: dbking1,dbking2
Available instances:
Service name: dbkt02
Service is enabled
Server pool: dbking_dbkt02
Cardinality: 2
Disconnect: false
Service role: PRIMARY
Management policy: AUTOMATIC
DTP transaction: false
AQ HA notifications: false
Failover type: NONE
Failover method: NONE
TAF failover retries: 0
TAF failover delay: 0
Connection Load Balancing Goal: LONG
Runtime Load Balancing Goal: NONE
TAF policy specification: NONE
Edition:
Preferred instances: dbking1,dbking2
Available instances:
[oracle@node1 admin]$
[oracle@node1 admin]$ srvctl config service -d dbking -s dbt01
--启动start、关闭stop、修改modify service
启动服务:[oracle@node1 admin]$ srvctl start service -d dbking -s dbkt02
关闭服务:[oracle@node1 admin]$ srvctl stop service -d dbking -s dbkt02
[oracle@node1 admin]$ srvctl stop service -d dbking -s dbkt02 -n node1
[oracle@node1 admin]$ srvctl stop service -d dbking -s dbkt02 -i dbking2
修改服务属性:[oracle@node1 admin]$ srvctl modify service -d dbking -s dbkt02 -i dbking1 -n
relocate操作:dba手动将service从可用实例调回首选实例。
srvctl relocate service -d dbname -s srvname [-c fromnode -n tonode | -i frominstance -t toinstance] [-f]
##########################################################################################################################################
第二部分:DRM实战
--准备工作
[oracle@node1 ~]$ srvctl add service -d dbking -s dbkapp -r dbking1,dbking2
[oracle@node1 ~]$ srvctl add service -d dbking -s dbkboss -r dbking1,dbking2
[oracle@node1 ~]$ srvctl start service -d dbking -s dbkboss
[oracle@node1 ~]$ srvctl start service -d dbking -s dbkapp
SQL> show parameter resource_limit
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
resource_limit boolean FALSE
SQL> show parameter resource_manager_plan
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
resource_manager_plan string
--命令行方式实现DRM,图形界面方式-略
1)创建一个工作区
SQL> exec dbms_resource_manager.create_pending_area();
PL/SQL 过程已成功完成。
2)创建2个使用者组
SQL> exec dbms_resource_manager.create_consumer_group(consumer_group=>'app_group',comment=>'普通使用者');
PL/SQL 过程已成功完成。
SQL> exec dbms_resource_manager.create_consumer_group(consumer_group=>'boss_group',comment=>'boss团');
PL/SQL 过程已成功完成。
3)创建消费计划
SQL> exec dbms_resource_manager.create_plan(plan=>'srv_drm_test01',comment=>'访问资源计划');
PL/SQL 过程已成功完成。
4)创建计划细节
SQL> exec dbms_resource_manager.create_plan_directive(plan=>'srv_drm_test01',group_or_subplan=>'boss_group',mgmt_p1=>50,comment=>'1');
PL/SQL 过程已成功完成。
SQL> exec dbms_resource_manager.create_plan_directive(plan=>'srv_drm_test01',group_or_subplan=>'app_group',mgmt_p1=>20,comment=>'2');
PL/SQL 过程已成功完成。
SQL> exec dbms_resource_manager.create_plan_directive(plan=>'srv_drm_test01',group_or_subplan=>'other_groups',mgmt_p1=>5,comment=>'3');
PL/SQL 过程已成功完成。
5)创建服务和使用者之间的映射关系
SQL> exec dbms_resource_manager.set_consumer_group_mapping(attribute=>dbms_resource_manager.service_name,value=>'dbkapp',consumer_group=>'app_group');
PL/SQL 过程已成功完成。
SQL> exec dbms_resource_manager.set_consumer_group_mapping(attribute=>dbms_resource_manager.service_name,value=>'dbkboss',consumer_group=>'boss_group');
PL/SQL 过程已成功完成。
6)校验工作区
SQL> exec dbms_resource_manager.validate_pending_area();
PL/SQL 过程已成功完成。
SQL> exec dbms_resource_manager.submit_pending_area();
PL/SQL 过程已成功完成。
7)给某个用户赋予能切换到消费组的权限:
SQL> exec dbms_resource_manager_privs.grant_switch_consumer_group('SCOTT','app_group',false);
PL/SQL 过程已成功完成。
SQL> exec dbms_resource_manager_privs.grant_switch_consumer_group('SCOTT','boss_group',false);
PL/SQL 过程已成功完成。
**授予所有用户可以使用public
8)启动消费计划
SQL> alter system set resource_manager_plan='srv_drm_test01' scope=both sid='*';
系统已更改。
9)启动资源限制
SQL> alter system set resource_limit=true scope=both sid='*';
系统已更改。
******包装一下以上的代码既可以写成脚本*******
--验证生效与否:客户端分别以scott身份登录,通过以下脚本验证。
SQL> select inst_id,username,resource_consumer_group,service_name from gv$session where username='SCOTT';
INST_ID USERNAME RESOURCE_CONSUMER_GROUP SERVICE_NAME
---------- --------------- -------------------------------- ---------------
1 SCOTT BOSS_GROUP dbkboss
1 SCOTT APP_GROUP dbkapp
10)检查参数是否生效
SQL> show parameter resource_manager_plan
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
resource_manager_plan string test
SQL> show parameter resource_limit
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
resource_limit boolean TRUE
--测试DRM是否生效
1)编写测试脚本:cpu密集型脚本
>PL/SQL脚本如下:
begin
declare
m number;
begin
for i in 1 .. 1000000 loop
for j in 1 .. 1000000 loop
m := sqrt(4567);
end loop;
end loop;
end;
/
>shell脚本如下:
#!/bin/bash
source /home/oracle/.bash_profile
step=1
while [ $step -lt 6 ]
do
nohup sqlplus scott/oracle @test.sql &
let "step+=1"
echo $step
done
2)检查生效的资源计划是否在管理cpu:
SQL> select name,cpu_managed from v$rsrc_plan where is_top_plan='TRUE';
NAME CPU
-------------------------------- ---
TEST ON
3)检查资源计划是如何定义的:
SQL> select group_or_subplan,max_utilization_limit,mgmt_p1 from dba_rsrc_plan_directives where plan=(select name from v$rsrc_plan where is_top_plan='TRUE');
GROUP_OR_SUBPLAN MAX_UTILIZATION_LIMIT MGMT_P1
------------------------------ --------------------- ----------
BOSS_GROUP 50
APP_GROUP 20
OTHER_GROUPS 5
4)登录两个实例分别查询执行结果:
select to_char(m.begin_time, 'hh:mi') time,
m.consumer_group_name,
trunc(m.cpu_consumed_time / 60000, 2) avg_runing_sessions,
trunc(m.cpu_wait_time / 60000, 2) avg_wait_sessions,
d.mgmt_p1 * (select value from v$parameter where name = 'cpu_count') / 100 allocation
from v$rsrcmgrmetric_history m, dba_rsrc_plan_directives d, v$rsrc_plan p
where m.consumer_group_name = d.group_or_subplan
and p.NAME = d.plan
order by m.begin_time, m.consumer_group_name;
Oracle HA 之 SERVICE和DRM实战的更多相关文章
- Oracle HA 之 RAC one node实战
--创建rac one node步骤 安装grid软件,配置grid集群:安装oracle软件:dbca创建rac one node. >试验创建的rac one node数据库信息如下: gl ...
- oracle HA 高可用性具体解释(之中的一个)
oracle HA 高可用性具体解释(之二,深入解析TAF,以及HA框架) :http://blog.csdn.net/panfelix/article/details/38436197 一.HA F ...
- oracle HA 高可用性具体解释(之二,深入解析TAF,以及HA框架)
oracle HA 高可用性具体解释(之中的一个,client.server端服务具体解释):http://write.blog.csdn.net/postedit 我们已经看到TAF是的Oracle ...
- OCP培训 Oracle 12c/18c/19c OCP认证实战培训【送OCP优惠名额】
一.OCP培训 Oracle 12c/18c/19c OCP认证全套实战培训[送OCP优惠名额],本课程内容 课程目标: 为满足想参加Oracle OCP考证的学员,风哥设计的一套比较全面OCP实战培 ...
- Oracle HA 之 Server Pool 实战
--创建server pool的两种方式: 图形界面:console和dbca 演示-略 命令行工具:srvctl和crsctl --srvctl和crsctl创建server ...
- Oracle 10g RAC中的DRM问题及关闭
在RAC环境中,Oracle使用GRD(Global Resource Service)来记录各个RAC节点的资源信息,具体通过GCS(Global Cache Service)和GES(Global ...
- java连接oracle数据库使用SERVICE NAME、SID以及TNSName不同写法
格式一: 使用ServiceName方式: jdbc:oracle:thin:@//<host>:<port>/<service_name> 例 jdbc:orac ...
- Oracle HA 之 基于活动数据库复制配置oracle 11.2 dataguard
规划:主库:db_name=dbking db_unique_name=dbkingpri 备库:db_name=dbking ...
- Oracle HA 之 oracle 11.2 rac库配置active dataguard
目录 configing active dataguard for 11.2 rac. 1 一.建组.建用户.配置环境变量.内核参数等... 1 二.配置共享磁盘... 3 1)创建4块共享磁盘并fd ...
随机推荐
- Zookeeper 工作流
一旦ZooKeeper集合启动,它将等待客户端连接.客户端将连接到ZooKeeper集合中的一个节点.它可以是leader或follower节点.一旦客户端被连接,节点将向特定客户端分配会话ID并向该 ...
- 在 C++ 程序中只使用 const 常量而不使用宏常量
在 C++ 程序中只使用 const 常量而不使用宏常量,即 const 常量完 全取代宏常量. #include <iostream> /* run this program using ...
- C#有关的vshost、exe、config格式说明
vshost.exe.config是程序运行时的配置文本 exe.config是程序运行后会复制到vshost.exe.config app.config是在vshost.exe.config和exe ...
- MySQL 插入数据时,中文乱码问题的解决
当向 MySQL 数据库插入一条带有中文的数据形如 insert into employee values(null,'张三','female','1995-10-08','2015-11-12',' ...
- CentOS 7修改MySQL 5.6字符集为UTF-8
MySQL编码原因会导致数据库出现中文乱码 解决办法: 修改MySQL数据库字符编码为UTF-8,UTF-8包含全世界所有国家需要用到的字符,是国际编码. 具体操作: 1.进入MySQL控制台 mys ...
- Android开发之经常使用的时间格式
/** * 获取如今时间 * * @return 返回时间类型 yyyy-MM-dd HH:mm:ss */ public static Date getNowDate() { ...
- MyEclipse 对项目进行build path无效
今天发现昨天从svn下载下来的项目在MyEclipse中无法build path .提示no actions available 在网上找了下,是由于.projects文件的问题,须要在当中的natu ...
- Oracle 11gR2 11.2.0.1 ( 11.2.0.1的BUG?):ohasd不能正常启动:ioctl操作:npohasd的问题:【chmod a+wr /var/tmp/.oracle/npohasd】
问题1:执行安装,编译成功后,执行asmca时,失败,无法成功创建后台相关服务 问题2:os系统重启后,ohasd无法正常启动,css服务失败 原因:11.2.0.1的BUG:/var/tmp/.or ...
- fork函数和vfork函数的区别--19
fork()与vfock()都是创建一个进程,那他们有什么区别呢?总结有以下三点区别: 1. fork ():子进程拷贝父进程的数据段,代码段 vfork ( ):子进程与父进程共享数据段 ...
- win7 64位下android开发环境的搭建
本文转自:http://www.cfanz.cn/index.php?c=article&a=read&id=65289 最近换了新电脑,装了win7 64位系统,安装了各种开发环境, ...