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

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

133

积分

0

好友

17

主题
1#
发表于 2013-1-16 18:06:56 | 查看: 2338| 回复: 1
flashback database后,还可以recover database到flashback前,原理是什么呢,我做了一下实验,貌似不需要使用归档,只使用current redo,难道是因为数据文件没有被覆盖,还是使用recover 了flashback database的操作。

但我创建一个新的表空间后,这时,闪回后,需要归档了
  1. --测试flashback database到前一scn后,recover database并不需要归档!

  2. 17:10:59 sys@TEST10G> archive log list
  3. Database log mode             Archive Mode
  4. Automatic archival            Enabled
  5. Archive destination            USE_DB_RECOVERY_FILE_DEST
  6. Oldest online log sequence     1
  7. Next log sequence to archive   3
  8. Current log sequence            3
  9. 17:11:00 sys@TEST10G>
  10. 17:11:01 sys@TEST10G> create table saup.tes_flashback4 as select * from dba_objects;

  11. Table created.

  12. 17:11:31 sys@TEST10G> alter system switch logfile;

  13. System altered.

  14. saup@TEST10G> select * from tab;

  15. TNAME                      TABTYPE     CLUSTERID
  16. ------------------------------ ------- ----------
  17. TES_FLASHBACK2                 TABLE
  18. TES_FLASHBACK4                 TABLE
  19. TES_FLASHBACK3                 TABLE

  20. --此时将归档文件移动他处(使用mv,并不是使用rman删除)

  21. 17:30:55 saup@TEST10G> col name for a90
  22. 17:30:58 saup@TEST10G> select sequence#,name from v$archived_log;

  23. SEQUENCE# NAME
  24. ---------- ------------------------------------------------------------------------------------------
  25.      2 /u01/app/oracle/flash_recovery_area/TEST10G/archivelog/2013_01_16/o1_mf_1_2_8hdtx1fk_.arc
  26.      3 /u01/app/oracle/flash_recovery_area/TEST10G/archivelog/2013_01_16/o1_mf_1_3_8hdvphsb_.arc

  27. 17:11:44 sys@TEST10G> shutdown immediate;
  28. Database closed.
  29. Database dismounted.
  30. ORACLE instance shut down.
  31. 17:12:24 sys@TEST10G> startup mount
  32. ORACLE instance started.

  33. Total System Global Area  599785472 bytes
  34. Fixed Size              2085776 bytes
  35. Variable Size            163581040 bytes
  36. Database Buffers       427819008 bytes
  37. Redo Buffers              6299648 bytes
  38. Database mounted.

  39. --相对早一点一个scn值

  40. 17:12:32 sys@TEST10G> flashback database to scn 615764;

  41. Flashback complete.

  42. 17:12:37 sys@TEST10G> alter database open read only;

  43. Database altered.

  44. 17:12:48 sys@TEST10G> conn saup/saup
  45. Connected.
  46. 17:12:53 saup@TEST10G> select * from tab;

  47. TNAME                      TABTYPE     CLUSTERID
  48. ------------------------------ ------- ----------
  49. TES_FLASHBACK                 TABLE


  50. 17:12:56 saup@TEST10G> conn / as sysdba
  51. Connected.
  52. 17:13:00 sys@TEST10G> recover database;
  53. ORA-00283: recovery session canceled due to errors
  54. ORA-01124: cannot recover data file 1 - file is in use or recovery
  55. ORA-01110: data file 1: '/u01/oradata/TEST10G/system01.dbf'


  56. 17:13:03 sys@TEST10G>
  57. 17:13:03 sys@TEST10G> shutdown immediate;
  58. Database closed.
  59. Database dismounted.
  60. ORACLE instance shut down.
  61. 17:13:13 sys@TEST10G>
  62. 17:13:14 sys@TEST10G>
  63. 17:13:14 sys@TEST10G> startup mount
  64. ORACLE instance started.

  65. Total System Global Area  599785472 bytes
  66. Fixed Size              2085776 bytes
  67. Variable Size            163581040 bytes
  68. Database Buffers       427819008 bytes
  69. Redo Buffers              6299648 bytes
  70. Database mounted.
  71. 17:13:20 sys@TEST10G> recover database;
  72. Media recovery complete.
  73. 17:13:25 sys@TEST10G>
  74. 17:13:30 sys@TEST10G>
  75. 17:13:30 sys@TEST10G> alter database open;

  76. Database altered.

  77. 17:14:09 sys@TEST10G> conn saup/saup
  78. Connected.
  79. 17:14:18 saup@TEST10G>
  80. 17:14:18 saup@TEST10G>
  81. 17:14:18 saup@TEST10G> select * from tab;

  82. TNAME                      TABTYPE     CLUSTERID
  83. ------------------------------ ------- ----------
  84. TES_FLASHBACK2                 TABLE
  85. TES_FLASHBACK4                 TABLE
  86. TES_FLASHBACK3                 TABLE
