【发布时间】:2019-10-24 20:47:22
【问题描述】:
我使用的是 Oracle 数据库 11.2。
我有一个场景,我经常发出FLASHBACK DATABASE。
似乎FLASHBACK DATABASE 周期会重新启动数据库实例,这大约需要。我的设置需要 7 秒。
数据库很小(~ 1 GB 表空间),所有文件都应该在 I/O 缓存/缓冲区中。 因此我认为瓶颈不是基于 I/O。
我正在寻找调整建议,以节省用户时间和/或 CPU 时间来进行闪回。
更新:
闪回顺序(以及每一步的时间)如下:
1. Get SYSDBA connection with prelim_auth=true [15 ms]
2. SHUTDOWN ABORT; [1034 ms]
3. STARTUP (unrestricted) [1241 ms]
4. Close SYSDBA connection [2 ms]
5. Get SYSDBA connection with prelim_auth=false [18 ms]
6. ALTER DATABASE MOUNT [4073 ms]
7. FLASHBACK DATABASE TO RESTORE POINT <restore_point_name> [306 ms]
8. ALTER DATABASE OPEN RESETLOGS [1652 ms]
9. CLOSE SYSDBA connection [2 ms]
【问题讨论】:
-
7 秒听起来难以置信的快 - 那个时间包括所有步骤吗?列出每一步以及需要多长时间可能会有所帮助。例如,在我的小型系统上:
shutdown immediate(29 秒)、startup mount(28 秒)、flashback database to timestamp systimestamp - interval '5' minute;(2 秒)、alter database open resetlogs(5 秒)。总共 64 秒,不计算键入命令的时间。 -
您是否考虑过对需要闪回整个数据库的任何操作采取不同方法的可能性;比如在特定的表上执行几个
flashback table命令而不需要弹回数据库? -
您能描述一下需要频繁闪回数据库的场景吗?
-
@JonHeller 我已经更新了问题的步骤和时间。
-
我觉得这个时机真的很棒。对于自动化测试,我们在 java 端 (H2) 的内存 db-s 中使用以提高速度。如果您真的需要它成为 Oracle,我认为拥有多个模式可能是一个不错的选择,并在必要时同时重置多个模式。如有必要,您也可以在同一台机器上运行多个 oracle 实例,并在带有侦听器的那些实例之间切换。我不知道有什么方法可以加快当前系统的速度。
标签: database oracle performance database-performance flashback