如何计算重做日志大小?
How to calculate redo log size?
我想弄清楚我现在拥有的当前重做日志大小是否最佳。这是我所做的:
- 我使用 Oracle 文档找到了大部分信息:
http://www.oracle.com/technetwork/database/availability/async-2587521.pdf
使用 SQL 我使用了下面的查询
select thread#,sequence#,blocks*block_size/1024/1024 "MB",(next_time-first_time)*86400 "sec",
(blocks*block_size/1024/1024)/((next_time-first_time)*86400) "MB/s"
from V$ARCHIVED_LOG
where ((next_time-first_time)*86400<>0) and
first_time between to_date('2020/03/28 08:00:00','YYYY/MM/DD HH24:MI:SS')
and to_date('2020/05/28 11:00:00','YYYY/MM/DD HH24:MI:SS')
and dest_id=3
order by first_time
根据结果,我计算出平均值 MB/S 为 7.67,最大值 MB/S 为 245 MB/S
- 根据 Oracle 文档
See table on recommended redo log group size
使用这个查询
select * from V$LOGFILE a, V$LOG b where a.GROUP# = b.GROUP#
我发现我有 15 个 2 GB 的组,所以重做日志组大小为 30 GB。
- Oracle 说“通常我们
建议在峰值速率的基础上再增加 30%”,这意味着我预计会有 245mb/s*1.3 = 318.5 MB/S。这就是我有点迷路的地方。我是否使用table 在我附上的图片中?如果是这样,我应该有一个 64GB 的重做日志组大小?还是我在不应该有的地方建立连接?
最后我也做了
select optimal_logfile_size from v$instance_recovery
和 returns 14 GB。
我无法建立所有连接并试图确认,我的重做日志大小是否足够。
如果您有 15 组,每组 2GB,那么您的组大小是 2GB,而不是 30GB。
我们的想法是不要过于频繁地切换日志 - 不超过每 20 分钟一次。所以看看你的日志切换发生的频率。如果切换之间的间隔仍超过 20 分钟,那么您可能没问题。如果您有比这更频繁的切换,那么您可能需要更大的日志。
根据您执行的计算,~319MB/s 的最大速率表明单个重做日志文件应为 64GB,并且您需要至少(根据最佳实践)三个重做日志组。也就是说 - 您有多少时间花在峰值负载上?如果每天只有少量时间(您的平均交易率要低得多),那么这可能有点矫枉过正。您也不希望日志切换间隔太远,或者您在重做日志失败后进行时间点恢复的能力可能会受到影响。
拥有 16GB 的日志文件并平均保持稳定的切换率并在峰值负载期间接受更高的切换率可能更有意义。您可能需要更多单独的日志文件来处理每分钟相同的事务总数,而无需等待不完整的日志切换:比如说三组 64GB 与 12 组每组 16GB。相同的总日志容量,但用于交换机和归档日志记录的块较小。这可能就是为什么您现在配置了 15 组,每组 2GB...
理想情况下,每小时不应频繁切换日志。检查重做日志切换频率并相应地增加重做日志的大小。
发现有用 link,可用于获取下面所有与重做日志相关的详细信息。
我想弄清楚我现在拥有的当前重做日志大小是否最佳。这是我所做的:
- 我使用 Oracle 文档找到了大部分信息: http://www.oracle.com/technetwork/database/availability/async-2587521.pdf
使用 SQL 我使用了下面的查询
select thread#,sequence#,blocks*block_size/1024/1024 "MB",(next_time-first_time)*86400 "sec", (blocks*block_size/1024/1024)/((next_time-first_time)*86400) "MB/s" from V$ARCHIVED_LOG where ((next_time-first_time)*86400<>0) and first_time between to_date('2020/03/28 08:00:00','YYYY/MM/DD HH24:MI:SS') and to_date('2020/05/28 11:00:00','YYYY/MM/DD HH24:MI:SS') and dest_id=3 order by first_time
根据结果,我计算出平均值 MB/S 为 7.67,最大值 MB/S 为 245 MB/S
- 根据 Oracle 文档 See table on recommended redo log group size
使用这个查询
select * from V$LOGFILE a, V$LOG b where a.GROUP# = b.GROUP#
我发现我有 15 个 2 GB 的组,所以重做日志组大小为 30 GB。
- Oracle 说“通常我们 建议在峰值速率的基础上再增加 30%”,这意味着我预计会有 245mb/s*1.3 = 318.5 MB/S。这就是我有点迷路的地方。我是否使用table 在我附上的图片中?如果是这样,我应该有一个 64GB 的重做日志组大小?还是我在不应该有的地方建立连接?
最后我也做了
select optimal_logfile_size from v$instance_recovery
和 returns 14 GB。
我无法建立所有连接并试图确认,我的重做日志大小是否足够。
如果您有 15 组,每组 2GB,那么您的组大小是 2GB,而不是 30GB。
我们的想法是不要过于频繁地切换日志 - 不超过每 20 分钟一次。所以看看你的日志切换发生的频率。如果切换之间的间隔仍超过 20 分钟,那么您可能没问题。如果您有比这更频繁的切换,那么您可能需要更大的日志。
根据您执行的计算,~319MB/s 的最大速率表明单个重做日志文件应为 64GB,并且您需要至少(根据最佳实践)三个重做日志组。也就是说 - 您有多少时间花在峰值负载上?如果每天只有少量时间(您的平均交易率要低得多),那么这可能有点矫枉过正。您也不希望日志切换间隔太远,或者您在重做日志失败后进行时间点恢复的能力可能会受到影响。
拥有 16GB 的日志文件并平均保持稳定的切换率并在峰值负载期间接受更高的切换率可能更有意义。您可能需要更多单独的日志文件来处理每分钟相同的事务总数,而无需等待不完整的日志切换:比如说三组 64GB 与 12 组每组 16GB。相同的总日志容量,但用于交换机和归档日志记录的块较小。这可能就是为什么您现在配置了 15 组,每组 2GB...
理想情况下,每小时不应频繁切换日志。检查重做日志切换频率并相应地增加重做日志的大小。 发现有用 link,可用于获取下面所有与重做日志相关的详细信息。