{"id":1197,"date":"2015-02-24T18:13:23","date_gmt":"2015-02-24T17:13:23","guid":{"rendered":"http:\/\/clemente.pamplona.name\/dba\/?p=1197"},"modified":"2015-02-24T18:25:18","modified_gmt":"2015-02-24T17:25:18","slug":"vuelta-tras-de-una-base-de-datos-a-una-fecha-con-rman","status":"publish","type":"post","link":"http:\/\/clemente.pamplona.name\/dba\/vuelta-tras-de-una-base-de-datos-a-una-fecha-con-rman\/","title":{"rendered":"Vuelta tras de una base de datos a una fecha con rman"},"content":{"rendered":"<p>Revisando las entradas de RMAN veo que nos falta una entrada para el caso mas com\u00fan y mas sencillo de todos, volver la base de datos a una determinada fecha.<br \/>\nLa manera mas c\u00f3moda de hacer esto desde la versi\u00f3n 11g es hacerlo con un <i> flashback database<\/i> pero, por si no pudiese hacerse, vamos a explicar la recuperaci\u00f3n mas sencilla que hay.<\/p>\n<h2> Supuesto<\/h2>\n<p>Nos encontramos en el caso en el que no hemos perdido nada en la base de datos pero debemos de hacer una marcha atr\u00e1s en el tiempo de la base de datos a un momento anterior a 7 d\u00edas(o la etencion del backup del controlfile).<br \/>\nEn este caso disponemos en el servidor de todos los elementos de la base de datos ( passwd,spfile,controlfile\u2026.) pero los datos no no son v\u00e1lidos.<\/p>\n<h2>Pasos previos<\/h2>\n<p>En este caso y para garantizar que si fallamos en el proceso  podemos repetirlo guardaremos el controlfile.<br \/>\nEste paso es de suma importancia ya que, al no tener base de datos de cat\u00e1logo de RMAN si perdi\u00e9semos el controlfile perder\u00edamos toda la informaci\u00f3n del RMAN<br \/>\nPara ello haremos dos acciones:<\/p>\n<h3>Copia del controlfile a texto <\/h3>\n<pre>\r\nalter database backup controlfile to  trace as \u2018\u2026.\\CONTROLFILE.TXT\u2019;\r\n<\/pre>\n<h3> Copia f\u00edsica del controlfile<\/h3>\n<p>Como dec\u00edamos anteriormente, el controlfile el \u00fanico elemento de la base de datos en el que mantenemos la informaci\u00f3n de donde esta el cat\u00e1logo de rman, as\u00ed que, pararemos la base de datos  y  copiaremos los 3 controlfiles desde su ubicaci\u00f3n en los discos a un directorio dedicado creado para esta copia<br \/>\nEl contenido de los 3 controlfiles es exactamente el mismo, con lo que, al copiar los 3 estamos haciendo 3 backups <\/p>\n<h2>Recuperacion<\/h2>\n<p>Una vez hemos guardado nuestros controlfiles para tener las espaldas cubiertas, procederemos a recuperar la base de datos a el momento en que queremos.<br \/>\nPara ello, crearemos un script de rman llamado recuperacion.cmd con el contenido :<\/p>\n<pre>\r\nstartup mount;\r\nRUN {\r\nSET until time=\"TO_DATE('23\/02\/15 21:00:00','DD\/MM\/YY hh24:mi:ss')\";\r\nallocate channel DEV0 type SBT_TAPE PARMS 'ENV=(XXXXXXXXXXXXXXX)';\r\nrestore database;\r\nrecover database;\r\n }\r\n<\/pre>\n<p>Donde <b>ENV=(XXXXXXXXXXXXXXXXXX)<\/b>  depender\u00e1 de la integraci\u00f3n de backup que se use.<br \/>\nY lo ejecutaremos con el comando<\/p>\n<pre>\r\nORACLE_SID=XXX\r\nrman cmdfile restauracion.cmd log=estado_restauracion.log\r\n<\/pre>\n<h2>Apertura<\/h2>\n<p>Al estar haciendo una recuperaci\u00f3n de la base de datos incompleta deberemos de abrir la base de datos en modo resetlogs, para ello, desde la l\u00ednea de comandos <\/p>\n<pre>\r\n ORACLE_SID=XXX\r\nSqlplus \u201c\/as sysdba\u201d\r\nALTER DATABASE OPEN RESETLOGS;\r\n<\/pre>\n<p>Y con esto tendremos la base de datos recuperada a la fecha que busc\u00e1bamos.<br \/>\nComo veis, al no tener que conocer DBIDs, ni recuperar controlfiles u spfiles, el <\/p>\n","protected":false},"excerpt":{"rendered":"<p>Revisando las entradas de RMAN veo que nos falta una entrada para el caso mas com\u00fan y mas sencillo de todos, volver la base de datos a una determinada fecha. La manera mas c\u00f3moda de hacer esto desde la versi\u00f3n &hellip; <a href=\"http:\/\/clemente.pamplona.name\/dba\/vuelta-tras-de-una-base-de-datos-a-una-fecha-con-rman\/\">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,60,6,9,199],"tags":[249,254,32,248,23,214],"class_list":["post-1197","post","type-post","status-publish","format-standard","hentry","category-11g","category-12c","category-backup","category-dummie","category-oracle","tag-11g","tag-12c","tag-controlfile","tag-dummie","tag-rman","tag-until-time"],"_links":{"self":[{"href":"http:\/\/clemente.pamplona.name\/dba\/wp-json\/wp\/v2\/posts\/1197","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=1197"}],"version-history":[{"count":5,"href":"http:\/\/clemente.pamplona.name\/dba\/wp-json\/wp\/v2\/posts\/1197\/revisions"}],"predecessor-version":[{"id":1202,"href":"http:\/\/clemente.pamplona.name\/dba\/wp-json\/wp\/v2\/posts\/1197\/revisions\/1202"}],"wp:attachment":[{"href":"http:\/\/clemente.pamplona.name\/dba\/wp-json\/wp\/v2\/media?parent=1197"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/clemente.pamplona.name\/dba\/wp-json\/wp\/v2\/categories?post=1197"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/clemente.pamplona.name\/dba\/wp-json\/wp\/v2\/tags?post=1197"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}