Sei sulla pagina 1di 9

dbms_resource_manager « Oracle Live http://mogukiller.wordpress.

com/category/dbms_resource_manager/

COMIENZO ORACLE LIVE Blog

27
ene
09

dbms_resource_manager parte2

por mogukiller Escribir un Comentario


Categorías: dbms_resource_manager

En las Figura 1 y Figura 2 se muestran que vamos planes vamos a implantar.

Los procedimientos a seguir son:


a) Creamos la pending area donde almacenar todos los objetos que posteriormente validaremos y
activaremos.
b) Crearemos los grupos de usuarios.
c) Definiremos los Planes de actualización.
d) Crearemos las directivas para los planes.
e) Validamos la PENDING AREA
f) Hacemos un SUBMIT de los elementos de la Pending Area.
g) Activamos el plan que corresponda.

1 de 9 11/04/2011 17:50
dbms_resource_manager « Oracle Live http://mogukiller.wordpress.com/category/dbms_resource_manager/

Esquema Plan nocturno

a) PENDING AREA
Como comentamos con anterioridad antes de crear ningun objeto es necesario definir la PENDING
AREA.

sql>BEGIN
DBMS_RESOURCE_MANAGER.CREATE_PENDING_AREA;
END;

2 de 9 11/04/2011 17:50
dbms_resource_manager « Oracle Live http://mogukiller.wordpress.com/category/dbms_resource_manager/

b) CREAMOS GRUPOS DE USUARIOS

En el PLAN NOCTURNO tenemos los grupos de:


1) Carga_Ppa.
2) Backup.

sql> BEGIN
DBMS_RESOURCE_MANAGER.CREATE_CONSUMER_GROUP(
CONSUMER_GROUP=>’CARGA_Ppa’,
COMMENT=> ‘Usuarios Principales’);
END;

sql> BEGIN
DBMS_RESOURCE_MANAGER.CREATE_CONSUMER_GROUP(
CONSUMER_GROUP=>’Proceso_Backup’,
COMMENT=> ‘Encargados del Backup’);
END;

En el PLAN DIURNO tenemos los grupos de:


1) DESARROLLADOR
2) NOVATOS

sql> BEGIN
DBMS_RESOURCE_MANAGER.CREATE_CONSUMER_GROUP(
CONSUMER_GROUP=>’DESARROLADOR’,
COMMENT=> ‘Grupos de Desarrolladores’);
END;

sql>BEGIN
DBMS_RESOURCE_MANAGER.CREATE_CONSUMER_GROUP(
CONSUMER_GROUP=>’NOVATOS’,
COMMENT=> ‘Usuarios noveles’);
END;

c) PLANES DE ACTUACION

Creamos el PLAN NOCTURNO:

sql>BEGIN
DBMS_RESOURCE_MANAGER.CREATE_PLAN(
PLAN=>’PLAN_NOCTURNO’,
COMMENT=>’Plan fuera de horas de maxima carga’,
CPU_MTH=>’RATIO’);
END;
nota: observad que el proceso de gestion de la CPU se hara por RATIO.

Creamos el PLAN DIURNO y su subplan.

sql>BEGIN
DBMS_RESOURCE_MANAGER.CREATE_PLAN(
PLAN=>’PLAN_DIURNO’,
COMMENT=>’Plan en horas de maxima carga’);
END;

3 de 9 11/04/2011 17:50
dbms_resource_manager « Oracle Live http://mogukiller.wordpress.com/category/dbms_resource_manager/

sql>BEGIN
DBMS_RESOURCE_MANAGER.CREATE_PLAN(
PLAN=>’PLAN_CARGA’,
COMMENT=>’Plan principal’);
END;

d) DIRECTIVAS DE LOS PLANES

Directivas del PLAN NOCTURNO

sql>BEGIN
DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE(
PLAN=>’PLAN_NOCTURNO’,
GROUP_OR_SUBPLAN=>’SYS_GROUP’,
COMMENT=>’Recurso CPU para SYS_GROUP’,
CPU_P1=>10);
END;

sql>BEGIN
DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE(
PLAN=>’PLAN_NOCTURNO’,
GROUP_OR_SUBPLAN=>’CARGA_Ppa’,
COMMENT=>’Recurso CPU para CARGA_Ppa’,
CPU_P1=>5);
END;

sql>BEGIN
DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE(
PLAN=>’PLAN_NOCTURNO’,
GROUP_OR_SUBPLAN=>’PROCESO_BACKUP’,
COMMENT=>’Recurso CPU para PROCESO_BACKUP’,
CPU_P1=>2);
END;

sql>BEGIN
DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE(
PLAN=>’PLAN_NOCTURNO’,
GROUP_OR_SUBPLAN=>’OTHER_GROUPS’,
COMMENT=>’Recurso CPU para OTHER_GROUPS’,
CPU_P1=>1);
END;

Directivas del PLAN_CARGA

