【问题标题】:Tune Oracle Database for faster startup (flashback)调整 Oracle 数据库以加快启动(闪回)
【发布时间】: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


【解决方案1】:

您可以使用存储快照。在这种情况下,在 t0 拍摄快照。做你的操作。准备好回滚后,停止数据库并将 t0 快照挂载为数据文件。这应该花费您与在 t0 启动数据库相同的时间。

【讨论】:

    【解决方案2】:

    您将大部分响应时间花在 I/O 相关操作上:

    访问控制文件:ALTER DATABASE MOUNT [4073 ms]

    重置重做日志:ALTER DATABASE OPEN RESETLOGS [1652 ms]

    尝试将控制文件和重做日志文件放在速度非常快的存储上,例如基于 NVMe 的 SSD。

    另外,您有多少重做日志文件和日志文件组? - 减少它们也会有所帮助 - 如果你可以允许的话。

    【讨论】:

    • 完整的数据库位于 ramdisk 中。正如 cmets 中提到的,该操作主要受 cpu 限制,因为 I/O 在 ramdisk 上几乎是无成本的操作。顺便说一句,Oracle 19 在同一台机器上的时间略有增加。
    【解决方案3】:
    1. 启动

      一个。实现大页面

      b.设置 statistics_level = basic

    2. 挂载

      一个。仅使用一个控制文件。不要多路复用。

      b.尽量减少数据文件和临时文件的数量。使用大文件表空间。

      c。从跟踪中重新创建您的控制文件。省略不必要的项目。

    3. 重置日志

      一个。每个重做日志组只使用一个日志文件。不要多路复用。

      b.仅创建 2 个重做日志组。

      c。最小化每个重做日志的大小。

    不过,这些选项会损害可靠性和可管理性。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-06-16
      • 1970-01-01
      • 2010-12-26
      • 2021-04-24
      • 1970-01-01
      • 1970-01-01
      • 2014-04-17
      • 2022-01-14
      相关资源
      最近更新 更多