oracle redo 多大合适

oracle redo 多大合适,第1张

以时间为单位,15-20分钟切换一次为宜。

在Oracle的官方资料中,对redo log的大小设置也是以切换频率而定的,要求调整到15-20分钟进行一次切换。调整的手段主要是增加日志组数量和调大日志成员文件大小。这样,都可以给dbwr和arc进程更多的时间在后台进行数据写入和归档。

我们知道redo log包括 buffer和log file的部分,这里的innodb_log_file_size是配置log file的大小的。

innodb_log_file_size这个选项是设置 redo 日志(重做日志)的大小。这个值的默认为5M,是远远不够的,在安装完mysql时需要尽快的修改这个值。如果对 Innodb 数据表有大量的写入 *** 作,那么选择合适的 innodb_log_file_size 值对提升MySQL性能很重要。然而设置太大了,就会增加恢复的时间,因此在MySQL崩溃或者突然断电等情况会令MySQL服务器花很长时间来恢复。

由于事务日志相当于一个写缓冲,而小日志文件会很快的被写满,这时候就需要频繁地刷新到硬盘,速度就慢了。如果产生大量的写 *** 作,MySQL可能就不能足够快地刷新数据,那么写性能将会降低。

大的日志文件,另一方面,在刷新 *** 作发生之前给你足够的空间来使用。反过来允许InnoDB填充更多的页面。对于崩溃恢复 – 大的重做日志意味着在服务器启动前更多的数据需要读取,更多的更改需要重做,这就是为什么崩溃恢复慢了。

如果不配的后果:默认是5M,这是肯定不够的。

最后,让我们来谈谈如何找出重做日志的正确大小。

幸运的是,你不需要费力算出正确的大小,这里有一个经验法则:在服务器繁忙期间,检查重做日志的总大小是否够写入1-2小时。你如何知道InnoDB写入多少,使用下面方法可以统计60秒内地增量数据大小:

mysql>show engine innodb status\G select sleep(60)show engine innodb status\G

Log sequence number 4631632062

...

Log sequence number 4803805448

mysql>select (4803805448-4631632062) 60/1024/1024

+--------------------------------------+

| (4803805448-4631632062) 60/1024/1024 |

+--------------------------------------+

|9851.84017181 |

+--------------------------------------+

1 row in set (0.00 sec)

在这个60s的采样情况下,InnoDB每小时写入9.8GB数据。所以如果innodb_log_files_in_group没有更改(默认是2,是InnoDB重复日志的最小数字),然后设置innodb_log_file_size为10G,那么你实际上两个日志文件加起来有20GB,够你写两小时数据了。

更改innodb_log_file_size的难易程度和能设置多大取决于你现在使用的MySQL版本。特别地,如果你使用的是5.6之前的版本,你不能仅仅的更改变量,期望服务器会自动重启。

好了,下面是步骤:

1、在my.cnf更改innodb_log_file_size

2、停止mysql服务器

3、删除旧的日志,通过执行命令rm -f /var/lib/mysql/ib_logfile*

4、启动mysql服务器 – 应该需要比之前长点的时间,因为需要创建新的事务日志。最后,需要注意的是,有些mysql版本(比如5.6.2)限制了重做日志大小为4GB。所以在你设置innodb_log_file_size为2G或者更多时,请先检查一下MySQL的版本这方面的限制。

您好,很高兴为您解答。

折腾日志文件,调整了一下大小,将每个日志文件调整为2G,扩展名取为dbf。

约略记录一下步骤。

在用的是不能删除的:

SQL>col member for a30

SQL>select * from v$logfile

GROUP# STATUS TYPEMEMBER IS_

---------- ------- ------- ------------------------------ ---

1 ONLINE /data1/dbstat/redo01.dbf NO

3 STALE ONLINE /data1/dbstat/redo3.logNO

2 ONLINE /data1/dbstat/redo2.logNO

SQL>alter database drop logfile group 2

alter database drop logfile group 2

*

ERROR at line 1:

ORA-01623: log 2 is current log for instance dbstat (thread 1) - cannot drop

ORA-00312: online log 2 thread 1: '/data1/dbstat/redo2.log'

Inactive的删除后,增加新的日志文件:

SQL>alter database drop logfile group 3

Database altered.

SQL>alter database add logfile group 3 ('/data1/dbstat/redo03.dbf') size 2048M reuse

Database altered.

SQL>select * from v$logfile

GROUP# STATUS TYPEMEMBER IS_

---------- ------- ------- ------------------------------ ---

1 ONLINE /data1/dbstat/redo01.dbf NO

3 ONLINE /data1/dbstat/redo03.dbf NO

2 ONLINE /data1/dbstat/redo2.logNO

SQL>set linesize 120

SQL>select * from v$Log

