{"id":250,"date":"2015-12-01T17:12:07","date_gmt":"2015-12-01T16:12:07","guid":{"rendered":"https:\/\/ilmarkerm.eu\/blog\/?p=250"},"modified":"2015-12-01T17:12:07","modified_gmt":"2015-12-01T16:12:07","slug":"recatalog-incrementally-updated-image-copy-in-rman","status":"publish","type":"post","link":"https:\/\/ilmarkerm.eu\/blog\/2015\/12\/recatalog-incrementally-updated-image-copy-in-rman\/","title":{"rendered":"Recatalog incrementally updated image copy in RMAN"},"content":{"rendered":"<p>For our backup strategy we are using incrementally updated image copies on most Oracle databases. This method can save a lot of time during restore operations, since you don&#8217;t need to restore full backup and then apply all the incremental backups, you can either restore the full backup directly (or skip restore operation and switch over to the image copy directly). At the same time, taking backups is as easy and fast as taking incremental backups (in Enterprise Edition block change tracking also helps here).<\/p>\n<p>Today I wanted to change the naming scheme of the incrementally updated image copies, in our case the image copies are stored in NFS, not ASM. I expected it to be straign forward&#8230; Rename the files, crosscheck, delete expired and then catalog again (like with normal backupsets). After doing that I tried to update the incremental copy and this is what happened.<\/p>\n<p>First this is my current setup, and my goal was to remove the double <em>dbarep1_<\/em> from the beginning of the file name I added there myself wth the backup format string.<\/p>\n<pre><code class=\"sql\">SQL&gt; select file#, tag, incremental_level, name from v$datafile_copy where deleted='NO' order by 1;\n\n     FILE# TAG                  INCREMENTAL_LEVEL NAME\n---------- -------------------- ----------------- -----------------------------------------------------------------------------------\n         1 IMAGE_COPY_BACKUP                    0 \/nfs\/backup\/dbarep1\/dbarep1_data_D-DBAREP1_I-1714430310_TS-SYSTEM_FNO-1_r8qjk7v2\n         2 IMAGE_COPY_BACKUP                    0 \/nfs\/backup\/dbarep1\/dbarep1_data_D-DBAREP1_I-1714430310_TS-SYSAUX_FNO-2_r6qjk7uc\n         3 IMAGE_COPY_BACKUP                    0 \/nfs\/backup\/dbarep1\/dbarep1_data_D-DBAREP1_I-1714430310_TS-UNDOTBS1_FNO-3_r7qjk7ur\n         4 IMAGE_COPY_BACKUP                    0 \/nfs\/backup\/dbarep1\/dbarep1_data_D-DBAREP1_I-1714430310_TS-UNDOTBS2_FNO-4_r9qjk7va\n         5 IMAGE_COPY_BACKUP                    0 \/nfs\/backup\/dbarep1\/dbarep1_data_D-DBAREP1_I-1714430310_TS-USERS_FNO-5_raqjk7vd\n         7 IMAGE_COPY_BACKUP                    0 \/nfs\/backup\/dbarep1\/dbarep1_data_D-DBAREP1_I-1714430310_TS-SASH_FNO-7_r5qjk7sb\n\n6 rows selected.\n<\/code><\/pre>\n<p>Now rename the files to:<\/p>\n<pre><code>data_D-DBAREP1_I-1714430310_TS-SASH_FNO-7_r5qjk7sb\ndata_D-DBAREP1_I-1714430310_TS-SYSAUX_FNO-2_r6qjk7uc\ndata_D-DBAREP1_I-1714430310_TS-SYSTEM_FNO-1_r8qjk7v2\ndata_D-DBAREP1_I-1714430310_TS-UNDOTBS1_FNO-3_r7qjk7ur\ndata_D-DBAREP1_I-1714430310_TS-UNDOTBS2_FNO-4_r9qjk7va\ndata_D-DBAREP1_I-1714430310_TS-USERS_FNO-5_raqjk7vd\n<\/code><\/pre>\n<p>After renaming I tried to catalog the files again and all looks good at first.<\/p>\n<pre><code>RMAN&gt; crosscheck datafilecopy all;\n\nallocated channel: ORA_DISK_1\nchannel ORA_DISK_1: SID=216 instance=dbarep11 device type=DISK\nvalidation failed for datafile copy\ndatafile copy file name=\/nfs\/backup\/dbarep1\/dbarep1_data_D-DBAREP1_I-1714430310_TS-SYSTEM_FNO-1_r8qjk7v2 RECID=4001 STAMP=897265906\nvalidation failed for datafile copy\ndatafile copy file name=\/nfs\/backup\/dbarep1\/dbarep1_data_D-DBAREP1_I-1714430310_TS-SYSAUX_FNO-2_r6qjk7uc RECID=4003 STAMP=897265908\nvalidation failed for datafile copy\ndatafile copy file name=\/nfs\/backup\/dbarep1\/dbarep1_data_D-DBAREP1_I-1714430310_TS-UNDOTBS1_FNO-3_r7qjk7ur RECID=4002 STAMP=897265906\nvalidation failed for datafile copy\ndatafile copy file name=\/nfs\/backup\/dbarep1\/dbarep1_data_D-DBAREP1_I-1714430310_TS-UNDOTBS2_FNO-4_r9qjk7va RECID=4000 STAMP=897265905\nvalidation failed for datafile copy\ndatafile copy file name=\/nfs\/backup\/dbarep1\/dbarep1_data_D-DBAREP1_I-1714430310_TS-USERS_FNO-5_raqjk7vd RECID=3999 STAMP=897265901\nvalidation failed for datafile copy\ndatafile copy file name=\/nfs\/backup\/dbarep1\/dbarep1_data_D-DBAREP1_I-1714430310_TS-SASH_FNO-7_r5qjk7sb RECID=4004 STAMP=897265910\nCrosschecked 6 objects\n\n\nRMAN&gt; delete expired datafilecopy all;\n\nreleased channel: ORA_DISK_1\nallocated channel: ORA_DISK_1\nchannel ORA_DISK_1: SID=216 instance=dbarep11 device type=DISK\nList of Datafile Copies\n=======================\n\nKey     File S Completion Time Ckp SCN    Ckp Time\n------- ---- - --------------- ---------- ---------------\n990260  1    X 01-DEC-15       6146800878535 01-DEC-15\n        Name: \/nfs\/backup\/dbarep1\/dbarep1_data_D-DBAREP1_I-1714430310_TS-SYSTEM_FNO-1_r8qjk7v2\n        Tag: IMAGE_COPY_BACKUP\n\n990262  2    X 01-DEC-15       6146800878535 01-DEC-15\n        Name: \/nfs\/backup\/dbarep1\/dbarep1_data_D-DBAREP1_I-1714430310_TS-SYSAUX_FNO-2_r6qjk7uc\n        Tag: IMAGE_COPY_BACKUP\n\n990261  3    X 01-DEC-15       6146800878535 01-DEC-15\n        Name: \/nfs\/backup\/dbarep1\/dbarep1_data_D-DBAREP1_I-1714430310_TS-UNDOTBS1_FNO-3_r7qjk7ur\n        Tag: IMAGE_COPY_BACKUP\n\n990259  4    X 01-DEC-15       6146800878535 01-DEC-15\n        Name: \/nfs\/backup\/dbarep1\/dbarep1_data_D-DBAREP1_I-1714430310_TS-UNDOTBS2_FNO-4_r9qjk7va\n        Tag: IMAGE_COPY_BACKUP\n\n990258  5    X 01-DEC-15       6146800878535 01-DEC-15\n        Name: \/nfs\/backup\/dbarep1\/dbarep1_data_D-DBAREP1_I-1714430310_TS-USERS_FNO-5_raqjk7vd\n        Tag: IMAGE_COPY_BACKUP\n\n990263  7    X 01-DEC-15       6146800878535 01-DEC-15\n        Name: \/nfs\/backup\/dbarep1\/dbarep1_data_D-DBAREP1_I-1714430310_TS-SASH_FNO-7_r5qjk7sb\n        Tag: IMAGE_COPY_BACKUP\n\nDo you really want to delete the above objects (enter YES or NO)? yes\ndeleted datafile copy\ndatafile copy file name=\/nfs\/backup\/dbarep1\/dbarep1_data_D-DBAREP1_I-1714430310_TS-SYSTEM_FNO-1_r8qjk7v2 RECID=4001 STAMP=897265906\ndeleted datafile copy\ndatafile copy file name=\/nfs\/backup\/dbarep1\/dbarep1_data_D-DBAREP1_I-1714430310_TS-SYSAUX_FNO-2_r6qjk7uc RECID=4003 STAMP=897265908\ndeleted datafile copy\ndatafile copy file name=\/nfs\/backup\/dbarep1\/dbarep1_data_D-DBAREP1_I-1714430310_TS-UNDOTBS1_FNO-3_r7qjk7ur RECID=4002 STAMP=897265906\ndeleted datafile copy\ndatafile copy file name=\/nfs\/backup\/dbarep1\/dbarep1_data_D-DBAREP1_I-1714430310_TS-UNDOTBS2_FNO-4_r9qjk7va RECID=4000 STAMP=897265905\ndeleted datafile copy\ndatafile copy file name=\/nfs\/backup\/dbarep1\/dbarep1_data_D-DBAREP1_I-1714430310_TS-USERS_FNO-5_raqjk7vd RECID=3999 STAMP=897265901\ndeleted datafile copy\ndatafile copy file name=\/nfs\/backup\/dbarep1\/dbarep1_data_D-DBAREP1_I-1714430310_TS-SASH_FNO-7_r5qjk7sb RECID=4004 STAMP=897265910\nDeleted 6 EXPIRED objects\n\nRMAN&gt; catalog start with '\/nfs\/backup\/dbarep1\/data_';\n\nsearching for all files that match the pattern \/nfs\/backup\/dbarep1\/data_\n\nList of Files Unknown to the Database\n=====================================\nFile Name: \/nfs\/backup\/dbarep1\/data_D-DBAREP1_I-1714430310_TS-SYSAUX_FNO-2_r6qjk7uc\nFile Name: \/nfs\/backup\/dbarep1\/data_D-DBAREP1_I-1714430310_TS-USERS_FNO-5_raqjk7vd\nFile Name: \/nfs\/backup\/dbarep1\/data_D-DBAREP1_I-1714430310_TS-UNDOTBS1_FNO-3_r7qjk7ur\nFile Name: \/nfs\/backup\/dbarep1\/data_D-DBAREP1_I-1714430310_TS-UNDOTBS2_FNO-4_r9qjk7va\nFile Name: \/nfs\/backup\/dbarep1\/data_D-DBAREP1_I-1714430310_TS-SYSTEM_FNO-1_r8qjk7v2\nFile Name: \/nfs\/backup\/dbarep1\/data_D-DBAREP1_I-1714430310_TS-SASH_FNO-7_r5qjk7sb\n\nDo you really want to catalog the above files (enter YES or NO)? yes\ncataloging files...\ncataloging done\n\nList of Cataloged Files\n=======================\nFile Name: \/nfs\/backup\/dbarep1\/data_D-DBAREP1_I-1714430310_TS-SYSAUX_FNO-2_r6qjk7uc\nFile Name: \/nfs\/backup\/dbarep1\/data_D-DBAREP1_I-1714430310_TS-USERS_FNO-5_raqjk7vd\nFile Name: \/nfs\/backup\/dbarep1\/data_D-DBAREP1_I-1714430310_TS-UNDOTBS1_FNO-3_r7qjk7ur\nFile Name: \/nfs\/backup\/dbarep1\/data_D-DBAREP1_I-1714430310_TS-UNDOTBS2_FNO-4_r9qjk7va\nFile Name: \/nfs\/backup\/dbarep1\/data_D-DBAREP1_I-1714430310_TS-SYSTEM_FNO-1_r8qjk7v2\nFile Name: \/nfs\/backup\/dbarep1\/data_D-DBAREP1_I-1714430310_TS-SASH_FNO-7_r5qjk7sb\n<\/code><\/pre>\n<p>RMAN shows that the datafile copies are nicely registered, <strong>with a correct tag<\/strong>:<\/p>\n<pre><code>RMAN&gt; list datafilecopy all;\n\nList of Datafile Copies\n=======================\n\nKey     File S Completion Time Ckp SCN    Ckp Time\n------- ---- - --------------- ---------- ---------------\n991836  1    A 01-DEC-15       6146800878535 01-DEC-15\n        Name: \/nfs\/backup\/dbarep1\/data_D-DBAREP1_I-1714430310_TS-SYSTEM_FNO-1_r8qjk7v2\n        Tag: IMAGE_COPY_BACKUP\n\n991832  2    A 01-DEC-15       6146800878535 01-DEC-15\n        Name: \/nfs\/backup\/dbarep1\/data_D-DBAREP1_I-1714430310_TS-SYSAUX_FNO-2_r6qjk7uc\n        Tag: IMAGE_COPY_BACKUP\n\n991834  3    A 01-DEC-15       6146800878535 01-DEC-15\n        Name: \/nfs\/backup\/dbarep1\/data_D-DBAREP1_I-1714430310_TS-UNDOTBS1_FNO-3_r7qjk7ur\n        Tag: IMAGE_COPY_BACKUP\n\n991835  4    A 01-DEC-15       6146800878535 01-DEC-15\n        Name: \/nfs\/backup\/dbarep1\/data_D-DBAREP1_I-1714430310_TS-UNDOTBS2_FNO-4_r9qjk7va\n        Tag: IMAGE_COPY_BACKUP\n\n991833  5    A 01-DEC-15       6146800878535 01-DEC-15\n        Name: \/nfs\/backup\/dbarep1\/data_D-DBAREP1_I-1714430310_TS-USERS_FNO-5_raqjk7vd\n        Tag: IMAGE_COPY_BACKUP\n\n991837  7    A 01-DEC-15       6146800878535 01-DEC-15\n        Name: \/nfs\/backup\/dbarep1\/data_D-DBAREP1_I-1714430310_TS-SASH_FNO-7_r5qjk7sb\n        Tag: IMAGE_COPY_BACKUP\n<\/code><\/pre>\n<p>And then thinking all is good I tried to refresh that copy, this is what happened:<\/p>\n<pre><code>RMAN&gt; backup incremental level 1 for recover of copy with tag 'image_copy_backup' database;\n\nStarting backup at 01-DEC-15\nusing channel ORA_DISK_1\nno parent backup or copy of datafile 7 found\nno parent backup or copy of datafile 2 found\nno parent backup or copy of datafile 3 found\nno parent backup or copy of datafile 1 found\nno parent backup or copy of datafile 4 found\nno parent backup or copy of datafile 5 found\nchannel ORA_DISK_1: starting datafile copy\ninput datafile file number=00007 name=+DATA\/dbarep1\/datafile\/sash.286.779298095\n...\n<\/code><\/pre>\n<p>RMAN thinks that there is no image copy to update and tries to create a new full image copy! If you have >20TB databases it is an expensive price to pay \ud83d\ude42<br \/>\nLets query the data dictionary directly to see more information about the datafilecopy that was registered:<\/p>\n<pre><code>SQL&gt; select file#, tag, incremental_level, name from v$datafile_copy where deleted='NO' order by 1;\n\n     FILE# TAG                  INCREMENTAL_LEVEL NAME\n---------- -------------------- ----------------- -----------------------------------------------------------------------------------\n         1 IMAGE_COPY_BACKUP                      \/nfs\/backup\/dbarep1\/data_D-DBAREP1_I-1714430310_TS-SYSTEM_FNO-1_r8qjk7v2\n         2 IMAGE_COPY_BACKUP                      \/nfs\/backup\/dbarep1\/data_D-DBAREP1_I-1714430310_TS-SYSAUX_FNO-2_r6qjk7uc\n         3 IMAGE_COPY_BACKUP                      \/nfs\/backup\/dbarep1\/data_D-DBAREP1_I-1714430310_TS-UNDOTBS1_FNO-3_r7qjk7ur\n         4 IMAGE_COPY_BACKUP                      \/nfs\/backup\/dbarep1\/data_D-DBAREP1_I-1714430310_TS-UNDOTBS2_FNO-4_r9qjk7va\n         5 IMAGE_COPY_BACKUP                      \/nfs\/backup\/dbarep1\/data_D-DBAREP1_I-1714430310_TS-USERS_FNO-5_raqjk7vd\n         7 IMAGE_COPY_BACKUP                      \/nfs\/backup\/dbarep1\/data_D-DBAREP1_I-1714430310_TS-SASH_FNO-7_r5qjk7sb\n\n6 rows selected.\n<\/code><\/pre>\n<p>Incremental level is NULL! Catalog start with command did not register the datafiles as a base of incremental backup. <strong>CATALOG START WITH<\/strong> was a wrong command to use. To register datafilecopy properly for incremental updates, there is a separate catalog command: <strong>CATALOG DATAFILECOPY &#8216;filename&#8217; LEVEL 0 TAG &#8216;tagname&#8217;;<\/strong><\/p>\n<p>First I remove the invalid registrations:<\/p>\n<pre><code>change datafilecopy '\/nfs\/backup\/dbarep1\/data_D-DBAREP1_I-1714430310_TS-SYSAUX_FNO-2_r6qjk7uc' uncatalog;\nchange datafilecopy '\/nfs\/backup\/dbarep1\/data_D-DBAREP1_I-1714430310_TS-USERS_FNO-5_raqjk7vd' uncatalog;\nchange datafilecopy '\/nfs\/backup\/dbarep1\/data_D-DBAREP1_I-1714430310_TS-UNDOTBS1_FNO-3_r7qjk7ur' uncatalog;\nchange datafilecopy '\/nfs\/backup\/dbarep1\/data_D-DBAREP1_I-1714430310_TS-UNDOTBS2_FNO-4_r9qjk7va' uncatalog;\nchange datafilecopy '\/nfs\/backup\/dbarep1\/data_D-DBAREP1_I-1714430310_TS-SYSTEM_FNO-1_r8qjk7v2' uncatalog;\nchange datafilecopy '\/nfs\/backup\/dbarep1\/data_D-DBAREP1_I-1714430310_TS-SASH_FNO-7_r5qjk7sb' uncatalog;\n<\/code><\/pre>\n<p>And then register the datafilecopy properly:<\/p>\n<pre><code>catalog datafilecopy '\/nfs\/backup\/dbarep1\/data_D-DBAREP1_I-1714430310_TS-SASH_FNO-7_r5qjk7sb' level 0 tag 'IMAGE_COPY_BACKUP';\ncatalog datafilecopy '\/nfs\/backup\/dbarep1\/data_D-DBAREP1_I-1714430310_TS-SYSAUX_FNO-2_r6qjk7uc' level 0 tag 'IMAGE_COPY_BACKUP';\ncatalog datafilecopy '\/nfs\/backup\/dbarep1\/data_D-DBAREP1_I-1714430310_TS-SYSTEM_FNO-1_r8qjk7v2' level 0 tag 'IMAGE_COPY_BACKUP';\ncatalog datafilecopy '\/nfs\/backup\/dbarep1\/data_D-DBAREP1_I-1714430310_TS-UNDOTBS1_FNO-3_r7qjk7ur' level 0 tag 'IMAGE_COPY_BACKUP';\ncatalog datafilecopy '\/nfs\/backup\/dbarep1\/data_D-DBAREP1_I-1714430310_TS-UNDOTBS2_FNO-4_r9qjk7va' level 0 tag 'IMAGE_COPY_BACKUP';\ncatalog datafilecopy '\/nfs\/backup\/dbarep1\/data_D-DBAREP1_I-1714430310_TS-USERS_FNO-5_raqjk7vd' level 0 tag 'IMAGE_COPY_BACKUP';\n<\/code><\/pre>\n<p>After that incremental update worked again.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>For our backup strategy we are using incrementally updated image copies on most Oracle databases. This method can save a lot of time during restore operations, since you don&#8217;t need to restore full backup and then apply all the incremental backups, you can either restore the full backup directly (or skip restore operation and switch [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2],"tags":[4,44],"class_list":["post-250","post","type-post","status-publish","format-standard","hentry","category-blog-entry","tag-oracle","tag-rman"],"_links":{"self":[{"href":"https:\/\/ilmarkerm.eu\/blog\/wp-json\/wp\/v2\/posts\/250","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ilmarkerm.eu\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ilmarkerm.eu\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ilmarkerm.eu\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/ilmarkerm.eu\/blog\/wp-json\/wp\/v2\/comments?post=250"}],"version-history":[{"count":2,"href":"https:\/\/ilmarkerm.eu\/blog\/wp-json\/wp\/v2\/posts\/250\/revisions"}],"predecessor-version":[{"id":252,"href":"https:\/\/ilmarkerm.eu\/blog\/wp-json\/wp\/v2\/posts\/250\/revisions\/252"}],"wp:attachment":[{"href":"https:\/\/ilmarkerm.eu\/blog\/wp-json\/wp\/v2\/media?parent=250"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ilmarkerm.eu\/blog\/wp-json\/wp\/v2\/categories?post=250"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ilmarkerm.eu\/blog\/wp-json\/wp\/v2\/tags?post=250"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}