复制代码
创建表空间,并在其上创建表等操作
  1. 17:47:09 sys@TEST10G> create tablespace test_flashback datafile '/u01/oradata/TEST10G/test_flashback.dbf' size 1M ;

  2. Tablespace created.

  3. 17:48:59 sys@TEST10G> create table saup.flashback_recover1 tablespace test_flashback as select * from dba_objects where rownum<8000;

  4. Table created.

  5. 17:49:03 sys@TEST10G> select * from dba_free_space where tablespace_name='TEST_FLASHBACK';

  6. TABLESPACE_NAME                   FILE_ID   BLOCK_ID          BYTES     BLOCKS RELATIVE_FNO
  7. ------------------------------ ---------- ---------- ---------- ---------- ------------
  8. TEST_FLASHBACK                                6         121          65536          8              6

  9. 17:50:18 sys@TEST10G>
  10. 17:50:19 sys@TEST10G> select current_scn from  v$database;

  11. CURRENT_SCN
  12. -----------
  13.      621278

  14. 17:50:53 sys@TEST10G>
  15. 17:50:53 sys@TEST10G> alter system switch logfile;

  16. System altered.

  17. 17:50:59 sys@TEST10G> drop table  saup.flashback_recover1 purge;

  18. Table dropped.

  19. 17:51:10 sys@TEST10G> select * from dba_free_space where tablespace_name='TEST_FLASHBACK';

  20. TABLESPACE_NAME                   FILE_ID   BLOCK_ID          BYTES     BLOCKS RELATIVE_FNO
  21. ------------------------------ ---------- ---------- ---------- ---------- ------------
  22. TEST_FLASHBACK                                6           9         983040        120              6

  23. 17:51:12 sys@TEST10G> select current_scn from  v$database;

  24. CURRENT_SCN
  25. -----------
  26.      621379

  27. 17:51:39 sys@TEST10G> alter system switch logfile;

  28. System altered.

  29. 17:51:46 sys@TEST10G> create table saup.flashback_recover2 tablespace test_flashback as select * from dba_objects where rownum<8000;

  30. Table created.

  31. 17:51:55 sys@TEST10G> select * from dba_free_space where tablespace_name='TEST_FLASHBACK';

  32. TABLESPACE_NAME                   FILE_ID   BLOCK_ID          BYTES     BLOCKS RELATIVE_FNO
  33. ------------------------------ ---------- ---------- ---------- ---------- ------------
  34. TEST_FLASHBACK                                6         121          65536          8              6

  35. 17:51:59 sys@TEST10G> select current_scn from  v$database;

  36. CURRENT_SCN
  37. -----------
  38.      621452

  39. 17:52:02 sys@TEST10G> alter system switch logfile;

  40. System altered.

  41. 17:52:07 sys@TEST10G> select * from v$log;

  42.     GROUP#    THREAD#  SEQUENCE#      BYTES    MEMBERS ARC STATUS            FIRST_CHANGE# FIRST_TIME
  43. ---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- -------------------
  44.          1            1               7   52428800             1 NO  CURRENT                   621456 2013-01-16 17:52:07
  45.          2            1               5   52428800             1 YES INACTIVE                   621282 2013-01-16 17:50:59
  46.          3            1               6   52428800             1 YES ACTIVE                   621383 2013-01-16 17:51:46

  47. 17:53:21 sys@TEST10G> shutdown immediate;
  48. Database closed.
  49. Database dismounted.
  50. ORACLE instance shut down.
  51. 17:53:43 sys@TEST10G> startup mount
  52. ORACLE instance started.

  53. Total System Global Area  599785472 bytes
  54. Fixed Size                    2085776 bytes
  55. Variable Size                  163581040 bytes
  56. Database Buffers          427819008 bytes
  57. Redo Buffers                    6299648 bytes
  58. Database mounted.
  59. 17:53:52 sys@TEST10G> flashback database to scn 615764;
  60. flashback database to scn 615764
  61. *
  62. ERROR at line 1:
  63. ORA-38754: FLASHBACK DATABASE not started; required redo log is not available
  64. ORA-38761: redo log sequence 2 in thread 1, incarnation 2 could not be accessed


  65. 17:53:55 sys@TEST10G> select * from v$log;

  66.     GROUP#    THREAD#  SEQUENCE#      BYTES    MEMBERS ARC STATUS            FIRST_CHANGE# FIRST_TIME
  67. ---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- -------------------
  68.          1            1               7   52428800             1 NO  CURRENT                   621456 2013-01-16 17:52:07
  69.          3            1               6   52428800             1 YES INACTIVE                   621383 2013-01-16 17:51:46
  70.          2            1               5   52428800             1 YES INACTIVE                   621282 2013-01-16 17:50:59

  71. 17:55:12 sys@TEST10G> select * from v$flashback_database_log;

  72. OLDEST_FLASHBACK_SCN OLDEST_FLASHBACK_TI RETENTION_TARGET FLASHBACK_SIZE ESTIMATED_FLASHBACK_SIZE
  73. -------------------- ------------------- ---------------- -------------- ------------------------
  74.               615690 2013-01-16 16:23:23             1440        24576000                        0

  75. 将mv的归档全移回来,只需要最早sequence@为2的归档

  76. 17:55:47 sys@TEST10G> flashback database to scn 615764;

  77. Flashback complete.

  78. 闪回时,alter日志如下:

  79. Wed Jan 16 17:57:05 2013
  80. flashback database to scn 615764
  81. Wed Jan 16 17:57:05 2013
  82. Flashback Restore Start
  83. Deleted file /u01/oradata/TEST10G/test_flashback.dbf
  84. Flashback: deleted datafile #6 in tablespace #7 from control file.
  85. Flashback: dropped tablespace #7: 'TEST_FLASHBACK' from the control file.
  86. Flashback Restore Complete
  87. Flashback Media Recovery Start
  88. parallel recovery started with 2 processes
  89. Flashback Media Recovery Log /u01/app/oracle/flash_recovery_area/TEST10G/archivelog/2013_01_16/o1_mf_1_2_8hdtx1fk_.arc
  90. Wed Jan 16 17:57:06 2013
  91. Incomplete Recovery applied until change 615774
  92. Flashback Media Recovery Complete
  93. Completed: flashback database to scn 615764

