控制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的会话数,从而提高整个系统的性能和可靠性。


数据运维技术 » 控制Oracle 11g 会话数控制实践(oracle11g会话数)