ORACLE日志

本文深入探讨了Oracle数据库的日志机制,包括日志原理、实际产生过程、归档模式及如何确保已提交事务不丢失。文章详细解释了LGWR进程的工作方式、日志优化建议以及redo log文件的性能考量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ORACLE 日志

保证数据一致性

1 日志原理

buffer地址  时间   什么改变

2 实际日志产生过程

server process 修改一个buffer的时候,会产生日志写在各自的PGA中,在日志到一定
程度的时候在写在LOGBUFFER中,LOGBUFFER中的日志由LGWR进程写入redo.log文件中

3 归档模式

4 如何确保已经提交的事务不会丢失

5 Write-Ahead-Log:日志写入优先

6 LGWR绕过OS缓存直接写入磁盘,但是绕不过存储的写缓存

7 Log Buffer大小设置

9i以前,一般是3M
在10g中ORACLE会自动调整它的值,它遵循这样一个原则,
'Fixed SGA Size'+'Redo Buffer'是granule size的整数倍
select * 
	from v$sgainfo 
	where name in ('Fixed SGA Size','Redo Buffers','Granule Size');
select * from v$version where rownum < 2;

8 LGWR触发条件:Write-Ahead-Log:日志写入优先

1 用户提交 commit
2 有1/3重做日志缓冲区未被写入磁盘
3 有大于1M的重做日志缓冲区未被写入磁盘
4 每隔3秒钟
5 DBWR需要写入的数据的SCN大于LGWR记录的SCN,DBWR触发LGWR写入   (重点)

9 Log优化建议:

	在OLTP系统上,REDO LOG 文件的写操作主要是小型的,比较频繁
一般写的大小在几K,而每秒钟产生的写IO 次数回答道几十次,数百次
至上千次。因此REDO LOG文件适合存放IOPS较高的转速较快的磁盘上,
IOPS仅能达到熟白菜的SATA盘B不适合存放REDO LOG文件。另外由于
REDO LOG文件的写入时串行的,因此对于REDO LOG 文件所做的底层
条带化处理,对于REDO LOG写性能的提升是十分有限的。

10 REDO LOG切换的时间应该尽可能不低于10-20分钟(一个redo.log文件从开始写到写满尽量控制在10-20分钟之间)

select to_char(FIRST_TIME,'yyyy-mm-dd hh24:mi:ss') f_time,SEQUENCE# from v$log_history;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值