复制代码
2#
发表于 2013-1-16 18:34:05
本帖最后由 saup007 于 2013-1-16 18:36 编辑

没有备份,这个还能恢复不,除了使用闪回。
  1. 18:25:09 sys@TEST10G>  select file#,name,status from v$datafile_header;

  2.      FILE# NAME                                                         STATUS
  3. ---------- ------------------------------------------------------------------------------------------ -------
  4.      1 /u01/oradata/TEST10G/system01.dbf                                         ONLINE
  5.      2 /u01/oradata/TEST10G/undotbs01.dbf                                         ONLINE
  6.      3 /u01/oradata/TEST10G/sysaux01.dbf                                         ONLINE
  7.      4 /u01/oradata/TEST10G/users01.dbf                                         ONLINE
  8.      5 /u01/oradata/TEST10G/ts_dba.dbf                                         ONLINE

  9. 18:30:50 sys@TEST10G>  select file#,name,status from v$datafile;

  10.      FILE# NAME                                                         STATUS
  11. ---------- ------------------------------------------------------------------------------------------ -------
  12.      1 /u01/oradata/TEST10G/system01.dbf                                         SYSTEM
  13.      2 /u01/oradata/TEST10G/undotbs01.dbf                                         RECOVER
  14.      3 /u01/oradata/TEST10G/sysaux01.dbf                                         RECOVER
  15.      4 /u01/oradata/TEST10G/users01.dbf                                         RECOVER
  16.      5 /u01/oradata/TEST10G/ts_dba.dbf                                         RECOVER18:31:42 sys@TEST10G> select sequence#,name from v$archived_log;

  17. SEQUENCE# NAME
  18. ---------- ------------------------------------------------------------------------------------------
  19.      2 /u01/app/oracle/flash_recovery_area/TEST10G/archivelog/2013_01_16/o1_mf_1_2_8hdtx1fk_.arc
  20.      3 /u01/app/oracle/flash_recovery_area/TEST10G/archivelog/2013_01_16/o1_mf_1_3_8hdvphsb_.arc
  21.      4 /u01/app/oracle/flash_recovery_area/TEST10G/archivelog/2013_01_16/o1_mf_1_4_8hdy03wk_.arc
  22.      5 /u01/app/oracle/flash_recovery_area/TEST10G/archivelog/2013_01_16/o1_mf_1_5_8hdy1ln6_.arc
  23.      6 /u01/app/oracle/flash_recovery_area/TEST10G/archivelog/2013_01_16/o1_mf_1_6_8hdy27vh_.arc

  24. 18:32:01 sys@TEST10G> recover database ;
  25. ORA-00279: change 615774 generated at 01/16/2013 16:26:14 needed for thread 1
  26. ORA-00289: suggestion : /u01/app/oracle/flash_recovery_area/TEST10G/archivelog/2013_01_16/o1_mf_1_2_%u_.arc
  27. ORA-00280: change 615774 for thread 1 is in sequence #2


  28. 18:32:09 Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
  29. auto
  30. ORA-00279: change 617592 generated at 01/16/2013 16:58:09 needed for thread 1
  31. ORA-00289: suggestion : /u01/app/oracle/flash_recovery_area/TEST10G/archivelog/2013_01_16/o1_mf_1_3_%u_.arc
  32. ORA-00280: change 617592 for thread 1 is in sequence #3
  33. ORA-00278: log file '/u01/app/oracle/flash_recovery_area/TEST10G/archivelog/2013_01_16/o1_mf_1_2_8hdtx1fk_.arc' no longer needed for this recovery


  34. ORA-00279: change 618495 generated at 01/16/2013 17:11:43 needed for thread 1
  35. ORA-00289: suggestion : /u01/app/oracle/flash_recovery_area/TEST10G/archivelog/2013_01_16/o1_mf_1_4_%u_.arc
  36. ORA-00280: change 618495 for thread 1 is in sequence #4
  37. ORA-00278: log file '/u01/app/oracle/flash_recovery_area/TEST10G/archivelog/2013_01_16/o1_mf_1_3_8hdvphsb_.arc' no longer needed for this recovery


  38. ORA-00283: recovery session canceled due to errors
  39. ORA-01244: unnamed datafile(s) added to control file by media recovery
  40. ORA-01110: data file 6: '/u01/oradata/TEST10G/test_flashback.dbf'


  41. ORA-01112: media recovery not started


  42. 18:32:15 sys@TEST10G>  select file#,name,status from v$datafile;

  43.      FILE# NAME                                                         STATUS
  44. ---------- ------------------------------------------------------------------------------------------ -------
  45.      1 /u01/oradata/TEST10G/system01.dbf                                         SYSTEM
  46.      2 /u01/oradata/TEST10G/undotbs01.dbf                                         RECOVER
  47.      3 /u01/oradata/TEST10G/sysaux01.dbf                                         RECOVER
  48.      4 /u01/oradata/TEST10G/users01.dbf                                         RECOVER
  49.      5 /u01/oradata/TEST10G/ts_dba.dbf                                         RECOVER
  50.      6 /u01/app/oracle/product/10.2.0/test_10g/dbs/UNNAMED00006                          RECOVER

  51. 6 rows selected.

  52. 18:32:29 sys@TEST10G>  select file#,name,status from v$datafile_header;

  53.      FILE# NAME                                                         STATUS
  54. ---------- ------------------------------------------------------------------------------------------ -------
  55.      1 /u01/oradata/TEST10G/system01.dbf                                         ONLINE
  56.      2 /u01/oradata/TEST10G/undotbs01.dbf                                         ONLINE
  57.      3 /u01/oradata/TEST10G/sysaux01.dbf                                         ONLINE
  58.      4 /u01/oradata/TEST10G/users01.dbf                                         ONLINE
  59.      5 /u01/oradata/TEST10G/ts_dba.dbf                                         ONLINE
  60.      6                                                             ONLINE

  61. 6 rows selected.

  62. 17:57:08 sys@TEST10G> alter database open read only;

  63. Database altered.

  64. 18:12:59 sys@TEST10G> conn saup/saup
  65. Connected.
  66. 18:13:02 saup@TEST10G> select * from tab;

  67. TNAME                      TABTYPE     CLUSTERID
  68. ------------------------------ ------- ----------
  69. TES_FLASHBACK                 TABLE

  70. 18:13:08 saup@TEST10G> conn / as sysdba
  71. Connected.
  72. 18:13:10 sys@TEST10G> shutdown immediate;
  73. Database closed.
  74. Database dismounted.
  75. ORACLE instance shut down.
  76. 18:13:17 sys@TEST10G> startup mount
  77. ORACLE instance started.

  78. Total System Global Area  599785472 bytes
  79. Fixed Size              2085776 bytes
  80. Variable Size            163581040 bytes
  81. Database Buffers       427819008 bytes
  82. Redo Buffers              6299648 bytes
  83. Database mounted.