GROUP#THREAD# SEQUENCE# BYTESMEMBERS ARC STATUS FIRST_CHANGE# FIRST_TIME

---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- -------------------

1 1 0 2147483648 1 YES UNUSED 0

2 1 11 52428800 1 NO CURRENT 203206 2009-09-17 18:56:08

3 1 0 2147483648 1 YES UNUSED 0

切换日志组,当CURRENT变为非活动时(INACTIVE)将其删除:

SQL>alter system switch logfile

System altered.

SQL>alter database drop logfile group 2

alter database drop logfile group 2

*

ERROR at line 1:

ORA-01624: log 2 needed for crash recovery of instance dbstat (thread 1)

ORA-00312: online log 2 thread 1: '/data1/dbstat/redo2.log'

SQL>alter system switch logfile

System altered.

SQL>select * from v$Log

GROUP#THREAD# SEQUENCE# BYTESMEMBERS ARC STATUS FIRST_CHANGE# FIRST_TIME

---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- -------------------

1 1 12 2147483648 1 NO ACTIVE 203704 2009-09-17 19:04:23

2 1 11 52428800 1 NO ACTIVE 203206 2009-09-17 18:56:08

3 1 13 2147483648 1 NO CURRENT 203710 2009-09-17 19:04:38

SQL>alter system checkpoint

System altered.

SQL>select * from v$Log

GROUP#THREAD# SEQUENCE# BYTESMEMBERS ARC STATUS FIRST_CHANGE# FIRST_TIME

---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- -------------------

1 1 12 2147483648 1 NO INACTIVE203704 2009-09-17 19:04:23

2 1 11 52428800 1 NO INACTIVE203206 2009-09-17 18:56:08

3 1 13 2147483648 1 NO CURRENT 203710 2009-09-17 19:04:38

SQL>alter database drop logfile group 2

Database altered.

SQL>alter database add logfile group 2 ('/data1/dbstat/redo02.dbf') size 2048M

Database altered.

SQL>select * from v$log

GROUP#THREAD# SEQUENCE# BYTESMEMBERS ARC STATUS FIRST_CHANGE# FIRST_TIME

---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- -------------------

1 1 12 2147483648 1 NO INACTIVE203704 2009-09-17 19:04:23

2 1 0 2147483648 1 YES UNUSED 0

3 1 13 2147483648 1 NO CURRENT 203710 2009-09-17 19:04:38

现在就可以应对大规模的日志 *** 作了。

-The End-

重设日志文件大小

http://hi.baidu.com/jed519/item/47efa22f6b2e400a72863ef4

Thread 1 cannot allocate new log, sequence处理请教

由于业务比较繁忙,特别是使用高峰期时 经常报错

查看alert_orcl.log 找到的错误信息如下 Thread 1 cannot allocate new log, sequence ,

到网上查询 ,得出原因为 redo文件太小,需要设置更大的值,或者增加redo的个数

这样就涉及到一个问题, 如何设置redo的大小?或者个数设置多少为宜?

方法:加入新的大的日志文件,然后删掉旧的小的日志文件

假设现有三个日志组,每个组内有一个成员,每个成员的大小为50MB,现在想把此三个日志组的成员大小都改为100MB

1、创建2个新的日志组

alter database add logfile group 4 ('D:\ORACLE\ORADATA\ORADB\REDO04_1.LOG') size 8129k

alter database add logfile group 5 ('D:\ORACLE\ORADATA\ORADB\REDO05_1.LOG') size 8129k

2、切换当前日志到新的日志组

alter system switch logfile

alter system switch logfile

3、删除旧的日志组

alter database drop logfile group 1

alter database drop logfile group 2

alter database drop logfile group 3

4、 *** 作系统下删除原日志组1、2、3中的文件

5、重建日志组1、2、3

alter database add logfile group 1 ('D:\ORACLE\ORADATA\ORADB\REDO01_1.LOG') size 100M

alter database add logfile group 2 ('D:\ORACLE\ORADATA\ORADB\REDO02_1.LOG') size 100M

alter database add logfile group 3 ('D:\ORACLE\ORADATA\ORADB\REDO03_1.LOG') size 100M

6、切换日志组

alter system switch logfile

alter system switch logfile

alter system switch logfile

7、删除中间过渡用的日志组4、5

alter database drop logfile group 4

alter database drop logfile group 5

8、到 *** 作系统下删除原日志组4、5中的文件

9、备份当前的最新的控制文件

SQL>alter database backup controlfile to trace resetlogs

如若满意,请点击右侧【采纳答案】,如若还有问题,请点击【追问】

希望我的回答对您有所帮助,望采纳!

~ O(∩_∩)O~


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12070807.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-20
下一篇 2023-05-20

发表评论

登录后才能评论

评论列表(0条)

保存