控制Oracle 11g 会话数控制实践(oracle11g会话数)
控制Oracle 11g: 会话数控制实践
在Oracle数据库管理中,控制会话数是一项至关重要的任务。过多的会话可能会使数据库出现问题,从而影响整个系统的性能和可靠性。因此,控制会话数是一项必不可少的管理任务。在本文中,我们将介绍如何使用Oracle 11g控制会话数,并演示一些实践步骤。
控制Oracle 11g会话数的方法:
1、使用DBMS_RESOURCE_MANAGER包
使用DBMS_RESOURCE_MANAGER包很容易控制Oracle 11g的会话数。这个包可以用于终止、限制和重定向会话。通过具有相应的权限的用户,管理员可以使用此包轻松地限制会话数。
下面是一个限制会话数的例子代码:
BEGIN
DBMS_RESOURCE_MANAGER.CREATE_PLAN(‘LIMITED’);
DBMS_RESOURCE_MANAGER.CREATE_CONSUMER_GROUP(‘LIMITED_USERS’, ‘low’);
DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE(‘LIMITED’, ‘LIMITED_USERS’, ‘CPU_P1’, NULL, 10, NULL, NULL, 10);
DBMS_RESOURCE_MANAGER.SET_CONSUMER_GROUP_MAPPING(‘DEFAULT_CONSUMER_GROUP’, ‘LIMITED_USERS’, ‘mandatory’);
END;
这些代码将创建一个计划名为“LIMITED”的新计划,创建一个名为“LIMITED_USERS”的新消费组,并创建一个针对该消费组的计划指令,该指令将限制在任何时候只有10个会话可以使用。将消费组映射为默认的消费组。
2、使用DBMS_SESSION包
另一个方便的方法是使用DBMS_SESSION包。该包中的SESSIONS_PER_USER参数可以用于限制每个用户的会话数。管理员可以使用此参数轻松地限制每个用户可以打开的会话数。
下面是一个通过限制每个用户的会话数来控制Oracle 11g 的方法:
CREATE PROFILE LIM_PROFILE LIMIT SESSIONS_PER_USER 10;
ALTER USER USER1 PROFILE LIM_PROFILE;
ALTER USER USER2 PROFILE LIM_PROFILE;
使用这些代码,管理员可以将一个名为“LIM_PROFILE”的新配置文件创建为最多允许用户打开10个会话,并将该配置文件分配给“USER1”和“USER2”。
实践步骤:
1、创建新的消费组
您需要创建一个新的消费组来容纳将要受控制的会话。这可以通过使用DBMS_RESOURCE_MANAGER包中的CREATE_CONSUMER_GROUP过程来完成。在CREATE_CONSUMER_GROUP过程中,您需要为新消费组指定一个名称和一些参数。
下面是创建新消费组的代码示例:
BEGIN
DBMS_RESOURCE_MANAGER.CREATE_CONSUMER_GROUP (
‘LIMITED_USERS’,
‘Group for users with limited access’,
‘max_utilization_limit=>40’,
‘active_session_pool=>30’);
END;
在这个例子中,我们创建了一个名为“LIMITED_USERS”的新消费组,并指定了一些参数。这些参数包括一个描述、最大利用率限制和活动会话池的大小。
2、创建一个新计划
接下来,您需要创建一个新计划。这可以通过使用DBMS_RESOURCE_MANAGER包中的CREATE_PLAN过程来完成。在CREATE_PLAN过程中,您需要为新计划指定一个名称和一些参数。
下面是创建新计划的代码示例:
BEGIN
DBMS_RESOURCE_MANAGER.CREATE_PLAN (
‘LIMITED’);
END;
在这个例子中,我们创建了一个名为“LIMITED”的新计划。
3、创建一个新的计划指令
然后,您需要创建一个新计划指令。这可以通过使用DBMS_RESOURCE_MANAGER包中的CREATE_PLAN_DIRECTIVE过程来完成。在CREATE_PLAN_DIRECTIVE过程中,您需要为新指令指定一个目标消费组、一些资源限制和一些其他参数。
下面是创建新计划指令的代码示例:
BEGIN
DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE (
‘LIMITED’,’LIMITED_USERS’,’CPU_P1′, ‘ESTIMATE_TIME’=>25,’ESTIMATE_CPU’=>25,’PARALLEL_DEGREE_LIMIT’=>1,
‘MAX_EST_EXEC_TIME’=>300, ‘MAX_EST_EXEC_TIME_PER’=>10);
END;
在这个例子中,我们创建了一个新的计划指令,并将其指定为新创建的消费组“LIMITED_USERS”。我们还为指令指定了一些资源限制和其他参数,例如CPU_P1的预估时间、预估CPU时间、并行度限制以及最大预估执行时间和最大预估执行时间百分比。
4、应用新计划
在所有更新之后,您需要将新计划应用于数据库。这可以通过使用DBMS_RESOURCE_MANAGER包中的SET_INITIAL_INSTANCE_POOL过程来完成。
下面是应用新计划的代码示例:
BEGIN
DBMS_RESOURCE_MANAGER.SET_INITIAL_INSTANCE_POOL (
‘LIMITED_USERS’,
’80’,
‘INTERMEDIATE’,
‘LIMITED’
);
END;
在这个例子中,我们将新计划应用于数据库,并将其指定为新消费组的初始实例池。
总结:
在本文中,我们介绍了如何使用Oracle 11g的DBMS_RESOURCE_MANAGER和DBMS_SESSION包来控制Oracle 11g的会话数。我们还演示了一些实践步骤,如创建新消费组、新计划和新计划指令,并将新计划应用于数据库。通过掌握这些基本技巧,管理员可以轻松地控制Oracle 11g的会话数,从而提高整个系统的性能和可靠性。