sql>BEGIN
DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE(
PLAN=>’PLAN_CARGA’,
GROUP_OR_SUBPLAN=>’DESARROLADOR’,
COMMENT=>’Recurso CPU para DESAROLLADOR’,
CPU_P1=>90);
END;

sql>BEGIN
DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE(
PLAN=>’PLAN_CARGA’,
GROUP_OR_SUBPLAN=>’NOVATOS’,

4 de 9 11/04/2011 17:50
dbms_resource_manager « Oracle Live http://mogukiller.wordpress.com/category/dbms_resource_manager/

COMMENT=>’Recurso CPU para NOVATOS’,


CPU_P1=>10);
END;

sql>BEGIN
DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE(
PLAN=>’PLAN_CARGA’,
GROUP_OR_SUBPLAN=>’OTHER_GROUPS’,
COMMENT=>’Recurso CPU para OTHER_GROUPS’,
CPU_P2=>100);
END;

Directivas del PLAN_DIARIO

sql> BEGIN
DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE(
PLAN=>’PLAN_DIURNO’,
GROUP_OR_SUBPLAN=>’SYS_GROUP’,
COMMENT=>’Recurso CPU para SYS_GROUP’,
CPU_P1=>100);
END;

sql> BEGIN
DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE(
PLAN=>’PLAN_DIURNO’,
GROUP_OR_SUBPLAN=>’PLAN_CARGA’,
COMMENT=>’Recurso CPU para PLAN_CARGA’,
CPU_P2=>100);
END;

sql>BEGIN
DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE(
PLAN=>’PLAN_DIURNO’,
GROUP_OR_SUBPLAN=>’OTHER_GROUPS’,
COMMENT=>’Recurso CPU para OTHER_GROUPS’,
CPU_P3=>100);
END;

e) VALIDAMOS PENDING AREA

sql> exec DBMS_RESOURCE_MANAGER.VALIDATE_PENDING_AREA;

f) SUBMIT elementos PENDING AREA

sql> exec DBMS_RESOURCE_MANAGER.SUBMIT_PENDING_AREA;

g) ACTIVAMOS EL PLAN que toque.

sql> ALTER SYSTEM SET RESOURCE_MANAGER_PLAN=’PLAN_DIARIO’ SCOPE=BOTH;

Y con esto ya tendriamos uno de los planes activos.

5 de 9 11/04/2011 17:50
dbms_resource_manager « Oracle Live http://mogukiller.wordpress.com/category/dbms_resource_manager/

26
ene
09

dbms_resource_manager parte 1

por mogukiller Escribir un Comentario


Categorías: dbms_resource_manager

GESTION DE RECURSOS

En nuestro trabajo como DBA vamos a tener que gestionar la actividad de multitud de usuarios con
diferentes perfiles de actuacion. Como no es lo mismo el perfil de un desarrollador a un perfil de usuario
novato, vamos a aprender a repartir los recursos de la base de datos atendiendo a estos perfiles.

En la gestion de los recursos de la base de datos intervienen los siguientes factores:

a) Grupos de usuarios
b) Plan de recursos
c) Directivas de planes de recursos.

Los grupos de usuarios son las diferentes agrupaciones que podemos hacer de las sessiones en nuestra
base de datos. Podemos configurado un plan NIGHT_PLAN que nos configure el grupo de usuarios
MANAGERS a la directiva de utilizacion 10% de la CPU.

Oracle nos proporciona un paquete para la gestion de recursos DBMS_RESOURCE_MANAGER

PENDIGN AREA

Para poder gestionar recurso es necesaria una PENDING AREA, sera la zona destinada a la compilacion
y validacion de los objetos necesarios para la gestion de recursos.

a) Creamos una Pending Area:

sql> exec dbms_resource_manager.CREATE_PENDING_AREA();

b) Validamos los objetos dentro de la Pending Area:

sql> exec dbms_resource_manager.VALIDATE_PENDING_AREA;

NOTA: la validacion de los objetos almacenados en la Pending Area comprueba:


1) No existan bucles.
2) Todos los obejtos definidos en el plan de actuacion deben de existir.
3) Todas la directivas deben de estar referenciadas a planes o a grupos de usuario.
4) Un plan activo no puede contener mas de 32 grupos de usuarios.
5) No existan conflictos de nombres.

c) Hacemos los cambios activos.

sql> > exec dbms_resource_manager.SUBMIT_PENDING_AREA;

Con esta opcion movemos los parametros de la Pending Area al Diccionario de la base de datos.

d) Borramos la Pending Area

sql> exec dbms_resource_manager.CLEAR_PENDING_ARE;

6 de 9 11/04/2011 17:50
dbms_resource_manager « Oracle Live http://mogukiller.wordpress.com/category/dbms_resource_manager/

Esto no seria necesario si el proceso de submit ha funcionado correctamente.


GRUPOS DE USUARIOS

Nos va a permitir clasificar los usuarios en diferentes grupos, permitiendo asignar recursos de una froma
mas optima.

