Oracle数据库数据恢复、性能优化

找回密码
注册
搜索
热搜: 活动 交友 discuz
发新帖

351

积分

0

好友

8

主题
1#
发表于 2012-5-19 06:47:49 | 查看: 6085| 回复: 5
版本11.2.0.3

只有数据文件的rman备份和归档日志,有控制文件的创建脚本,数据文件和控制文件全部丢失,并且没有控制文件备份,有没有办法能恢复数据库?

[ 本帖最后由 gdpr-dba 于 2012-5-19 11:30 编辑 ]
6#
发表于 2012-5-22 10:38:53
在没有控制文件 无法mount db的情况下 可以利用内置的dbms_backup_restore 包从 rman备份中抽取文件


下面是例子:

ODM TEST:
  1. RMAN> list backup of database;

  2. using target database control file instead of recovery catalog

  3. List of Backup Sets
  4. ===================

  5. BS Key  Type LV Size       Device Type Elapsed Time Completion Time
  6. ------- ---- -- ---------- ----------- ------------ ---------------
  7. 15      Full    2.46G      DISK        00:00:19     21-MAY-12      
  8.         BP Key: 17   Status: AVAILABLE  Compressed: NO  Tag: TAG20120521T111811
  9.         Piece Name: /s01/0jnbhhnj_1_1.bak
  10.   List of Datafiles in backup set 15
  11.   File LV Type Ckp SCN    Ckp Time  Name
  12.   ---- -- ---- ---------- --------- ----
  13.   1       Full 2706191    21-MAY-12 /s01/oradata/G10R25/datafile/o1_mf_system_7ch7d4mn_.dbf
  14.   2       Full 2706191    21-MAY-12 /s01/oradata/G10R25/datafile/o1_mf_undotbs1_7ch7d4nt_.dbf
  15.   3       Full 2706191    21-MAY-12 /s01/oradata/G10R25/datafile/o1_mf_sysaux_7ch7d4n2_.dbf
  16.   4       Full 2706191    21-MAY-12 /s01/oradata/G10R25/datafile/o1_mf_users_7ch7d4nx_.dbf
  17.   5       Full 2706191    21-MAY-12 /s01/oradata/G10R25/datafile/o1_mf_example_7ch7f9vx_.dbf
  18.   6       Full 2706191    21-MAY-12 /s01/oradata/G10R25/datafile/o1_mf_bct_test_7tgwoyyd_.dbf
  19.   7       Full 2706191    21-MAY-12 /s01/oradata/G10R25/datafile/o1_mf_bigs_7tnktkkv_.dbf
  20.   8       Full 2706191    21-MAY-12 /s01/oradata/G10R25/datafile/o1_mf_testfree_7tt5m8om_.dbf

  21. BS Key  Type LV Size       Device Type Elapsed Time Completion Time
  22. ------- ---- -- ---------- ----------- ------------ ---------------
  23. 17      Full    2.46G      DISK        00:00:17     21-MAY-12      
  24.         BP Key: 19   Status: AVAILABLE  Compressed: NO  Tag: TAG20120521T111914
  25.         Piece Name: /s01/0lnbhhpi_1_1.bak
  26.   List of Datafiles in backup set 17
  27.   File LV Type Ckp SCN    Ckp Time  Name
  28.   ---- -- ---- ---------- --------- ----
  29.   1       Full 2706226    21-MAY-12 /s01/oradata/G10R25/datafile/o1_mf_system_7ch7d4mn_.dbf
  30.   2       Full 2706226    21-MAY-12 /s01/oradata/G10R25/datafile/o1_mf_undotbs1_7ch7d4nt_.dbf
  31.   3       Full 2706226    21-MAY-12 /s01/oradata/G10R25/datafile/o1_mf_sysaux_7ch7d4n2_.dbf
  32.   4       Full 2706226    21-MAY-12 /s01/oradata/G10R25/datafile/o1_mf_users_7ch7d4nx_.dbf
  33.   5       Full 2706226    21-MAY-12 /s01/oradata/G10R25/datafile/o1_mf_example_7ch7f9vx_.dbf
  34.   6       Full 2706226    21-MAY-12 /s01/oradata/G10R25/datafile/o1_mf_bct_test_7tgwoyyd_.dbf
  35.   7       Full 2706226    21-MAY-12 /s01/oradata/G10R25/datafile/o1_mf_bigs_7tnktkkv_.dbf
  36.   8       Full 2706226    21-MAY-12 /s01/oradata/G10R25/datafile/o1_mf_testfree_7tt5m8om_.dbf







  37. SQL> alter database backup controlfile to trace;

  38. Database altered.

  39. SQL> oradebug setmypid;
  40. Statement processed.
  41. SQL> oradebug tracefile_name
  42. /s01/admin/G10R25/udump/g10r25_ora_5483.trc
  43. SQL>
  44. SQL>
  45. SQL> shutdown immediate;





  46. DECLARE
  47.   v_dev  varchar2(50); -- device type allocated for restore
  48.   v_done boolean := false; -- has the datafile been fully extracted yet
  49.   type t_fileTable is table of varchar2(255) index by binary_integer;
  50.   v_fileTable t_fileTable; -- Stores the backuppiece names
  51.   v_maxPieces number := 1; -- Number of backuppieces in backupset
  52. BEGIN

  53.   -- Initialise the filetable and number of backup pieces in the backupset
  54.   -- This section of code MUST be edited to reflect the customer's available
  55.   -- backupset before the procedure is compiled and run. In this example, the
  56.   -- backupset consists of 4 pieces:

  57.   v_fileTable(1) := '/s01/0jnbhhnj_1_1.bak';
  58.   v_maxPieces := 1;

  59.   -- Allocate a device. In this example, I have specified 'sbt_tape' as I am
  60.   -- reading backuppieces from the media manager. If the backuppiece is on disk,
  61.   -- specify type=>null

  62.   v_dev := sys.dbms_backup_restore.deviceAllocate(type  => NULL,
  63.                                                   ident => 't1');



  64.   -- Begin the restore conversation

  65.   sys.dbms_backup_restore.restoreSetDatafile;

  66.   -- Specify where the datafile is to be recreated

  67.   sys.dbms_backup_restore.restoreDataFileTo(dfnumber => 1,
  68.                                             toname   => '/s01/oradata/G10R25/datafile/o1_mf_system_7ch7d4mn_.dbf');

  69.   -- Restore the datafile

  70.   FOR i IN 1 .. v_maxPieces LOOP
  71.     sys.dbms_backup_restore.restoreBackupPiece(done   => v_done,
  72.                                                handle => v_fileTable(i),
  73.                                                params => null);
  74.     IF v_done THEN
  75.       GOTO all_done;
  76.     END IF;
  77.   END LOOP;

  78.   <<all_done>>
  79. -- Deallocate the device
  80.   sys.dbms_backup_restore.deviceDeallocate;

  81. END;
  82. /



  83. [oracle@vrh8 datafile]$ cd /s01/oradata/G10R25/datafile/

  84. [oracle@vrh8 datafile]$ ls -lh *
  85. -rw-r----- 1 oracle oinstall 801M May 21 22:22 o1_mf_unknown_7voy2grh_.dbf



  86. SQL> CREATE CONTROLFILE REUSE DATABASE "G10R25" NORESETLOGS  ARCHIVELOG
  87.   2      MAXLOGFILES 16
  88.   3      MAXLOGMEMBERS 3
  89.   4      MAXDATAFILES 100
  90.   5      MAXINSTANCES 8
  91.   6      MAXLOGHISTORY 292
  92.   7  LOGFILE
  93.   8    GROUP 1 (
  94.   9      '/s01/oradata/G10R25/onlinelog/o1_mf_1_7ch7f3w8_.log',
  95. 10      '/s01/flash_recovery_area/G10R25/onlinelog/o1_mf_1_7ch7f4o2_.log'
  96. 11    ) SIZE 50M,
  97. 12    GROUP 2 (
  98. 13      '/s01/oradata/G10R25/onlinelog/o1_mf_2_7ch7f599_.log',
  99. 14      '/s01/flash_recovery_area/G10R25/onlinelog/o1_mf_2_7ch7f616_.log'
  100. 15    ) SIZE 50M,
  101. 16    GROUP 3 (
  102. 17      '/s01/oradata/G10R25/onlinelog/o1_mf_3_7ch7f6kb_.log',
  103. 18      '/s01/flash_recovery_area/G10R25/onlinelog/o1_mf_3_7ch7f7dj_.log'
  104. 19    ) SIZE 50M
  105. 20  -- STANDBY LOGFILE
  106. 21  DATAFILE
  107. 22    '/s01/oradata/G10R25/datafile/o1_mf_unknown_7voy2grh_.dbf'
  108. 23    CHARACTER SET AL32UTF8;

  109. Control file created.
复制代码

回复 只看该作者 道具 举报

5#
发表于 2012-5-21 22:55:45
理论上可以从 backup piece中 抽取出datafile , 这个问题 会在博客上 以文章形式说明

敬请期待

回复 只看该作者 道具 举报

4#
发表于 2012-5-20 22:22:34
好像这个问题,要看数据文件的rman备份类型哟,具体还是请刘大回答。

回复 只看该作者 道具 举报

3#
发表于 2012-5-19 11:29:19
原帖由 maclean 于 2012-5-19 10:10 发表
好的提问的 基本 要素    一个好的标题、  版本信息 、 日志信息、报错信息

刘大,我修改了一下标题和内容,谢谢。

回复 只看该作者 道具 举报

2#
发表于 2012-5-19 10:10:03
好的提问的 基本 要素    一个好的标题、  版本信息 、 日志信息、报错信息

回复 只看该作者 道具 举报

您需要登录后才可以回帖 登录 | 注册

QQ|手机版|Archiver|Oracle数据库数据恢复、性能优化

GMT+8, 2024-11-15 20:23 , Processed in 0.054876 second(s), 23 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部
TEL/電話+86 13764045638
Email service@parnassusdata.com
QQ 47079569