{"id":160,"date":"2012-09-12T11:31:56","date_gmt":"2012-09-12T09:31:56","guid":{"rendered":"http:\/\/clemente.pamplona.name\/dba\/?p=160"},"modified":"2012-10-20T20:05:08","modified_gmt":"2012-10-20T18:05:08","slug":"creando-grupos-de-consumidores-a-la-caza-del-bloqueo-ii","status":"publish","type":"post","link":"http:\/\/clemente.pamplona.name\/dba\/creando-grupos-de-consumidores-a-la-caza-del-bloqueo-ii\/","title":{"rendered":"Creando grupos de consumidores.                 A la caza del bloqueo II"},"content":{"rendered":"<p>Hasta el momento, en la entrada \u00a0\u00a0<a title=\"Gestor de recursos.  A la caza del bloqueo I\" href=\"http:\/\/clemente.pamplona.name\/dba\/?p=109\" target=\"_blank\">A la caza del bloqueo I <\/a>\u00a0 ten\u00edamos\u00a0 un\u00a0 plan de recursos llamado NO_LOCKS\u00a0que mataba aquellos procesos que estaban mas de 5 segundos bloqueando otra consulta. Este plan de consumidores no era muy util , ya que pod\u00eda provocar estragos matando indiscriminadamente cualquier bloqueo de mas de 5 segundos, con lo que hoy daremos un paso mas para hacer de ese plan de recursos algo mas \u00fatil.<\/p>\n<p>En esta entrada vamos a crear un grupo de consumidores, este grupo de consumidores nos permitir\u00e1 afinar el perfil de los usuarios sobre los que queremos aplicar nuestro pal de recursos.<\/p>\n<p>El grupo de consumidores lo vamos a llamar USER_NO_LOCK_ALLOW y lo crearemos de la siguiente manera:<\/p>\n<pre>BEGIN\r\n dbms_resource_manager.clear_pending_area();\r\n dbms_resource_manager.create_pending_area();\r\n\u00a0dbms_resource_manager.create_consumer_group(\r\nconsumer_group =&gt;'USER_NO_LOCK_ALLOW','Grupo de consumidores alos que no permitiremos bloqueos '\r\n);\r\n\u00a0dbms_resource_manager.submit_pending_area();\r\nEND;<\/pre>\n<p>&nbsp;<\/p>\n<p>Una vez tenemos nuestro grupo de consumidores creado, es el momento de decidir que usuarios queremos tener dentro de el y cuales no. Oracle 11g nos da muchas opciones para seleccionar este grupo de usuarios, algunas de ellas son:<\/p>\n<h2>Por esquema<\/h2>\n<p>Si quisieramos a\u00f1adir a los usuarios del esquema \u00abesquema1\u00bb a este grupo de consumidores usariamos el par\u00e1metro <em>dbms_resource_manager.oracle_user<\/em>\u00a0 del paquete dbms_resource_manager<\/p>\n<pre>BEGIN\r\ndbms_resource_manager.clear_pending_area();\r\ndbms_resource_manager.create_pending_area();\r\ndbms_resource_manager.set_consumer_group_mapping(\r\ndbms_resource_manager.oracle_user,'esquema1','USER_NO_LOCK_ALLOW'\r\n);\r\ndbms_resource_manager.submit_pending_area();\r\n\u00a0END;<\/pre>\n<h2>Por maquina cliente<\/h2>\n<p>Supongamos que queramos aplicar incluir en nuestro grupo de consumidores solamente las sesiones que se ejecutan desde el servidor cliente \u00abWORKGROUP\\client1\u00bb, para ello\u00a0 usar\u00edamos <em>dbms_resource_manager.client_machine <\/em><\/p>\n<pre>BEGIN\r\ndbms_resource_manager.clear_pending_area();\r\ndbms_resource_manager.create_pending_area();\r\ndbms_resource_manager.set_consumer_group_mapping(\r\ndbms_resource_manager.client_machine,'WORKGROUP\\MAQUINA1','USER_NO_LOCK_ALLOW'\r\n);\r\ndbms_resource_manager.submit_pending_area();\r\nEND;<\/pre>\n<h2>Por programa<\/h2>\n<p>Para separar por programa usaremos la llamada <em>dbms_resource_manager.client_program<\/em><\/p>\n<pre>BEGIN\r\ndbms_resource_manager.clear_pending_area();\r\ndbms_resource_manager.create_pending_area();\r\ndbms_resource_manager.set_consumer_group_mapping(\r\ndbms_resource_manager.client_program,'PROGRAMA1','USER_NO_LOCK_ALLOW'\r\n);\r\ndbms_resource_manager.submit_pending_area();\r\nEND;<\/pre>\n<p>Como podeis ver, las posibilidades son muy grandes, en esta entrada nos hemos centrado en capturar sesiones por par\u00e1metros de login, pero la funcion <em>dbms_resource_manager.set_consumer_group_mapping<\/em> permite tambi\u00e9n seleccionar usuarios por atributos de runtime-.<\/p>\n<p>La lista de las opciones la podeis encontrar en la documentaci\u00f3n del paquete<br \/>\ndbms_resource_manager.set_consumer_group_mapping, pero a groso modo se puede resumir en:<br \/>\n<strong>Login Attributes<\/strong><\/p>\n<ul>\n<li>oracle_user<\/li>\n<li>service_name<\/li>\n<li>client_os_user<\/li>\n<li>client_program<\/li>\n<li>client_machine<\/li>\n<\/ul>\n<p><strong>\u00a0Runtime Attributes<\/strong><\/p>\n<ul>\n<li>module_name<\/li>\n<li>module_name_action<\/li>\n<li>service_module<\/li>\n<li>service_module_action<\/li>\n<\/ul>\n<p>Ahora solamente nos quedar\u00e1 el incluir este grupo de consumidores en nuestro plan de recursos, indic\u00e1ndole que son los consumidores de este grupo a los que no se les debe permitir el bloquear al resto de los usuarios . Pero esto ser\u00e1 en otra entrada.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Hasta el momento, en la entrada \u00a0\u00a0A la caza del bloqueo I \u00a0 ten\u00edamos\u00a0 un\u00a0 plan de recursos llamado NO_LOCKS\u00a0que mataba aquellos procesos que estaban mas de 5 segundos bloqueando otra consulta. Este plan de consumidores no era muy util &hellip; <a href=\"http:\/\/clemente.pamplona.name\/dba\/creando-grupos-de-consumidores-a-la-caza-del-bloqueo-ii\/\">Sigue leyendo <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[11,3],"tags":[16,20,19,21,14],"class_list":["post-160","post","type-post","status-publish","format-standard","hentry","category-11g","category-tunning","tag-bloqueos","tag-consumer-group","tag-gestor-recursos","tag-locks","tag-resource-manager"],"_links":{"self":[{"href":"http:\/\/clemente.pamplona.name\/dba\/wp-json\/wp\/v2\/posts\/160","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/clemente.pamplona.name\/dba\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/clemente.pamplona.name\/dba\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/clemente.pamplona.name\/dba\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/clemente.pamplona.name\/dba\/wp-json\/wp\/v2\/comments?post=160"}],"version-history":[{"count":10,"href":"http:\/\/clemente.pamplona.name\/dba\/wp-json\/wp\/v2\/posts\/160\/revisions"}],"predecessor-version":[{"id":266,"href":"http:\/\/clemente.pamplona.name\/dba\/wp-json\/wp\/v2\/posts\/160\/revisions\/266"}],"wp:attachment":[{"href":"http:\/\/clemente.pamplona.name\/dba\/wp-json\/wp\/v2\/media?parent=160"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/clemente.pamplona.name\/dba\/wp-json\/wp\/v2\/categories?post=160"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/clemente.pamplona.name\/dba\/wp-json\/wp\/v2\/tags?post=160"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}