{"id":468,"date":"2013-03-11T21:20:45","date_gmt":"2013-03-11T20:20:45","guid":{"rendered":"http:\/\/clemente.pamplona.name\/dba\/?p=468"},"modified":"2014-07-23T17:29:26","modified_gmt":"2014-07-23T15:29:26","slug":"ora-20005-estadisticas-bloqueadas","status":"publish","type":"post","link":"http:\/\/clemente.pamplona.name\/dba\/ora-20005-estadisticas-bloqueadas\/","title":{"rendered":"ORA-20005  Estadisticas bloqueadas"},"content":{"rendered":"<p>Hoy vamos a ver la causa de un problema que pude darse en sistemas en los que hay varias personas administrando o con privilegios sobre distintos objetos de la base de datos. Una de las situaciones que se pueden dar, es que , uno de los  usuarios intente lanzar las estadisticas del planificador de  los objetos sobre los que tiene privilegios y se encuentre con un :<\/p>\n<pre>\r\nORA-20005: object statistics are locked (stattype = ALL) \r\nORA-06512: at \"SYS.DBMS_STATS\", line 13182 \r\nORA-06512: at \"SYS.DBMS_STATS\", line 13202 \r\nORA-06512: at line 2\r\n<\/pre>\n<p>\u00bfPor que sucede esto?<br \/>\nSencillamente, por que, como bien dice el error de oracle, por que alguien ha bloqueado las estad\u00edsticas.<br \/>\nAnte todo,  el bloqueo de las estadisticas no es algo autom\u00e1tico, es una opci\u00f3n deliberada que ha de aplicarse sobre determinados objetos, con lo que, si est\u00e1 as\u00ed es por que ,alguien con privilegios ha decidido que as\u00ed sea.<\/p>\n<p>Los  segundo que nos preguntamos es \u00bfpor que est\u00e1n bloqueadas?<br \/>\nHay distintas razones por la que podemos querer bloquear las estad\u00edsticas de algunos objetos, pro las principales pueden ser :<\/p>\n<ul>\n<li> Por razones de rendimiento: Hay entornos en los que los objetos de la base de datos varian mucho durante su periodo de explotaci\u00f3n, el dba puede elegir obtener un juego de estadisticas v\u00e1lido durante un periodo tipo, y aplicar este juego de estadisticas indistintamente del periodo de explotacion en el que se encuentre.\n<li> Por problemas de ventana, ya que, la generaci\u00f3n de estadisticas de esos objetos puede ser un proceso demasiado pesado, con lo que , el dba ha decidido bloqearlas y lanzarlas especificamente en una ventana aparte\n<li>El proceso de c\u00e1lculo de estad\u00edsticas es un proceso bastante pesado , probablemente el administrador del sistema haya decidido bloquearlas para evitar que cualquier otro usuario con permisos decida lanzarlas\n<\/ul>\n<p>En todo caso, si obtenemos este error ORA-20005, necesitaremos comprobar si realmente est\u00e1n bloqueadas, mediante esta consulta podremos ver que objetos de la base de datos tienen las estadisticas bloqueadas.<\/p>\n<pre>\r\nselect owner, table_name, stattype_locked\r\nfrom dba_tab_statistics\r\nwhere stattype_locked is not null; \r\n<\/pre>\n<p>Lo siguiente que querremos saber, es de cuando son el juego de estad\u00edsticas que estamos utilizando, para eso ampliaremos la consulta a:<\/p>\n<pre>\r\n select table_name,last_analyzed  from dba_tables \r\n   where table_name in \r\n          (select table_name \r\n                 from dba_tab_statistics \r\n                     where stattype_locked is not null \r\n                           and OWNER='ESQUEMAPRUEBAS)\r\n     order by last_analyzed asc \r\n<\/pre>\n<p>Para desbloquear todas las estad\u00edsticas de un esquema <i>ESQUEMAPRUEBAS<I> podemos usar el metascript<\/p>\n<pre>\r\n  select \r\n  'exec dbms_stats.unlock_table_stats('\r\n   ||chr(39)\r\n   ||'ESQUEMAPRUEBAS'\r\n   ||chr(39)||\r\n    ','\r\n   ||chr(39)\r\n   ||TABLE_NAME\r\n   ||chr(39)||' );'\r\n      from dba_tab_statistics where\r\n           stattype_locked is not null \r\n              and OWNER='ESQUEMAPRUEBAS';\r\n<\/pre>\n<p>y ver los distintos objetos, o hacerlo directamente con la llamada :<\/p>\n<pre>\r\nexec dbms_stats.unlock_schema_stats('ESQUEMAPRUEBAS');\r\n<\/pre>\n<p>Como nota final, hay que tener cuidado con el desbloqueo de estad\u00edsticas ya que hay algunas estad\u00edsticas del sistema que pueden estar bloqueadas con lo que no conviene desbloquear todas las estad\u00edsticas de todos los esquemas.<\/p>\n<p>Para mas informaci\u00f3n, como siempre esta metalink, all\u00ed tenemos la notas relacionadas <\/p>\n<ul>\n<li> \u00abORA-38029 \u00abObject Statistics Are Locked\u00bb &#8211; Possible Causes [ID 433240.1]\u00bb\n<li> \tPreserving Statistics using DBMS_STATS.LOCK_TABLE_STATS [ID 283890.1]\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Hoy vamos a ver la causa de un problema que pude darse en sistemas en los que hay varias personas administrando o con privilegios sobre distintos objetos de la base de datos. Una de las situaciones que se pueden dar, &hellip; <a href=\"http:\/\/clemente.pamplona.name\/dba\/ora-20005-estadisticas-bloqueadas\/\">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":[66,3],"tags":[68,67,69],"class_list":["post-468","post","type-post","status-publish","format-standard","hentry","category-errores-ora","category-tunning","tag-estadisticas","tag-ora-20005","tag-planificador"],"_links":{"self":[{"href":"http:\/\/clemente.pamplona.name\/dba\/wp-json\/wp\/v2\/posts\/468","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=468"}],"version-history":[{"count":11,"href":"http:\/\/clemente.pamplona.name\/dba\/wp-json\/wp\/v2\/posts\/468\/revisions"}],"predecessor-version":[{"id":1015,"href":"http:\/\/clemente.pamplona.name\/dba\/wp-json\/wp\/v2\/posts\/468\/revisions\/1015"}],"wp:attachment":[{"href":"http:\/\/clemente.pamplona.name\/dba\/wp-json\/wp\/v2\/media?parent=468"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/clemente.pamplona.name\/dba\/wp-json\/wp\/v2\/categories?post=468"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/clemente.pamplona.name\/dba\/wp-json\/wp\/v2\/tags?post=468"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}