{"id":6039,"date":"2021-07-28T23:36:32","date_gmt":"2021-07-28T23:36:32","guid":{"rendered":"https:\/\/swiv.com.br\/performing-recovery-of-datafiles-loss-by-switching-to-image-copies\/"},"modified":"2026-05-27T20:02:30","modified_gmt":"2026-05-27T19:02:30","slug":"performing-recovery-of-datafiles-loss-by-switching-to-image-copies","status":"publish","type":"post","link":"https:\/\/swiv.com.br\/index.php\/2021\/07\/28\/performing-recovery-of-datafiles-loss-by-switching-to-image-copies\/","title":{"rendered":"Performing Recovery of datafiles loss by switching to image copies"},"content":{"rendered":"\n<p>Imaginemos que voc\u00ea precise realizar a recupera\u00e7\u00e3o de um banco de dados, e pense em usar a metodologia tradicional: restaurar os datafiles a partir de um backup e recuper\u00e1-los a partir dos Archives Redologs + ORLs. O que devemos considerar neste cen\u00e1rio \u00e9 que, caso tenhamos um backup do tipo &#8220;Image Copy&#8221;, j\u00e1 dispon\u00edvel em algum local acess\u00edvel no ambiente, podemos apenas realizar o &#8220;Switch&#8221; desses datafiles (ou seja, uma altera\u00e7\u00e3o interna no controlfile com o nome e localiza\u00e7\u00e3o nova dos datafiles em quest\u00e3o), al\u00e9m do seu respectivo recover. Isso pode economizar muito tempo de execu\u00e7\u00e3o, principalmente por conta do fato de n\u00e3o ser necess\u00e1rio um restore. Neste artigo vamos simular esta situa\u00e7\u00e3o.<\/p>\n\n\n\n<p>Validando nosso ambiente laborat\u00f3rio:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \\&quot;wp-block-syntaxhighlighter-code\\&quot;\"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\n&#x5B;oracle@oel8 ~]$ rman target \/\n \nRecovery Manager: Release 18.0.0.0.0 - Production on Wed Jul 28 20:22:12 2021\nVersion 18.13.0.0.0\n \nCopyright (c) 1982, 2018, Oracle and\/or its affiliates.  All rights reserved.\n \nconnected to target database: RMANDB (DBID=3825250984)\n \nRMAN&gt; SELECT NAME,OPEN_MODE,LOG_MODE FROM V$DATABASE;\n \nusing target database control file instead of recovery catalog\nNAME      OPEN_MODE            LOG_MODE\n--------- -------------------- ------------\nRMANDB    READ WRITE           ARCHIVELOG\n \nRMAN&gt; REPORT SCHEMA;\n \nReport of database schema for database with db_unique_name RMANDB\n \nList of Permanent Datafiles\n===========================\nFile Size(MB) Tablespace           RB segs Datafile Name\n---- -------- -------------------- ------- ------------------------\n1    880      SYSTEM               YES     \/oracle\/RESTORE\/system.dbf\n2    120      TS_HIPO_CATALOG      NO      \/oracle\/RESTORE\/ts_hipo_catalog.dbf\n3    730      SYSAUX               NO      \/oracle\/RESTORE\/sysaux.dbf\n4    305      UNDOTBS1             YES     \/oracle\/RESTORE\/undo.tbs\n5    200      TS_CORTEX_CATALOG    NO      \/oracle\/RESTORE\/ts_cortex_catalog.dbf\n7    16       USERS                NO      \/oracle\/dados\/users.dbf\n \nList of Temporary Files\n=======================\nFile Size(MB) Tablespace           Maxsize(MB) Tempfile Name\n---- -------- -------------------- ----------- --------------------\n1    69       TEMP                 32767       \/oracle\/dados\/RMANDB\/datafile\/o1_mf_temp_h8nyvt1f_.tmp\n<\/pre><\/div>\n\n\n<p>Vamos realizar um backup as image copy do banco de dados:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \\&quot;wp-block-syntaxhighlighter-code\\&quot;\"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\nRMAN&gt; BACKUP AS COPY DATABASE;\n \nStarting backup at 2021-07-28:20:24:31\nusing channel ORA_DISK_1\nchannel ORA_DISK_1: starting datafile copy\ninput datafile file number=00001 name=\/oracle\/RESTORE\/system.dbf\noutput file name=\/oracle\/fra\/RMANDB\/datafile\/o1_mf_system_jj3sshns_.dbf tag=TAG20210728T202431 RECID=60 STAMP=1079123093\nchannel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:25\nchannel ORA_DISK_1: starting datafile copy\ninput datafile file number=00003 name=\/oracle\/RESTORE\/sysaux.dbf\noutput file name=\/oracle\/fra\/RMANDB\/datafile\/o1_mf_sysaux_jj3st8ld_.dbf tag=TAG20210728T202431 RECID=61 STAMP=1079123121\nchannel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:35\nchannel ORA_DISK_1: starting datafile copy\ninput datafile file number=00004 name=\/oracle\/RESTORE\/undo.tbs\noutput file name=\/oracle\/fra\/RMANDB\/datafile\/o1_mf_undotbs1_jj3svcoz_.dbf tag=TAG20210728T202431 RECID=62 STAMP=1079123146\nchannel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:15\nchannel ORA_DISK_1: starting datafile copy\ninput datafile file number=00005 name=\/oracle\/RESTORE\/ts_cortex_catalog.dbf\noutput file name=\/oracle\/fra\/RMANDB\/datafile\/o1_mf_ts_corte_jj3svts5_.dbf tag=TAG20210728T202431 RECID=63 STAMP=1079123152\nchannel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:07\nchannel ORA_DISK_1: starting datafile copy\ninput datafile file number=00002 name=\/oracle\/RESTORE\/ts_hipo_catalog.dbf\noutput file name=\/oracle\/fra\/RMANDB\/datafile\/o1_mf_ts_hipo__jj3sw1x6_.dbf tag=TAG20210728T202431 RECID=64 STAMP=1079123159\nchannel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:07\nchannel ORA_DISK_1: starting datafile copy\ninput datafile file number=00007 name=\/oracle\/dados\/users.dbf\noutput file name=\/oracle\/fra\/RMANDB\/datafile\/o1_mf_users_jj3sw90n_.dbf tag=TAG20210728T202431 RECID=65 STAMP=1079123161\nchannel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:02\nFinished backup at 2021-07-28:20:26:02\n \nStarting Control File and SPFILE Autobackup at 2021-07-28:20:26:02\npiece handle=\/oracle\/fra\/RMANDB\/autobackup\/2021_07_28\/o1_mf_s_1079123162_jj3swc14_.bkp comment=NONE\nFinished Control File and SPFILE Autobackup at 2021-07-28:20:26:05\n<\/pre><\/div>\n\n\n<p>Removendo o datafile 7:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \\&quot;wp-block-syntaxhighlighter-code\\&quot;\"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\nRMAN&gt; host &#039;rm \/oracle\/dados\/users.dbf&#039;;\n \nhost command complete\n<\/pre><\/div>\n\n\n<p>Realizando o validate do banco de dados, para que seja identificado o problema:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \\&quot;wp-block-syntaxhighlighter-code\\&quot;\"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\nRMAN&gt; host &#039;rm \/oracle\/dados\/users.dbf&#039;;\n \nhost command complete\n \nRMAN&gt; ALTER SYSTEM SWITCH LOGFILE;\n \nStatement processed\n \nRMAN&gt; VALIDATE DATABASE;\n \nStarting validate at 2021-07-28:20:29:23\nusing channel ORA_DISK_1\nchannel ORA_DISK_1: starting validation of datafile\nchannel ORA_DISK_1: specifying datafile(s) for validation\ninput datafile file number=00001 name=\/oracle\/RESTORE\/system.dbf\ninput datafile file number=00003 name=\/oracle\/RESTORE\/sysaux.dbf\ninput datafile file number=00004 name=\/oracle\/RESTORE\/undo.tbs\ninput datafile file number=00005 name=\/oracle\/RESTORE\/ts_cortex_catalog.dbf\ninput datafile file number=00002 name=\/oracle\/RESTORE\/ts_hipo_catalog.dbf\nRMAN-00571: ===========================================================\nRMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============\nRMAN-00571: ===========================================================\nRMAN-03009: failure of validate command on ORA_DISK_1 channel at 07\/28\/2021 20:29:24\nORA-01122: database file 7 failed verification check\nORA-01110: data file 7: &#039;\/oracle\/dados\/users.dbf&#039;\nORA-01565: error in identifying file &#039;\/oracle\/dados\/users.dbf&#039;\nORA-27037: unable to obtain file status\nLinux-x86_64 Error: 2: No such file or directory\nAdditional information: 7\n<\/pre><\/div>\n\n\n<p>A partir daqui, podemos deixar o datafile em quest\u00e3o com status OFFLINE:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \\&quot;wp-block-syntaxhighlighter-code\\&quot;\"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\nRMAN&gt; ALTER DATABASE DATAFILE 7 OFFLINE;\n\nStatement processed\n<\/pre><\/div>\n\n\n<p>Como o nosso backup do tipo image copy est\u00e1 dispon\u00edvel na FRA, conseguimos apenas realizar o SWITCH deste datafile, conforme exemplo abaixo. Nesse caso, a refer\u00eancia dentro do controlfile ser\u00e1 atualizada para considerar a nova localiza\u00e7\u00e3o e nome do datafile 7:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \\&quot;wp-block-syntaxhighlighter-code\\&quot;\"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\nRMAN&gt; SWITCH DATAFILE 7 TO COPY;\n \ndatafile 7 switched to datafile copy &quot;\/oracle\/fra\/RMANDB\/datafile\/o1_mf_users_jj3sw90n_.dbf&quot;\n<\/pre><\/div>\n\n\n<p>Depois disso, nos basta apenas recuperar o datafile e traz\u00ea-lo para ONLINE:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \\&quot;wp-block-syntaxhighlighter-code\\&quot;\"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\nRMAN&gt; RECOVER DATAFILE 7;\n \nStarting recover at 2021-07-28:20:33:22\nusing channel ORA_DISK_1\n \nstarting media recovery\nmedia recovery complete, elapsed time: 00:00:00\n \nFinished recover at 2021-07-28:20:33:23\n \nRMAN&gt; ALTER DATABASE DATAFILE 7 ONLINE;\n \nStatement processed\n<\/pre><\/div>\n\n\n<p>Validando o banco de dados:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \\&quot;wp-block-syntaxhighlighter-code\\&quot;\"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\nRMAN&gt; VALIDATE DATABASE;\n \nStarting validate at 2021-07-28:20:34:02\nusing channel ORA_DISK_1\nchannel ORA_DISK_1: starting validation of datafile\nchannel ORA_DISK_1: specifying datafile(s) for validation\ninput datafile file number=00001 name=\/oracle\/RESTORE\/system.dbf\ninput datafile file number=00003 name=\/oracle\/RESTORE\/sysaux.dbf\ninput datafile file number=00004 name=\/oracle\/RESTORE\/undo.tbs\ninput datafile file number=00005 name=\/oracle\/RESTORE\/ts_cortex_catalog.dbf\ninput datafile file number=00002 name=\/oracle\/RESTORE\/ts_hipo_catalog.dbf\ninput datafile file number=00007 name=\/oracle\/fra\/RMANDB\/datafile\/o1_mf_users_jj3sw90n_.dbf\nchannel ORA_DISK_1: validation complete, elapsed time: 00:00:15\nList of Datafiles\n=================\nFile Status Marked Corrupt Empty Blocks Blocks Examined High SCN\n---- ------ -------------- ------------ --------------- ----------\n1    OK     0              16529        112644          4162617\n  File Name: \/oracle\/RESTORE\/system.dbf\n  Block Type Blocks Failing Blocks Processed\n  ---------- -------------- ----------------\n  Data       0              74921\n  Index      0              13655\n  Other      0              7535\n \nFile Status Marked Corrupt Empty Blocks Blocks Examined High SCN\n---- ------ -------------- ------------ --------------- ----------\n2    OK     0              401          15361           2733896\n  File Name: \/oracle\/RESTORE\/ts_hipo_catalog.dbf\n  Block Type Blocks Failing Blocks Processed\n  ---------- -------------- ----------------\n  Data       0              150\n  Index      0              98\n  Other      0              14711\n \nFile Status Marked Corrupt Empty Blocks Blocks Examined High SCN\n---- ------ -------------- ------------ --------------- ----------\n3    OK     0              16502        93496           4162728\n  File Name: \/oracle\/RESTORE\/sysaux.dbf\n  Block Type Blocks Failing Blocks Processed\n  ---------- -------------- ----------------\n  Data       0              11489\n  Index      0              10275\n  Other      0              55174\n \nFile Status Marked Corrupt Empty Blocks Blocks Examined High SCN\n---- ------ -------------- ------------ --------------- ----------\n4    OK     0              1            39047           4162728\n  File Name: \/oracle\/RESTORE\/undo.tbs\n  Block Type Blocks Failing Blocks Processed\n  ---------- -------------- ----------------\n  Data       0              0\n  Index      0              0\n  Other      0              39039\n \nFile Status Marked Corrupt Empty Blocks Blocks Examined High SCN\n---- ------ -------------- ------------ --------------- ----------\n5    OK     0              505          25601           2790924\n  File Name: \/oracle\/RESTORE\/ts_cortex_catalog.dbf\n  Block Type Blocks Failing Blocks Processed\n  ---------- -------------- ----------------\n  Data       0              175\n  Index      0              135\n  Other      0              24785\n \nFile Status Marked Corrupt Empty Blocks Blocks Examined High SCN\n---- ------ -------------- ------------ --------------- ----------\n7    OK     0              120          2101            3924688\n  File Name: \/oracle\/fra\/RMANDB\/datafile\/o1_mf_users_jj3sw90n_.dbf\n  Block Type Blocks Failing Blocks Processed\n  ---------- -------------- ----------------\n  Data       0              1440\n  Index      0              19\n  Other      0              501\n \nchannel ORA_DISK_1: starting validation of datafile\nchannel ORA_DISK_1: specifying datafile(s) for validation\nincluding current control file for validation\nincluding current SPFILE in backup set\nchannel ORA_DISK_1: validation complete, elapsed time: 00:00:01\nList of Control File and SPFILE\n===============================\nFile Type    Status Blocks Failing Blocks Examined\n------------ ------ -------------- ---------------\nSPFILE       OK     0              2\nControl File OK     0              722\nFinished validate at 2021-07-28:20:34:18\n<\/pre><\/div>\n\n\n<p>Como previsto, o banco est\u00e1 100%, utilizando o nosso datafile na FRA:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \\&quot;wp-block-syntaxhighlighter-code\\&quot;\"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\nRMAN&gt; REPORT SCHEMA;\n \nReport of database schema for database with db_unique_name RMANDB\n \nList of Permanent Datafiles\n===========================\nFile Size(MB) Tablespace           RB segs Datafile Name\n---- -------- -------------------- ------- ------------------------\n1    880      SYSTEM               YES     \/oracle\/RESTORE\/system.dbf\n2    120      TS_HIPO_CATALOG      NO      \/oracle\/RESTORE\/ts_hipo_catalog.dbf\n3    730      SYSAUX               NO      \/oracle\/RESTORE\/sysaux.dbf\n4    305      UNDOTBS1             YES     \/oracle\/RESTORE\/undo.tbs\n5    200      TS_CORTEX_CATALOG    NO      \/oracle\/RESTORE\/ts_cortex_catalog.dbf\n7    16       USERS                NO      \/oracle\/fra\/RMANDB\/datafile\/o1_mf_users_jj3sw90n_.dbf\n \nList of Temporary Files\n=======================\nFile Size(MB) Tablespace           Maxsize(MB) Tempfile Name\n---- -------- -------------------- ----------- --------------------\n1    69       TEMP                 32767       \/oracle\/dados\/RMANDB\/datafile\/o1_mf_temp_h8nyvt1f_.tmp\n<\/pre><\/div>\n\n\n<p>Obs: Este procedimento foi criado pelo senhor Ahmed Baraka (www.ahmedbaraka.com) e foi apenas reproduzido por mim em um laborat\u00f3rio pessoal para fins de aprendizado.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Imaginemos que voc\u00ea precise realizar a recupera\u00e7\u00e3o de um banco de dados, e pense em usar a metodologia tradicional: restaurar os datafiles a partir de um backup e recuper\u00e1-los a partir dos Archives Redologs + ORLs. O que devemos considerar neste cen\u00e1rio \u00e9 que, caso tenhamos um backup do tipo &#8220;Image Copy&#8221;, j\u00e1 dispon\u00edvel em [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[],"class_list":["post-6039","post","type-post","status-publish","format-standard","hentry","category-backup-recovery"],"_links":{"self":[{"href":"https:\/\/swiv.com.br\/index.php\/wp-json\/wp\/v2\/posts\/6039","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/swiv.com.br\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/swiv.com.br\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/swiv.com.br\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/swiv.com.br\/index.php\/wp-json\/wp\/v2\/comments?post=6039"}],"version-history":[{"count":1,"href":"https:\/\/swiv.com.br\/index.php\/wp-json\/wp\/v2\/posts\/6039\/revisions"}],"predecessor-version":[{"id":9070,"href":"https:\/\/swiv.com.br\/index.php\/wp-json\/wp\/v2\/posts\/6039\/revisions\/9070"}],"wp:attachment":[{"href":"https:\/\/swiv.com.br\/index.php\/wp-json\/wp\/v2\/media?parent=6039"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/swiv.com.br\/index.php\/wp-json\/wp\/v2\/categories?post=6039"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/swiv.com.br\/index.php\/wp-json\/wp\/v2\/tags?post=6039"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}