{"id":11580,"date":"2018-08-21T14:00:10","date_gmt":"2018-08-21T12:00:10","guid":{"rendered":"https:\/\/www.dbi-services.com\/blog\/restoring-a-database-without-having-any-controlfile-backup\/"},"modified":"2018-08-21T14:00:10","modified_gmt":"2018-08-21T12:00:10","slug":"restoring-a-database-without-having-any-controlfile-backup","status":"publish","type":"post","link":"https:\/\/www.dbi-services.com\/blog\/restoring-a-database-without-having-any-controlfile-backup\/","title":{"rendered":"Restoring a database without having any controlfile backup"},"content":{"rendered":"<p>It should never happen but sometimes it happens. You just lost your datafiles as well as your fast recovery area (probably because most of the time these areas are on the same disks despite the recommendations).<\/p>\n<p>Normal restore operations with RMAN are quite easy and secure as far as you have backupsets for database, archivelogs, and spfile\/controlfile:<\/p>\n<p style=\"padding-left: 30px\">Step 1 &#8211; restore the spfile and start the instance<br \/>\nStep 2 &#8211; restore the controlfile and mount the database<br \/>\nStep 3 &#8211; restore the database (meaning the datafiles)<br \/>\nStep 4 &#8211; recover the database as far as possible (by applying archivelogs)<br \/>\nStep 5 &#8211; open the database in (no)resetlogs<\/p>\n<p>If you cannot go through step 2 because you don&#8217;t have any controlfile backup, you can&#8217;t go further with RMAN, that&#8217;s it. But there is another way to get a controlfile back to work.<\/p>\n<p>Not having the spfile is annoying, but it&#8217;s just a subset of instance parameters, not really important stuff for your data. You can eventually recreate a pfile (you will probably convert it to spfile later) by picking up the non-default parameters in the alert_SID.log, these are located just after the last start of the instance. Or you can create a very basic pfile with very few parameters: at least the db_unique_name, and for this example I need compatible parameter, and a temporary fast recovery area for easy restore of the archivelogs.<\/p>\n<pre class=\"brush: actionscript3; gutter: false; first-line: 1\">vi \/u01\/oradata\/DBTEST1\/initDBTEST1.ora\n*.db_name='DBTEST1'\ncontrol_files='\/u01\/oradata\/DBTEST1\/control01.dbf'\ncompatible=12.1.0.2\ndb_recovery_file_dest='\/u01\/oradata\/fast_recovery_area\/'\ndb_recovery_file_dest_size=10G<\/pre>\n<p>&nbsp;<\/p>\n<p>Fortunately you remember where you put the backup and you found this:<\/p>\n<pre class=\"brush: actionscript3; gutter: false; first-line: 1\">oracle@vmoratest1:\/oracle\/backup\/ [DBTEST1] ls -lrt\ntotal 189828\n-rw-r-----. 1 oracle oinstall   4333568 Aug 20 14:47 DB_34tb1lfb_1_1\n-rw-r-----. 1 oracle oinstall     98304 Aug 20 14:47 DB_36tb1lfd_1_1\n-rw-r-----. 1 oracle oinstall  54304768 Aug 20 14:47 DB_33tb1lfb_1_1\n-rw-r-----. 1 oracle oinstall 121438208 Aug 20 14:47 DB_32tb1lfb_1_1\n-rw-r-----. 1 oracle oinstall     92672 Aug 20 14:49 ARC_3atb1lj7_1_1\n-rw-r-----. 1 oracle oinstall   1730560 Aug 20 14:49 ARC_39tb1lj7_1_1\n-rw-r-----. 1 oracle oinstall   5758464 Aug 20 14:49 ARC_38tb1lj7_1_1\n-rw-r-----. 1 oracle oinstall   6619648 Aug 20 14:49 ARC_37tb1lj7_1_1<\/pre>\n<p>&nbsp;<\/p>\n<p>First of all, start the instance.<\/p>\n<pre class=\"brush: actionscript3; gutter: false; first-line: 1\">sqlplus \/ as sysdba\nSQL&gt; startup nomount pfile='\/u01\/oradata\/DBTEST1\/initDBTEST1.ora';<\/pre>\n<p>&nbsp;<\/p>\n<p>After trying to restore the controlfile from backuppieces inside the backup directory, you found that no backup has a controlfile:<\/p>\n<pre class=\"brush: actionscript3; gutter: false; first-line: 1\">rman target \/\nRMAN&gt; restore controlfile from '\/oracle\/backup\/DB_36tb1lfb_1_1';\n\nStarting restore at 20-AUG-2018 15:53:08\nusing channel ORA_DISK_1\n\nRMAN-00571: ===========================================================\nRMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============\nRMAN-00571: ===========================================================\nRMAN-03002: failure of restore command at 08\/20\/2018 15:53:08\nRMAN-06172: no AUTOBACKUP found or specified handle is not a valid copy or piece\n\nRMAN&gt; restore controlfile from '\/oracle\/backup\/DB_32tb1lfb_1_1';\n\nStarting restore at 20-AUG-2018 15:53:21\nusing channel ORA_DISK_1\n\nchannel ORA_DISK_1: restoring control file\nRMAN-00571: ===========================================================\nRMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============\nRMAN-00571: ===========================================================\nRMAN-03002: failure of restore command at 08\/20\/2018 15:53:21\nORA-19697: standby control file not found in backup set\n\nRMAN&gt; restore controlfile from '\/oracle\/backup\/ARC_3atb1lj7_1_1';\n\nStarting restore at 20-AUG-2018 15:53:56\nusing channel ORA_DISK_1\n\nchannel ORA_DISK_1: restoring control file\nRMAN-00571: ===========================================================\nRMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============\nRMAN-00571: ===========================================================\nRMAN-03002: failure of restore command at 08\/20\/2018 15:53:56\nORA-19870: error while restoring backup piece \/oracle\/backup\/ARC_3atb1lj7_1_1\nORA-19626: backup set type is archived log - can not be processed by this conversation\n\n...<\/pre>\n<p>&nbsp;<\/p>\n<p>Having an instance started is always better than nothing. And through this instance you can have access to many things without actually having a real database. For example, you can use the dbms_backup_restore package: this package is able to restore datafiles without having any controlfile. Very useful for us now. You can easily restore a datafile from a backuppiece but you have to provide the datafile number. A few lines of PL\/SQL code can help you to restore all the datafiles from all the available backuppieces.<\/p>\n<pre class=\"brush: actionscript3; gutter: false; first-line: 1\">cd \/u01\/oradata\/DBTEST1\/\nvi resto.sql\n\nset serveroutput on\ndeclare\n        v_dev           varchar2(30) ;\n        v_rest_ok       boolean;\n        v_df_num        number := 1;\n        v_df_max        number := 30;\n        v_bck_piece     varchar2(256) := '&amp;1';\n        v_rest_folder   varchar2(226) := '\/u01\/oradata\/DBTEST1\/';\n        v_rest_df       varchar2(256);\nbegin\n       v_dev := dbms_backup_restore.deviceallocate;\n       while v_df_num &lt;= v_df_max loop\n                v_rest_df := v_rest_folder||'DF_'||lpad(v_df_num,4,'0');\n                dbms_backup_restore.restoreSetDatafile;\n                dbms_backup_restore.restoreDataFileTo(dfnumber=&gt;v_df_num,toname=&gt;v_rest_df);\n                BEGIN\n                        dbms_backup_restore.restoreBackupPiece(done=&gt;v_rest_ok,handle=&gt;v_bck_piece);\n                EXCEPTION\n                        WHEN OTHERS\n                        THEN\n                                v_rest_ok := FALSE;\n                                -- dbms_output.put_line('Datafile '||v_df_num||' is not in this piece');\n                END;\n                if v_rest_ok THEN\n                        dbms_output.put_line('Datafile '||v_df_num||' is restored : '||v_rest_df);\n                end if;\n                v_df_num := v_df_num + 1;\n        end loop;\n        dbms_backup_restore.deviceDeallocate;\nend;\n\/\nexit;<\/pre>\n<p>&nbsp;<\/p>\n<p>Let&#8217;s iterate this anonymous PL\/SQL block for each backuppiece in your backup folder:<\/p>\n<pre class=\"brush: actionscript3; gutter: false; first-line: 1\">for a in `find \/oracle\/backup\/ -name DB*`; do sqlplus -s \/ as sysdba @resto $a; done;\n\nold   6:     v_bck_piece    varchar2(256) := '&amp;1';\nnew   6:     v_bck_piece    varchar2(256) := '\/oracle\/backup\/DB_32tb1lfb_1_1';\nDatafile 1 is restored : \/u01\/oradata\/DBTEST1\/DF_0001.dbf\nDatafile 4 is restored : \/u01\/oradata\/DBTEST1\/DF_0004.dbf\nDatafile 9 is restored : \/u01\/oradata\/DBTEST1\/DF_0009.dbf\n\nPL\/SQL procedure successfully completed.\n\nold   6:     v_bck_piece    varchar2(256) := '&amp;1';\nnew   6:     v_bck_piece    varchar2(256) := '\/oracle\/backup\/DB_33tb1lfb_1_1';\nDatafile 2 is restored : \/u01\/oradata\/DBTEST1\/DF_0002.dbf\nDatafile 7 is restored : \/u01\/oradata\/DBTEST1\/DF_0007.dbf\nDatafile 8 is restored : \/u01\/oradata\/DBTEST1\/DF_0008.dbf\n\nPL\/SQL procedure successfully completed.\n\nold   6:     v_bck_piece    varchar2(256) := '&amp;1';\nnew   6:     v_bck_piece    varchar2(256) := '\/oracle\/backup\/DB_36tb1lfd_1_1';\n\nPL\/SQL procedure successfully completed.\n\nold   6:     v_bck_piece    varchar2(256) := '&amp;1';\nnew   6:     v_bck_piece    varchar2(256) := '\/oracle\/backup\/DB_34tb1lfb_1_1';\nDatafile 3 is restored : \/u01\/oradata\/DBTEST1\/DF_0003.dbf\nDatafile 5 is restored : \/u01\/oradata\/DBTEST1\/DF_0005.dbf\nDatafile 6 is restored : \/u01\/oradata\/DBTEST1\/DF_0006.dbf\n\nPL\/SQL procedure successfully completed.<\/pre>\n<p>&nbsp;<\/p>\n<p>Well done! 9 datafiles were restored. Now look at your folder, you&#8217;ll find the 9 datafiles, actually all your database if your backup is reliable:<\/p>\n<pre class=\"brush: actionscript3; gutter: false; first-line: 1\">ls -lrt \/u01\/oradata\/DBTEST1\/\n\ntotal 2017372\n-rw-r--r--. 1 oracle oinstall      1035 Aug 20 23:05 resto.sql\n-rw-r--r--. 1 oracle oinstall        91 Aug 20 23:12 initDBTEST1.ora\n-rw-r-----. 1 oracle oinstall 734011392 Aug 20 23:15 DF_0001.dbf\n-rw-r-----. 1 oracle oinstall   5251072 Aug 20 23:15 DF_0004.dbf\n-rw-r-----. 1 oracle oinstall  52436992 Aug 20 23:15 DF_0009.dbf\n-rw-r-----. 1 oracle oinstall 576724992 Aug 20 23:15 DF_0002.dbf\n-rw-r-----. 1 oracle oinstall  52436992 Aug 20 23:15 DF_0007.dbf\n-rw-r-----. 1 oracle oinstall  52436992 Aug 20 23:15 DF_0008.dbf\n-rw-r-----. 1 oracle oinstall 487596032 Aug 20 23:15 DF_0003.dbf\n-rw-r-----. 1 oracle oinstall  52436992 Aug 20 23:15 DF_0005.dbf\n-rw-r-----. 1 oracle oinstall  52436992 Aug 20 23:15 DF_0006.dbf<\/pre>\n<p>&nbsp;<\/p>\n<p>You can now manually create the controlfile with these datafiles (you just have to remember the characterset of your database):<\/p>\n<pre class=\"brush: actionscript3; gutter: false; first-line: 1\">sqlplus \/ as sysdba\n\nCREATE CONTROLFILE REUSE DATABASE \"DBTEST1\" RESETLOGS  ARCHIVELOG\n      MAXLOGFILES 16\n      MAXLOGMEMBERS 3\n      MAXDATAFILES 100\n      MAXINSTANCES 8\n      MAXLOGHISTORY 2073\nLOGFILE\n    GROUP 1 '\/u01\/oradata\/DBTEST1\/redo01.rdo'  SIZE 100M BLOCKSIZE 512,\n    GROUP 2 '\/u01\/oradata\/DBTEST1\/redo02.rdo'  SIZE 100M BLOCKSIZE 512,\n    GROUP 3 '\/u01\/oradata\/DBTEST1\/redo03.rdo'  SIZE 100M BLOCKSIZE 512\nDATAFILE\n    '\/u01\/oradata\/DBTEST1\/DF_0001.dbf',\n    '\/u01\/oradata\/DBTEST1\/DF_0002.dbf',\n    '\/u01\/oradata\/DBTEST1\/DF_0003.dbf',\n    '\/u01\/oradata\/DBTEST1\/DF_0004.dbf',\n    '\/u01\/oradata\/DBTEST1\/DF_0005.dbf',\n    '\/u01\/oradata\/DBTEST1\/DF_0006.dbf',\n    '\/u01\/oradata\/DBTEST1\/DF_0007.dbf',\n    '\/u01\/oradata\/DBTEST1\/DF_0008.dbf',\n    '\/u01\/oradata\/DBTEST1\/DF_0009.dbf'\nCHARACTER SET AL32UTF8 ;\n\n\nControl file created.<\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"brush: actionscript3; gutter: false; first-line: 1\">ls -lrt \/u01\/oradata\/DBTEST1\/\n\ntotal 2029804\n-rw-r--r--. 1 oracle oinstall      1035 Aug 20 23:05 resto.sql\n-rw-r--r--. 1 oracle oinstall        91 Aug 20 23:12 initDBTEST1.ora\n-rw-r-----. 1 oracle oinstall 734011392 Aug 20 23:15 DF_0001.dbf\n-rw-r-----. 1 oracle oinstall   5251072 Aug 20 23:15 DF_0004.dbf\n-rw-r-----. 1 oracle oinstall  52436992 Aug 20 23:15 DF_0009.dbf\n-rw-r-----. 1 oracle oinstall 576724992 Aug 20 23:15 DF_0002.dbf\n-rw-r-----. 1 oracle oinstall  52436992 Aug 20 23:15 DF_0007.dbf\n-rw-r-----. 1 oracle oinstall  52436992 Aug 20 23:15 DF_0008.dbf\n-rw-r-----. 1 oracle oinstall 487596032 Aug 20 23:15 DF_0003.dbf\n-rw-r-----. 1 oracle oinstall  52436992 Aug 20 23:15 DF_0005.dbf\n-rw-r-----. 1 oracle oinstall  52436992 Aug 20 23:15 DF_0006.dbf\n-rw-r-----. 1 oracle oinstall  12730368 Aug 20 23:24 control01.dbf<\/pre>\n<p>&nbsp;<\/p>\n<p>What a relief to see pfile, controlfile and datafiles all together again!<\/p>\n<p>Work is not yet finished because the datafiles are probably inconsistent. There is no need to mount the database as it&#8217;s already mounted, and it&#8217;s now possible to catalog all your\u00a0 backuppieces for some kind of RMAN catalog restore:<\/p>\n<pre class=\"brush: actionscript3; gutter: false; first-line: 1\">rman target \/\ncatalog start with '\/oracle\/backup\/';\n\nusing target database control file instead of recovery catalog\nsearching for all files that match the pattern \/oracle\/backup\/\n\nList of Files Unknown to the Database\n=====================================\nFile Name: \/oracle\/backup\/DB_32tb1lfb_1_1\nFile Name: \/oracle\/backup\/ARC_37tb1lj7_1_1\nFile Name: \/oracle\/backup\/ARC_39tb1lj7_1_1\nFile Name: \/oracle\/backup\/DB_33tb1lfb_1_1\nFile Name: \/oracle\/backup\/DB_36tb1lfd_1_1\nFile Name: \/oracle\/backup\/ARC_3atb1lj7_1_1\nFile Name: \/oracle\/backup\/DB_34tb1lfb_1_1\nFile Name: \/oracle\/backup\/ARC_38tb1lj7_1_1\n\nDo you really want to catalog the above files (enter YES or NO)? YES\n\ncataloging files...\ncataloging done\n\nList of Cataloged Files\n=======================\nFile Name: \/oracle\/backup\/DB_32tb1lfb_1_1\nFile Name: \/oracle\/backup\/ARC_37tb1lj7_1_1\nFile Name: \/oracle\/backup\/ARC_39tb1lj7_1_1\nFile Name: \/oracle\/backup\/DB_33tb1lfb_1_1\nFile Name: \/oracle\/backup\/DB_36tb1lfd_1_1\nFile Name: \/oracle\/backup\/ARC_3atb1lj7_1_1\nFile Name: \/oracle\/backup\/DB_34tb1lfb_1_1\nFile Name: \/oracle\/backup\/ARC_38tb1lj7_1_1<\/pre>\n<p>&nbsp;<\/p>\n<p>You now need to restore the archivelogs:<\/p>\n<pre class=\"brush: actionscript3; gutter: false; first-line: 1\">RMAN&gt; restore archivelog all;\n\nStarting restore at 20-AUG-2018 23:43:47\nusing target database control file instead of recovery catalog\nallocated channel: ORA_DISK_1\nchannel ORA_DISK_1: SID=23 device type=DISK\n\nchannel ORA_DISK_1: starting archived log restore to default destination\nchannel ORA_DISK_1: restoring archived log\narchived log thread=1 sequence=44\nchannel ORA_DISK_1: reading from backup piece \/oracle\/backup\/ARC_39tb1lj7_1_1\nchannel ORA_DISK_1: piece handle=\/oracle\/backup\/ARC_39tb1lj7_1_1 tag=TAG20180820T144911\nchannel ORA_DISK_1: restored backup piece 1\nchannel ORA_DISK_1: restore complete, elapsed time: 00:00:01\nchannel ORA_DISK_1: starting archived log restore to default destination\nchannel ORA_DISK_1: restoring archived log\narchived log thread=1 sequence=45\nchannel ORA_DISK_1: reading from backup piece \/oracle\/backup\/ARC_38tb1lj7_1_1\nchannel ORA_DISK_1: piece handle=\/oracle\/backup\/ARC_38tb1lj7_1_1 tag=TAG20180820T144911\nchannel ORA_DISK_1: restored backup piece 1\nchannel ORA_DISK_1: restore complete, elapsed time: 00:00:01\nchannel ORA_DISK_1: starting archived log restore to default destination\nchannel ORA_DISK_1: restoring archived log\narchived log thread=1 sequence=46\nchannel ORA_DISK_1: reading from backup piece \/oracle\/backup\/ARC_37tb1lj7_1_1\nchannel ORA_DISK_1: piece handle=\/oracle\/backup\/ARC_37tb1lj7_1_1 tag=TAG20180820T144911\nchannel ORA_DISK_1: restored backup piece 1\nchannel ORA_DISK_1: restore complete, elapsed time: 00:00:01\nchannel ORA_DISK_1: starting archived log restore to default destination\nchannel ORA_DISK_1: restoring archived log\narchived log thread=1 sequence=47\nchannel ORA_DISK_1: reading from backup piece \/oracle\/backup\/ARC_3atb1lj7_1_1\nchannel ORA_DISK_1: piece handle=\/oracle\/backup\/ARC_3atb1lj7_1_1 tag=TAG20180820T144911\nchannel ORA_DISK_1: restored backup piece 1\nchannel ORA_DISK_1: restore complete, elapsed time: 00:00:01\nFinished restore at 20-AUG-2018 23:43:52<\/pre>\n<p>&nbsp;<\/p>\n<p>Now it&#8217;s probably possible to recover the database:<\/p>\n<pre class=\"brush: actionscript3; gutter: false; first-line: 1\">sqlplus \/ as sysdba\n\nSQL&gt; recover database until cancel using backup controlfile;\nORA-00279: change 1386561 generated at 08\/20\/2018 14:47:07 needed for thread 1\nORA-00289: suggestion :\n\/u01\/oradata\/fast_recovery_area\/DBTEST1\/archivelog\/2018_08_21\/o1_mf_1_47_fqplx2l\nn_.arc\nORA-00280: change 1386561 for thread 1 is in sequence #47\n\n\nSpecify log: {&lt;RET&gt;=suggested | filename | AUTO | CANCEL}\nAUTO\nORA-00279: change 1386635 generated at 08\/20\/2018 14:49:10 needed for thread 1\nORA-00289: suggestion :\n\/u01\/oradata\/fast_recovery_area\/DBTEST1\/archivelog\/2018_08_21\/o1_mf_1_48_%u_.arc\nORA-00280: change 1386635 for thread 1 is in sequence #48\nORA-00278: log file\n'\/u01\/oradata\/fast_recovery_area\/DBTEST1\/archivelog\/2018_08_21\/o1_mf_1_47_fqplx2\nln_.arc' no longer needed for this recovery\n\n\nORA-00308: cannot open archived log\n'\/u01\/oradata\/fast_recovery_area\/DBTEST1\/archivelog\/2018_08_21\/o1_mf_1_48_%u_.ar\nc'\nORA-27037: unable to obtain file status\nLinux-x86_64 Error: 2: No such file or directory\nAdditional information: 3<\/pre>\n<p>&nbsp;<\/p>\n<p>Last error is normal because Oracle didn&#8217;t know the sequence 48 never existed.<\/p>\n<p>Now all the archivelogs are applied, fingers crossed for the last operation that is supposed to bring back the database to life:<\/p>\n<pre class=\"brush: actionscript3; gutter: false; first-line: 1\">SQL&gt; alter database open resetlogs;\n\nDatabase altered.\n\nSQL&gt; select instance_name, status from v$instance;\n\nINSTANCE_NAME     STATUS\n---------------- ------------\nDBTEST1      OPEN\n\nSQL&gt; select file_name from dba_data_files;\n\nFILE_NAME\n--------------------------------------------------------------------------------\n\/u01\/oradata\/DBTEST1\/DF_0001.dbf\n\/u01\/oradata\/DBTEST1\/DF_0002.dbf\n\/u01\/oradata\/DBTEST1\/DF_0003.dbf\n\/u01\/oradata\/DBTEST1\/DF_0004.dbf\n\/u01\/oradata\/DBTEST1\/DF_0005.dbf\n\/u01\/oradata\/DBTEST1\/DF_0007.dbf\n\/u01\/oradata\/DBTEST1\/DF_0006.dbf\n\/u01\/oradata\/DBTEST1\/DF_0009.dbf\n\/u01\/oradata\/DBTEST1\/DF_0008.dbf\n\n9 rows selected.<\/pre>\n<p>Yes everything is OK!!! Apart from generic name for your datafiles, a single controlfile, no spfile, default-configured redologs and probably no temporary tablespace. But the database is up and running, and you feel like a hero. Or you just manage to keep your job \ud83d\ude09<\/p>\n","protected":false},"excerpt":{"rendered":"<p>It should never happen but sometimes it happens. You just lost your datafiles as well as your fast recovery area (probably because most of the time these areas are on the same disks despite the recommendations). Normal restore operations with RMAN are quite easy and secure as far as you have backupsets for database, archivelogs, [&hellip;]<\/p>\n","protected":false},"author":45,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[229,198,59],"tags":[1433,60,61,1439,1440,1441,1442,854,270],"type_dbi":[],"class_list":["post-11580","post","type-post","status-publish","format-standard","hentry","category-database-administration-monitoring","category-database-management","category-oracle","tag-11g","tag-12c","tag-18c","tag-backupset-without-controlfile","tag-incomplete-backup","tag-lost-controlfile","tag-missing-controlfile","tag-restore","tag-rman"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.2 (Yoast SEO v27.2) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Restoring a database without having any controlfile backup - dbi Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.dbi-services.com\/blog\/restoring-a-database-without-having-any-controlfile-backup\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Restoring a database without having any controlfile backup\" \/>\n<meta property=\"og:description\" content=\"It should never happen but sometimes it happens. You just lost your datafiles as well as your fast recovery area (probably because most of the time these areas are on the same disks despite the recommendations). Normal restore operations with RMAN are quite easy and secure as far as you have backupsets for database, archivelogs, [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dbi-services.com\/blog\/restoring-a-database-without-having-any-controlfile-backup\/\" \/>\n<meta property=\"og:site_name\" content=\"dbi Blog\" \/>\n<meta property=\"article:published_time\" content=\"2018-08-21T12:00:10+00:00\" \/>\n<meta name=\"author\" content=\"J\u00e9r\u00f4me Dubar\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"J\u00e9r\u00f4me Dubar\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"11 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/restoring-a-database-without-having-any-controlfile-backup\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/restoring-a-database-without-having-any-controlfile-backup\/\"},\"author\":{\"name\":\"J\u00e9r\u00f4me Dubar\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/0fb4bbf128b4cda2f96d662dec2baedd\"},\"headline\":\"Restoring a database without having any controlfile backup\",\"datePublished\":\"2018-08-21T12:00:10+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/restoring-a-database-without-having-any-controlfile-backup\/\"},\"wordCount\":591,\"commentCount\":1,\"keywords\":[\"11g\",\"12c\",\"18c\",\"backupset without controlfile\",\"incomplete backup\",\"lost controlfile\",\"missing controlfile\",\"Restore\",\"RMAN\"],\"articleSection\":[\"Database Administration &amp; Monitoring\",\"Database management\",\"Oracle\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/restoring-a-database-without-having-any-controlfile-backup\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/restoring-a-database-without-having-any-controlfile-backup\/\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/restoring-a-database-without-having-any-controlfile-backup\/\",\"name\":\"Restoring a database without having any controlfile backup - dbi Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#website\"},\"datePublished\":\"2018-08-21T12:00:10+00:00\",\"author\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/0fb4bbf128b4cda2f96d662dec2baedd\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/restoring-a-database-without-having-any-controlfile-backup\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/restoring-a-database-without-having-any-controlfile-backup\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/restoring-a-database-without-having-any-controlfile-backup\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\/\/www.dbi-services.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Restoring a database without having any controlfile backup\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#website\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/\",\"name\":\"dbi Blog\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.dbi-services.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/0fb4bbf128b4cda2f96d662dec2baedd\",\"name\":\"J\u00e9r\u00f4me Dubar\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/secure.gravatar.com\/avatar\/efaa5a7def0aa4cdaf49a470fb4a7641a3ea6e378ae1455096a0933f99f46d6b?s=96&d=mm&r=g\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/efaa5a7def0aa4cdaf49a470fb4a7641a3ea6e378ae1455096a0933f99f46d6b?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/efaa5a7def0aa4cdaf49a470fb4a7641a3ea6e378ae1455096a0933f99f46d6b?s=96&d=mm&r=g\",\"caption\":\"J\u00e9r\u00f4me Dubar\"},\"description\":\"J\u00e9r\u00f4me Dubar has more than 15 years of experience in the field of Information Technology. Ten years ago, he specialized in the Oracle Database technology. His expertise is focused on database architectures, high availability (RAC), disaster recovery (DataGuard), backups (RMAN), performance analysis and tuning (AWR\/statspack), migration, consolidation and appliances, especially ODA (his main projects during the last years). Prior to joining dbi services, J\u00e9r\u00f4me Dubar worked in a Franco-Belgian IT service company as Database team manager and main consultant for 7 years. He also worked for 5 years in a software editor company as technical consultant across France. He was also teaching Oracle Database lessons for 9 years. J\u00e9r\u00f4me Dubar holds a Computer Engineering degree from the Lille Sciences and Technologies university in northern France. His branch-related experience covers the public sector, retail, industry, banking, health, e-commerce and IT sectors.\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/author\/jerome-dubar\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Restoring a database without having any controlfile backup - dbi Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.dbi-services.com\/blog\/restoring-a-database-without-having-any-controlfile-backup\/","og_locale":"en_US","og_type":"article","og_title":"Restoring a database without having any controlfile backup","og_description":"It should never happen but sometimes it happens. You just lost your datafiles as well as your fast recovery area (probably because most of the time these areas are on the same disks despite the recommendations). Normal restore operations with RMAN are quite easy and secure as far as you have backupsets for database, archivelogs, [&hellip;]","og_url":"https:\/\/www.dbi-services.com\/blog\/restoring-a-database-without-having-any-controlfile-backup\/","og_site_name":"dbi Blog","article_published_time":"2018-08-21T12:00:10+00:00","author":"J\u00e9r\u00f4me Dubar","twitter_card":"summary_large_image","twitter_misc":{"Written by":"J\u00e9r\u00f4me Dubar","Est. reading time":"11 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.dbi-services.com\/blog\/restoring-a-database-without-having-any-controlfile-backup\/#article","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/restoring-a-database-without-having-any-controlfile-backup\/"},"author":{"name":"J\u00e9r\u00f4me Dubar","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/0fb4bbf128b4cda2f96d662dec2baedd"},"headline":"Restoring a database without having any controlfile backup","datePublished":"2018-08-21T12:00:10+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/restoring-a-database-without-having-any-controlfile-backup\/"},"wordCount":591,"commentCount":1,"keywords":["11g","12c","18c","backupset without controlfile","incomplete backup","lost controlfile","missing controlfile","Restore","RMAN"],"articleSection":["Database Administration &amp; Monitoring","Database management","Oracle"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.dbi-services.com\/blog\/restoring-a-database-without-having-any-controlfile-backup\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.dbi-services.com\/blog\/restoring-a-database-without-having-any-controlfile-backup\/","url":"https:\/\/www.dbi-services.com\/blog\/restoring-a-database-without-having-any-controlfile-backup\/","name":"Restoring a database without having any controlfile backup - dbi Blog","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/#website"},"datePublished":"2018-08-21T12:00:10+00:00","author":{"@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/0fb4bbf128b4cda2f96d662dec2baedd"},"breadcrumb":{"@id":"https:\/\/www.dbi-services.com\/blog\/restoring-a-database-without-having-any-controlfile-backup\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dbi-services.com\/blog\/restoring-a-database-without-having-any-controlfile-backup\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.dbi-services.com\/blog\/restoring-a-database-without-having-any-controlfile-backup\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.dbi-services.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Restoring a database without having any controlfile backup"}]},{"@type":"WebSite","@id":"https:\/\/www.dbi-services.com\/blog\/#website","url":"https:\/\/www.dbi-services.com\/blog\/","name":"dbi Blog","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.dbi-services.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/0fb4bbf128b4cda2f96d662dec2baedd","name":"J\u00e9r\u00f4me Dubar","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/efaa5a7def0aa4cdaf49a470fb4a7641a3ea6e378ae1455096a0933f99f46d6b?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/efaa5a7def0aa4cdaf49a470fb4a7641a3ea6e378ae1455096a0933f99f46d6b?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/efaa5a7def0aa4cdaf49a470fb4a7641a3ea6e378ae1455096a0933f99f46d6b?s=96&d=mm&r=g","caption":"J\u00e9r\u00f4me Dubar"},"description":"J\u00e9r\u00f4me Dubar has more than 15 years of experience in the field of Information Technology. Ten years ago, he specialized in the Oracle Database technology. His expertise is focused on database architectures, high availability (RAC), disaster recovery (DataGuard), backups (RMAN), performance analysis and tuning (AWR\/statspack), migration, consolidation and appliances, especially ODA (his main projects during the last years). Prior to joining dbi services, J\u00e9r\u00f4me Dubar worked in a Franco-Belgian IT service company as Database team manager and main consultant for 7 years. He also worked for 5 years in a software editor company as technical consultant across France. He was also teaching Oracle Database lessons for 9 years. J\u00e9r\u00f4me Dubar holds a Computer Engineering degree from the Lille Sciences and Technologies university in northern France. His branch-related experience covers the public sector, retail, industry, banking, health, e-commerce and IT sectors.","url":"https:\/\/www.dbi-services.com\/blog\/author\/jerome-dubar\/"}]}},"_links":{"self":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/11580","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/users\/45"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/comments?post=11580"}],"version-history":[{"count":0,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/11580\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media?parent=11580"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/categories?post=11580"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/tags?post=11580"},{"taxonomy":"type","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/type_dbi?post=11580"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}