复制代码
使用闪回。
  1. 18:36:58 sys@TEST10G>
  2. select * from
  3. 18:37:16   2  v$flashback_database_log;

  4. OLDEST_FLASHBACK_SCN OLDEST_FLASHBACK_TI RETENTION_TARGET FLASHBACK_SIZE ESTIMATED_FLASHBACK_SIZE
  5. -------------------- ------------------- ---------------- -------------- ------------------------
  6.               615690 2013-01-16 16:23:23             1440        24576000                 25681920

  7. 18:37:18 sys@TEST10G>
  8. 18:37:18 sys@TEST10G> flashback database to scn 621452;

  9. Flashback complete.

  10. 18:37:48 sys@TEST10G> alter database open read only;

  11. Database altered.

  12. 18:38:02 sys@TEST10G> conn saup/saup
  13. Connected.
  14. 18:38:05 saup@TEST10G> select * from tab;

  15. TNAME                               TABTYPE        CLUSTERID
  16. ------------------------------ ------- ----------
  17. TES_FLASHBACK2                       TABLE
  18. TES_FLASHBACK4                       TABLE
  19. TES_FLASHBACK3                       TABLE
  20. FLASHBACK_RECOVER2               TABLE

  21. 18:38:09 saup@TEST10G>  select file#,name,status from v$datafile;

  22.      FILE# NAME                                                                                       STATUS
  23. ---------- ------------------------------------------------------------------------------------------ -------
  24.          1 /u01/oradata/TEST10G/system01.dbf                                                              SYSTEM
  25.          2 /u01/oradata/TEST10G/undotbs01.dbf                                                              RECOVER
  26.          3 /u01/oradata/TEST10G/sysaux01.dbf                                                              RECOVER
  27.          4 /u01/oradata/TEST10G/users01.dbf                                                              RECOVER
  28.          5 /u01/oradata/TEST10G/ts_dba.dbf                                                              RECOVER
  29.          6 /u01/oradata/TEST10G/test_flashback.dbf                                                      RECOVER

  30. 6 rows selected.

  31. 18:38:19 saup@TEST10G>  select file#,name,status from v$datafile_header;

  32.      FILE# NAME                                                                                       STATUS
  33. ---------- ------------------------------------------------------------------------------------------ -------
  34.          1 /u01/oradata/TEST10G/system01.dbf                                                              ONLINE
  35.          2 /u01/oradata/TEST10G/undotbs01.dbf                                                              ONLINE
  36.          3 /u01/oradata/TEST10G/sysaux01.dbf                                                              ONLINE
  37.          4 /u01/oradata/TEST10G/users01.dbf                                                              ONLINE
  38.          5 /u01/oradata/TEST10G/ts_dba.dbf                                                              ONLINE
  39.          6 /u01/oradata/TEST10G/test_flashback.dbf                                                      ONLINE

  40. 6 rows selected.
复制代码

回复 只看该作者 道具 举报

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

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

GMT+8, 2024-12-26 03:35 , Processed in 0.050386 second(s), 20 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

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