模拟工业场景:数据库的用户被删除掉了,表空间,数据文件都在的 能否恢复?

环境:

[html] view plain copy
  1. SQL>select*fromv$versionwhererownum=1;
  2. BANNER
  3. ----------------------------------------------------------------
  4. OracleDatabase10gEnterpriseEditionRelease10.2.0.1.0-Prod
  5. SQL>!uname-a
  6. Linuxthink-V30SA2.6.35-22-generic#33-UbuntuSMPSunSep1920:34:50UTC2010i686GNU/Linux

我打算用闪回数据库来恢复,关于开启闪回数据库请参见: 闪回如何开启及注意事项


模拟的实验过程如下:

  1. SQL>showuser
  2. USERis"SYS"
  3. SQL>selectflashback_onfromv$database;
  4. FLASHBACK_ON
  5. ------------------
  6. YES
  7. SQL>createuseru1identifiedbyu1defaulttablespaceusersquota10monusers;--20:56分创建u1用户
  8. Usercreated.
  9. SQL>grantconnect,createanytabletou1;
  10. Grantsucceeded.
  11. SQL>connu1/u1
  12. Connected.
  13. SQL>createtabletest(iint);
  14. Tablecreated.
  15. SQL>insertintotestvalues(1);
  16. 1rowcreated.
  17. SQL>insertintotestvalues(2);
  18. 1rowcreated.
  19. SQL>commit;
  20. Commitcomplete.
  21. SQL>select*fromtest;
  22. I
  23. ----------
  24. 1
  25. 2
  26. SQL>conn/assysdba
  27. Connected.
  28. SQL>dropuseru1cascade;--21:09分把u1及其关联对象删除。
  29. Userdropped.
  30. SQL>shutdownimmediate
  31. SQL>startupmount
  32. SQL>flashbackdatabasetotimestampsysdate-9/1440;
  33. Flashbackcomplete.
  34. SQL>alterdatabaseopenresetlogs;
  35. Databasealtered.
  36. SQL>select*fromu1.test;
  37. I
  38. ----------
  39. 1
  40. 2

小结:

整个模拟实验的关键在于创建u1和删除u1之间的时间差,flashback database指定的timestamp要落在这个之间,否则实验会失败。

你可能感兴趣的:(数据文件)