- 浏览: 427082 次
- 性别:
- 来自: 深圳
文章分类
最新评论
-
Glogo:
楼主您好,我在试验您的代码的时候发现新开的三个子线程并没有一直 ...
java 高并发 ReentrantLock -- 可重入的锁 -
univasity:
最近发觉也被限速了,投诉一下就好一会~~ 看来明天又要和电信M ...
ADSL上网速度慢 都是帐号限速惹的祸 -
liuyuanhui0301:
java 高并发 ReentrantLock -- 可重入的锁 -
dang_java:
呵.很好的说明文档.
JXTA技术与应用发展 -
helloqidi:
谢谢,学习了
SQL中exists和in的区别
alter_ORCL.log如下:
Wed Jun 25 02:25:59 2008
Thread 1 cannot allocate new log, sequence 381753
Checkpoint not complete
Current log# 3 seq# 381752 mem# 0: /opt/oracle/db04/oradata/ORCL/redo03.log
Wed Jun 25 02:26:15 2008
Thread 1 advanced to log sequence 381753
Current log# 5 seq# 381753 mem# 0: /opt/oracle/db03/oradata/ORCL/redo5.log
Wed Jun 25 02:26:15 2008
ARC1: Evaluating archive log 3 thread 1 sequence 381752
ARC1: Beginning to archive log 3 thread 1 sequence 381752
Creating archive destination LOG_ARCHIVE_DEST_1: '/opt/oracle/arch/ORCL/1_381752.dbf'
Wed Jun 25 02:26:27 2008
ARC1: Completed archiving log 3 thread 1 sequence 381752
Wed Jun 25 02:26:56 2008
Thread 1 cannot allocate new log, sequence 381754
Checkpoint not complete
Current log# 5 seq# 381753 mem# 0: /opt/oracle/db03/oradata/ORCL/redo5.log
Wed Jun 25 02:27:11 2008
Thread 1 advanced to log sequence 381754
Current log# 4 seq# 381754 mem# 0: /opt/oracle/db02/oradata/ORCL/redo4.log
Wed Jun 25 02:27:11 2008
ARC0: Evaluating archive log 5 thread 1 sequence 381753
ARC0: Beginning to archive log 5 thread 1 sequence 381753
Creating archive destination LOG_ARCHIVE_DEST_1: '/opt/oracle/arch/ORCL/1_381753.dbf'
ARC0: Completed archiving log 5 thread 1 sequence 381753
Wed Jun 25 02:27:51 2008
Thread 1 cannot allocate new log, sequence 381755
Checkpoint not complete
原因和后果:当日志将被重用的时候,该日志上涉及的数据的checkpoint必须完成,否则这个时候server crash就丢失数据了。简单来说就是没有写入数据文件,日志又被覆盖了!这是日志组已经使用轮循了一圈的时候发生的事情,可以增加日志组和增大日志文件,当然也可以修改 checkpoint参数使得检查点变频繁一些。
这个主题使DBA能对checkpoint和checkpoint优化的参数有一个较好的理解:
- FAST_START_MTTR_TARGET
- LOG_CHECKPOINT_INTERVAL
- LOG_CHECKPOINT_TIMEOUT
- LOG_CHECKPOINTS_TO_ALERT
它也解释了怎样解释和处理出现在ALERT<sid>.LOG file中的checkpoint的错误"'Checkpoint not Complete' and 'Cannot Allocate New Log"。
什么是checkpoint?
checkpoint是为了内存中已经被修改的数据块与磁盘数据文件同步的一种数据库事件。它提供了一种保持事务提交以后数据一致的手段。往Oracle磁盘写脏数据的机制与事务提交不是同步的。
checkpoint有两个目的:1、确保数据一致性。2、使数据库能快速地恢复。
怎样快速恢复呢?
因为数据库会把所有的改变都在数据文件上设置checkpoint并一直增加,它不需要请求checkpoint之前的重做日志,Checkpoint能保证所有在缓存区的数据写到相应的数据文件,防止因为意外的实例失败导致的数据丢失。
Oracle写这个脏数据只在一定的条件下:
1、后面的进程需要1/4个db_block_buffer参数的大小;
2、每三秒;
3、当一个checkpoint产生。
一个checkpoint有5中事件类型:
1、每次重做日志的切换;
2、LOG_CHECKPOINT_TIMEOUT 这个延迟参数的到达;
3、相应字节(LOG_CHECKPOINT_INTERVAL* size of IO OS blocks)被写到当前的重做日志;
IO OS blocks: 在UNIX下可以 # fstyp -v /dev/vg00/lvol1
vxfs
version: 5
f_bsize: 8192
4、ALTER SYSTEM SWITCH LOGFILE 这个命令会直接导致checkpoint发生
5、ALTER SYSTEM CHECKPOINT
Checkpoint期间会有下面进程发生:
DBWR写所有脏数据到数据文件;
LGWR更新控制文件和数据文件的SCN。
Checkpoints和优化:
Checkpoints是一个数据库优化的难点。频繁的Checkpoints可以实现快速的恢复,但也会使性能下降。DBA怎样处理这个问题呢?
依赖于数据库数据文件的数量,一个Checkpoint可能是高速的运行。因为所有的数据文件在Checkpoint期间都会被冻结。更频繁的Checkpoints可以快速恢复数据库。这也客户对不按规定系统宕机的容忍的原因。然而,在一些特殊情况下,频繁的Checkpoints也不能保证可以快速恢复。我们假设数据库在95%的时间内是正常运行,5%由于实例失败导致不可用,要求恢复。对大多数客户而言,他们更希望调整95%的性能而不是5%的宕机时间。这个假设表明,性能是摆在第一位的,所以我门的目标就是在优化期间减少Checkpoints的频繁度。
优化Checkpoints包括4个关键的初始化参数:
- FAST_START_MTTR_TARGET
- LOG_CHECKPOINT_INTERVAL
- LOG_CHECKPOINT_TIMEOUT
- LOG_CHECKPOINTS_TO_ALERT
详细介绍每个参数:
FAST_START_MTTR_TARGET :
Oracle9i以来FAST_START_MTTR_TARGET 参数是调整checkpoint的首选的方法。FAST_START_MTTR_TARGET 可以指定单实例恢复需要的秒数。基于内部的统计,增长的checkpoint会自动调整的checkpint的目标以满足FAST_START_MTTR_TARGET 的需求。V$INSTANCE_RECOVERY.ESTIMATED_MTTR 显示当前估计需要恢复的秒数。这个值会被显示即使FAST_START_MTTR_TARGET 没有被指定。
V$INSTANCE_RECOVERY.TARGET_MTTR 表明在短时间内MTTR的目标。
V$MTTR_TARGET_ADVICE 显示这个当前MTTR设置的工作量产生的I/O数量和其他I/O。
这个视图帮助用户评定这个在优化和恢复之前的平衡。
LOG_CHECKPOINT_INTERVAL :
LOG_CHECKPOINT_INTERVAL 参数指定这个最大的重做块的间隔数目。如果FAST_START_MTTR_TARGET被指定,LOG_CHECKPOINT_INTERVAL不能被设置为0。
在大多数Unix系统的OS块大小是512字节。设置LOG_CHECKPOINT_INTERVAL=10000意味着
这个增长的checkpoint不能追加到当前日志,因为多于5M。如果你的重做日志是20M,你将发出4个checkpoint对每个重做日志。
LOG_CHECKPOINT_INTERVAL 会发生影响当一个checkpoint发生时,小心设置这个参数,保持它随着重做日志文件大小变化而变化。checkpoint频繁是这个影响数据库恢复的原因之一。
短的checkpoint间隔意味数据库将快速恢复,也增加了资源的利用。
这个参数也影响数据库向前回滚的时间。实际的恢复时间是基于这个时间,当然还有失败的类型和
需要归档日志的数量。
LOG_CHECKPOINT_TIMEOUT :
这个参数指定checkpoint发出的时间间隔。换句话说,它指定一次脏数据多少时间写出一次。
checkpoint频率会影响这个数据库恢复的时间。长时间的间隔会要求数据库恢复要求更久。
Oracle建议用LOG_CHECKPOINT_interval去控制checkpoint而不用LOG_CHECKPOINT_TIMEOUT,LOG_CHECKPOINT_TIMEOUT每n秒发一次checkpoint,不顾事务提交的频率。这可能会导致一些没有必要的checkpoint在事务已经变化的情况下。不必要的checkpoint必须被避免。还有一个容易误解的地方:LOG_CHECKPOINT_TIMEOUT 会间隔性地发出log switch。而Log switch会触发一个checkpoint,但checkpoint不会导致一个log switch。唯一手工方式alter system switch logfile或者重新设置redo logs大小可以导致频繁switch。
在线重做日志的大小是关键的,对于优化和恢复。
refer:http://zhaoyu728.itpub.net/post/5364/293141
--End--
发表评论
-
mysql查询优化之索引类型、最左前缀
2012-03-22 00:42 1090一、什么是索引? 索引用来快速地寻找那些具有特定值的记录, ... -
How to resize redo log file?
2009-04-30 15:33 1070I wrote a script named 'checkRe ... -
Oracle: REDO&UNDO
2009-04-25 13:41 1043在这里会介绍UNDO,REDO ... -
DBCP,数据库断开自动连接的问题及解决方法
2009-04-20 13:34 2722以前公司开发的一个项 ... -
Oracle : How to drop database
2009-04-06 01:05 1037字号: 大大 中中 小小 D:\>set or ... -
执行计划和执行顺序
2009-04-02 17:53 943如果要了解执行计划和执行顺序,必须理解执行计划的 ... -
Oracle timestamp
2009-02-01 10:47 3084select systimestamp from dual s ... -
Oracle日期函数与应用
2009-01-19 16:26 1168相信很多人都有过统计某些数据的经历,比如,要统计财务的情况 ... -
start with ... connect by用法简介
2008-12-22 17:17 1299sql有向图问题期待新解决方案 /************* ... -
START WITH and CONNECT BY in Oracle SQL
2008-12-22 16:55 1303A simple example In the follow ... -
利用伪列算出每个月那几天是星期天(ORACLE)
2008-12-22 16:05 15701.首先我们要用到LEVEL .... CONNE ... -
Oracle层次查询和分析应用在号段选取
2008-12-22 15:33 11271. 问题的提出 在实际工作中,我们常常会碰到号段选取的 ... -
有关Oracle表分区进行(DML)维护后对索引的影响的分析
2008-12-15 14:30 2218今天对数字电视系统的 ... -
Oracle表分区和索引分区精彩汇总
2008-12-15 14:29 1986分区概述 为了简化数据库大表的管理,例如在数据仓库中 ... -
为什么有时Oracle数据库不用索引来查找数据?
2008-12-15 14:24 1259当你运用SQL语言,向数 ... -
怎样成长为一个真正的Oracle DBA
2008-12-15 12:59 934本文网址:http://bbs.bitscn.com/1674 ... -
MYSQL编码问题
2008-12-04 21:56 676一.原理篇Mysql的字符 ... -
ORACEL SQL 性能优化
2008-10-16 15:18 12561. 选用适合的ORACLE优化器 ORACLE的优化器共有 ... -
mysql 的mysql数据库
2008-09-20 17:06 1037授权表的用途: ... -
Hibernate注释简介
2008-09-19 13:54 1131在过去几年里,Hibernate不断发展,几乎成为Java数据 ...
相关推荐
当系统出现"checkpoint not complete"错误时,意味着检查点过程未能完成,可能影响到实例恢复。为优化此过程,需要监控和调整检查点频率,确保脏数据及时写入,减少实例崩溃后的恢复时间。 除了上述两个方面,还有...
例如,如果经常出现Checkpoint not complete或Redo Log Group not archived等警告信息,则可能需要增加日志组的数量。 **2. 重做日志文件的复用** 强烈建议创建复用重做日志文件来提高系统的可靠性。这意味着在一...
频繁的redo log切换可能表明存在checkpoint not complete等问题,需检查alert日志并监控系统I/O状态,必要时增大redo log文件大小以改善性能。 #### 四、redo log状态解析 v$log视图提供了redo log的当前状态信息...
- **增量检查点** (Checkpoint Not Complete): 仅更新控制文件中的SCN。 - **完全检查点** (Handy Checkpoint): 更新控制文件和数据文件。 - **恢复机制**: - **SMON (System Monitor)**: 负责恢复失败的事务至...
Checkpoint not complete Current log #1 seq #8739 mem #0: +DATA/pracdb1/onlinelog/group_1.257.648662189 Current log #1 seq #8739 mem #1: +FLASH/pracdb1/onlinelog/group_1.257.648662191 Thread 1 advanced...
5. **Checkpoint not complete** - 原因:表明数据库无法完成Checkpoint操作。 - 解决方案:检查I/O子系统是否有问题,确保有足够的磁盘空间和良好的磁盘性能。 6. **Thread n Advanced to Log Sequence n** - ...
#### ORA-00070: Checkpoint not complete - **描述**:检查点未完成。 - **解决方法**:等待检查点完成或优化检查点设置。 #### ORA-00071: Value must be between 1 and 200 - **描述**:值必须介于 1 和 200 ...
- `Checkpoint Not Complete`:检查点未完成。 - `Snapshot too old`:快照过旧。 **后台进程跟踪文件**: - 路径同上。 - 示例文件名:`erp_lgwr_2548.trc`等。 **用户跟踪文件**: - 路径:`udump`。 - ...
例如,在日志文件中可能会出现类似“Checkpoint not complete”这样的消息,这表明数据库的检查点未能正常完成,可能导致数据不一致或丢失。 - **警报日志文件的管理**:DBA应该定期查看警报日志文件,并且根据情况...
update a set aa=null where aa is not null; delete from a where rowid!= (select max(rowid) from a b where a.aa=b.aa); 13、删除同其他表相同的行 delete from a where exits (select \'X\' from b ...
1 1 1 TNAME VARCHAR2(30) NOT NULL 2 2 2 TABTYPE VARCHAR2(7) 3 3 3 CLUSTERID NUMBER 要恢复这个表的数据, 首先要在AUL中运行SCAN EXTENT命令, 因为Segment Header被格式化了, 所以Extent Map也可能丢失, ...