a) Creamos un Grupo de usuarios

sql>BEGIN
DBMS_RESOURCE_MANAGER.CREATE_CONSUMER_GROUP(‘DEVELOPERS’,'Grupo de
desarrolladores’);
END;
/

Para gestionar nuestros grupos de usuarios utilizaremos la vista DBA_RSRC_CONSUMER_GROUP. Un


usuario que no se haya asignado a un grupo seran asignados a OTHER_GROUPS group.

b) Borramos un Grupo de usuarios

sql>BEGIN
DBMS_RESOURCE_MANAGER.DELETE_CONSUMER_GROUP(‘DEVELOPERS’);
END;
/

c) Asignamos sesiones de usuario a un grupo

sql>BEGIN
DBMS_RESOURCE_MANAGER.SET_CONSUMER_GROUP_MAPPING(
ATTRIBUTE=>’ORACLE_USER’,
VALUE=>’USERNAME’,
CONSUMER_GROUP=>’DEVELOPERS’);
END;
/

En el parametro ATTRIBUTE indicamos que tipo de usuario es: CLIENT_OS_USER, ORACLE_USER,


SERVICE_NAME, etc..

d) Conmutar un usuario de grupo.

d.1) Conmutar sesion activa de grupo

sql>BEGIN
DBMS_RESOURCE_MANAGER.SWITCH_CONSUMER_GROUP_FOR_SESS(
SESSION_ID=>158,
SESSION_SERIAL=>18321,
CONSUMER_GROUP=>’NOVATOS’);
END;
/

NOTA: Para extraer los parametros de SESSION_ID y SESSION_SERIAL consultamos la tabla


V$SESSION

d.2) Conmutar usuario de grupo.

sql>BEGIN
DBMS_RESOURCE_MANAGER.SWITCH_CONSUMER_GROUP_FOR_USER(
USER=>’MOGU’,

7 de 9 11/04/2011 17:50
dbms_resource_manager « Oracle Live http://mogukiller.wordpress.com/category/dbms_resource_manager/

CONSUMER_GROUP=>’DEVELOPERS’);
END;
/

PLAN DE RECURSOS

Resource Plan asocia las directivas con los grupos de usuarios.

TIPOS
a) Simple: Unicamente puede gestionar recursos de CPU.
b) Complejos: Consiste en sub-planes.

CPU resource modos:

a) ENPHASIS: Se mide en unidades de porcentaje.


b) RATIO

CREAMOS UN PLAN SIMPLE

sql> BEGIN
DBMS_RESOURCE_MANAGER.CREATE_SIMPLE_PLAN(
SIMPLE_PLAN=>’CARGA’,
CONSUMER_GROUP1=>’DEVELOPERS’,
GROUP1_CPU=>50,
CONSUMER_GROUP2=>’NOVATOS’,
GROUP2_CPU=>50);
END;
/
nota: En un plan simple podemos configurar hasta nueve grupos de usuario.

CREAMOS UN PLAN COMPLEJO

sql> BEGIN
DBMS_RESOURCE_MANAGER.CREATE_PLAN(
PLAN=>’CARGA2′,
COMMENT=>’Carga Compleja’);
END;
/

NOTA: consultamos los planes activos en dba_rsrc_plans

DIRECTIVAS DE PLANES DE RECURSOS

sql>BEGIN
DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE(
PLAN=>’CARGA2′,
GROUP_OR_SUBPLAN=>’DEVELOPERS’,
COMMENT=>’Directivas para CARGA2′,
ACTIVE_SESS_POOL_P1=>’2′,
MAX_IDLE_TIME=>180);
END;
/

Existen multitud de directivas a gestionar:


a) CPU_P1[P1-P8]
b) ACTIVE_SESS_POOL_P1
c) SWITCH_TIME — Cuanto tiempo tiene que estar ejecutando una operacion antes de conmutar

8 de 9 11/04/2011 17:50
dbms_resource_manager « Oracle Live http://mogukiller.wordpress.com/category/dbms_resource_manager/

c.1) SWITCH_GROUP — Sera el grupo al que conmute.


d) PARALLEL_DEGREE_LIMIT_P1 — Maximo numero de trabajo en paralelo.
e) etc.

Advisors (1)
ArchiveLog (2)
AWR (2)
Bloques corruptos (1)
dbms_resource_manager (2)
DBMS_SCHEDULER (4)
Export/Import (3)
Flashback (2)
Indices (1)
MultiIdioma (1)
OCA (1)
Capitulo 1 Arquitectura (1)
Recuperacion DB (6)
Recuperacion ficheros no criticos (4)
Redo Log File Member (1)
Temporary files (1)
Recuperar despues de Resetlogs (1)
RMAN (3)
segment shrink (2)
SQL*Loader (1)
TOAD (1)

Blog de WordPress.com. | Theme: Redoable Lite by Dean J Robinson.

9 de 9 11/04/2011 17:50

Potrebbero piacerti anche