{"id":1785,"date":"2017-10-21T20:26:10","date_gmt":"2017-10-21T18:26:10","guid":{"rendered":"http:\/\/clemente.pamplona.name\/dba\/?p=1785"},"modified":"2017-10-21T20:28:15","modified_gmt":"2017-10-21T18:28:15","slug":"introducion-a-ilm","status":"publish","type":"post","link":"http:\/\/clemente.pamplona.name\/dba\/introducion-a-ilm\/","title":{"rendered":"Introduci\u00f3n  a ILM"},"content":{"rendered":"<p>Hoy vamos a ver una peque\u00f1a entrada para dumies que sirva de introducci\u00f3n a el ILM  <\/p>\n<p>el ILM (information cycle managemet) no es otra cosa que, como se deduce de la traducci\u00f3n del ingl\u00e9s la administraci\u00f3n del ciclo de vida de la informaci\u00f3n, lo que en  t\u00e9rminos llanos ser\u00eda el gestionar que hacemos cuando la informaci\u00f3n crece.<\/p>\n<p>Oracle 12c dispone de dos mecanismos combinados que aportan much\u00edsima potencia para tratar con este tema de arquitecturas,  si quer\u00e9is adentraros mas en este tipo de informacion, deber\u00e9is de buscarla en las gu\u00edas de VLDB (Very Large Databases),pero  aqui veremos muy por encima estos dos componentes para , al menos ser conocedores de que existen.<br \/>\n<b>Estos dos componentes solo  est\u00e1n soportados en cdb y pdb desde la 12.2<\/b><\/p>\n<h1> Componentes b\u00e1sicos de ILM <\/h1>\n<h2>Heat Map<\/h2>\n<p>El HEAT MAP recopila  en la vista V$HEAT_MAP_SEGMENT informaci\u00f3n en  tiempo real  tanto de DML como de acceso a los segmentos de los tablespaces de la base de datos. Esta informaci\u00f3n la obtiene  directamente desde la memoria y es  bajada regularmente  mediante jobs del scheduler a las tablas que  encuentran en SYSAUX.<br \/>\nSe activa mediante el par\u00e1metro<\/p>\n<pre>\r\n ALTER SYSTEM SET HEAT_MAP=[ON|OFF]\r\n<\/pre>\n<p>Algo curioso es que se puede activar tambi\u00e9n  a nivel de sesi\u00f3n.<\/p>\n<p>El Heat Map es capaz de trazar la informaci\u00f3n de uso a nivel de fila y segmento, pero es una funcionalidad enfocada a tratar datos de negocio, por lo que  no registra  lo que ocurre en SYSTEM o SYSAUX.<\/p>\n<p>Heat Map registra los datos de la siguiente manera:<br \/>\n\u2022\tLos cambios que hacen modificaciones son registrados a nivel de fila y transmitidos a nivel de bloque.<br \/>\n\u2022\tLos cambios a nivel de acceso son registrados a nivel de segmento.<\/p>\n<h2> ADO (Automatic Data Optimization)<\/h2>\n<p>ADO es el segundo componente que vamos a ver hoy, este componente  permite a los administradores a crear pol\u00edticas para hacer compresi\u00f3n y movimiento de datos.<\/p>\n<p>Cuando creas una pol\u00edtica la base de datos evalua periodicamente la pol\u00edtica y lleva a cabo las tareas necesarias.(tambi\u00e9n pueden lanzarse a mano)<br \/>\nLas pol\u00edticas de ADO se pueden especificar a nivel de segmento o fila tanto para tablas como para particiones<br \/>\n<b>importante:<\/b>Esta funcionalidad necesita de Oracle Advanced Compresion, por lo que es una funcionalidad que requiere de licenciamiento espec\u00edfico<\/p>\n<h1> Generando pol\u00edticas de ILM <\/h1>\n<p>Una vez sabemos que podemos trazar la vida de los datos, y que podemos crear pol\u00edticas que lo gestionen, es cuando llegamos a ver la verdadera potencia de esta funcionalidad.<br \/>\nVamos a ver dos tipos de pol\u00edticas bien diferenciados<br \/>\n\u2022\tpol\u00edticas que compresi\u00f3n<br \/>\n\u2022\tpol\u00edticas de movimiento de datos<\/p>\n<h2>Pol\u00edticas  de compresi\u00f3n<\/h2>\n<p>Las pol\u00edticas de compresi\u00f3n  cuentan con 4 par\u00e1metros<br \/>\n\u2022\tNivel tablespace,tabla,partici\u00f3n<br \/>\n\u2022\tTipo de Compresion<br \/>\n\u2022\t\u00c1mbito (cuando hacerlo)<br \/>\n\u2022\tClausula temporal<\/p>\n<p><b><font color=red size=+1>Tipos de compresion<\/font><\/b><\/p>\n<p>Podemos contar con 4 tipos distintos de compresi\u00f3n.<\/p>\n<ul>\n<li><b>ROW STORE COMPRESS BASIC<\/b>: Es el b\u00e1sico que se usa al insertar en una tabla usando \u201cadvanced compression\u00bb (ACO) si no usas directpath, para estas se usa la cl\u00e1usula    ROW STORE COMPRESS BASIC.\n<li><b>ROW STORE COMPRESS ADVANCED<\/b>: En versiones anteriores se llamaba  <i>OLTP compression<\/i> y ha sido renombrado, hace compresi\u00f3n standard para indices y LOW para lob segments  .\n<li><b>COLUMN STORE COMPRESS FOR QUERY LOW or HIGH<\/b>: Provee <i>Hybrid columnar compression <\/i>( HCC) y mayor grado de compression que el anterior.<br \/>\nEsta no se puede aplicar a nivel ROW. Funciona bien para entornos donde el rendimiento es cr\u00edtico y tenemos muchas consultas pero se esperan pocas acciones de DML.<br \/>\nLa compresi\u00f3n de los LOBS es MEDIUM.<\/p>\n<li><b>COLUMN STORE COMPRESS FOR ARCHIVE LOW or HIGH<\/b>: Provee de <i>Hybrid columnar compression<\/i> (or HCC) y del m\u00e1ximo nivel de compresion, es conveniente cuando el acceso a los datos es bajo y no se espera ninguna DML.<br \/>\nHace COLUMN STORE COMPRESS FOR ARCHIVE LOW or HIGH maps to MEDIUM compression for SecureFile LOB segments  . Esta no se puede aplicar a nivel ROW\n<\/ul>\n<p>Los datos pueden ser comprimidos cuando son insertados, actualizados o cargados en una tabla desde un bulk load.<\/p>\n<p><b><font color=red size=+1>Ambito de la compresion<\/font><\/b><\/p>\n<ul>\n<li>ROW: Se pueden crear basadas en fecha de modificacion\n<li>SEGMENT:se pueden aplicar a tablas o particiones\n<li>Group: Si una tabla es elegible para compresi\u00f3n esta compresi\u00f3n se aplica a todos los objetos dependientes ( Lobs,global indexes..) .Solo se aplica a tipo de segmento\n<li>Tablespace:  Se aplica a todos los segmentos del tablespace\n<\/ul>\n<h2>Ejemplos<\/h2>\n<p>La manera  mas sencilla de verlo es viendo algunos ejemplos<br \/>\nEjemplo de pol\u00edtica  aplicado a una particion sobre fila (row level compresion despu\u00e9s de 90 d\u00edas)<\/p>\n<pre>\r\nALTER TABLE libros  MODIFY PARTITION narrativa \r\n  ILM ADD POLICY ROW STORE COMPRESS ADVANCED\r\n ROW \r\n  AFTER 90 DAYS OF NO MODIFICATION;\r\n<\/pre>\n<p>Ejemplo de pol\u00edtica aplicada a nivel tablespace  aplicado a  a nivel segmento.<\/p>\n<pre>\r\nALTER TABLESPACE DATOS1 DEFAULT\r\nILM ADD POLICY  ROW STORE COMPRESS ADVANCED\r\n SEGMENT \r\nAFTER 30 DAYS OF NO ACCESS;\r\n<\/pre>\n<p>Ejemplo de pol\u00edtica de HCC sobre una partici\u00f3n a nivel segmento<\/p>\n<pre>\r\nALTER TABLE libros  MODIFY PARTITION ficcion \r\n  ILM ADD POLICY COMPRESS FOR ARCHIVE HIGH \r\nSEGMENT \r\n  AFTER 12 MONTHS OF NO MODIFICATION;\r\n<\/pre>\n<h2>Pol\u00edticas  de movimientos de datos<\/h2>\n<p>Al contrario de las pol\u00edticas de compresi\u00f3n que pueden llevarse a cabo a nivel de fila o segmento , las de movimiento solamente pueden llevarse a cabo a nivel de segmento.Esto se lleva a cabo mediante la cl\u00e1usula TIER_TO<\/p>\n<pre>\r\n\r\nALTER TABLE libros MODIFY PARTITION ensayo \r\n  ILM ADD POLICY\r\n  TIER TO almacenamiento_barato;\r\n<\/pre>\n<p>\u00bfC\u00f3mo sabe la base de datos cuando hacer este movimiento? La base de datos mover\u00e1 la particion <i>ensayo<\/i> de la tabla <i>libros<\/i>cuando llegue al <i>fullnes thresold<\/i><br \/>\nHay dos par\u00e1metros que regulan las pol\u00edticas de movimiento<\/p>\n<ul>\n<li>TBS_PERCENT_USED : Se modfica con DBMS_ILM_ADMIN.CUSTOMIZE_ILM(DBMS_ILM_ADMIN.TBS_PERCENT_USED,85)\n<li>TBS_PERCENT_FREE: Se modfica con DBMS_ILM_ADMIN.CUSTOMIZE_ILM(DBMS_ILM_ADMIN.TBS_PERCENT_FREE,25)\n<\/ul>\n<p>Cuando la  partici\u00f3n ensayo de la tabla libros pase el umbral marcado en <i>TBS_PERCENT_USED<\/i>(85%) de ocupaci\u00f3n se mover\u00e1n los datos menos usados ( mas fr\u00edos)  segmentos al tablespace almacenamiento_barato, esta operacion se detendr\u00e1 cuando quede libre el umbral marcado en <i>TBS_PERCENT_FREE<\/i>, en nuestro caso un 25% libre.<\/p>\n<p>En caso de haber politicas a nivel de tabla y tablespace, la de nivel tabla predomina sobre la de tablespace<\/p>\n<p>Como veis, la combinaci\u00f3n de HEAT MAP y ADO es muy potente para gestionar bases de datos muy grandes, permiti\u00e9ndonos tener los datos mas accedimos el almacenamiento r\u00e1pido, y los menos accedido en almacenamiento mas barato (aunque posiblemente mas lento)<\/p>\n<p>M\u00e1s informaci\u00f3n en la secci\u00f3n de documentaci\u00f3n de <a href=\"https:\/\/docs.oracle.com\/cd\/B28359_01\/server.111\/b32024\/intro.htm\">Very large databases <\/a> de Oracle <\/p>\n","protected":false},"excerpt":{"rendered":"<p>Hoy vamos a ver una peque\u00f1a entrada para dumies que sirva de introducci\u00f3n a el ILM el ILM (information cycle managemet) no es otra cosa que, como se deduce de la traducci\u00f3n del ingl\u00e9s la administraci\u00f3n del ciclo de vida &hellip; <a href=\"http:\/\/clemente.pamplona.name\/dba\/introducion-a-ilm\/\">Sigue leyendo <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[60],"tags":[828,834,830,826,832],"class_list":["post-1785","post","type-post","status-publish","format-standard","hentry","category-12c","tag-ado","tag-dbms_ilm_admin","tag-heatmap","tag-ilm","tag-vldb"],"_links":{"self":[{"href":"http:\/\/clemente.pamplona.name\/dba\/wp-json\/wp\/v2\/posts\/1785","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=1785"}],"version-history":[{"count":24,"href":"http:\/\/clemente.pamplona.name\/dba\/wp-json\/wp\/v2\/posts\/1785\/revisions"}],"predecessor-version":[{"id":1809,"href":"http:\/\/clemente.pamplona.name\/dba\/wp-json\/wp\/v2\/posts\/1785\/revisions\/1809"}],"wp:attachment":[{"href":"http:\/\/clemente.pamplona.name\/dba\/wp-json\/wp\/v2\/media?parent=1785"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/clemente.pamplona.name\/dba\/wp-json\/wp\/v2\/categories?post=1785"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/clemente.pamplona.name\/dba\/wp-json\/wp\/v2\/tags?post=1785"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}