[20170607]再论Private Strand Flush Not Complete.txt
[20170607]再论Private Strand Flush Not Complete.txt
--//曾经跟zergduan有过讨论,链接www.itpub.net/thread-2065703-1-1.html,按照道理只要使用IMU,在日志切换时如果在Private Strand
--//有信息一定会出现Private Strand Flush Not Complete提示在alert.log日志文件中,因为要把那些信息写入redo文件.
--//我在我的一个生产系统看到,我发现一个没有很好优化的系统也大量出现,而且出现时间大部分在我优化前,
--//链接:blog.itpub.net/267265/viewspace-2135830/
--//所以给我印象是出现这种情况:redo太小,磁盘写入太慢.等因素.
--//实际上可以做一个简单的例子验证我的判断是错误的.
1.环境:
SYS@book> @ &r/ver1
PORT_STRING VERSION BANNER
------------------------------ -------------- --------------------------------------------------------------------------------
x86_64/Linux 2.4.xx 11.2.0.4.0 Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
SYS@book> select flashback_on from v$database;
FLASHBACK_ON
-------------
NO
--//是否开启IMU,可以查询视图X$KCRFSTRAND确定.
SELECT INDX
,last_buf_kcrfa
,PNEXT_BUF_KCRFA_CLN nxtbufadr
,NEXT_BUF_NUM_KCRFA_CLN nxtbuf#
,BYTES_IN_BUF_KCRFA_CLN "B/buf"
,PVT_STRAND_STATE_KCRFA_CLN state
,STRAND_NUM_ORDINAL_KCRFA_CLN strand#
,PTR_KCRF_PVT_STRAND stradr
,INDEX_KCRF_PVT_STRAND stridx
,SPACE_KCRF_PVT_STRAND strspc
,TXN_KCRF_PVT_STRAND txn
,TOTAL_BUFS_KCRFA totbufs#
,STRAND_SIZE_KCRFA strsz
FROM X$KCRFSTRAND ;
2.测试:
SCOTT@book> create table deptx tablespace tea as select * from dept ;
Table created.
SCOTT@book> update deptx set dname=lower(dname) where deptno=10;
1 row updated.
SCOTT@book> @ &r/xid
XIDUSN_XIDSLOT_XIDSQN
------------------------------
16.27.91
C70 XIDUSN XIDSLOT XIDSQN UBAFIL UBABLK UBASQN UBAREC STATUS USED_UBLK USED_UREC XID ADDR START_DATE
---------------------------------------------------------------------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ------ ---------- ---------- ---------------- ---------------- -------------------
ALTER SYSTEM DUMP UNDO BLOCK '_SYSSMU16_4044556495$' XID 16 27 91; 16 27 91 7 1053 101 23 ACTIVE 1 1 10001B005B000000 00000000818B3C60 2017-06-07 09:11:53
ALTER SYSTEM DUMP UNDO HEADER '_SYSSMU16_4044556495$';
ALTER SYSTEM DUMP DATAFILE 7 BLOCK 1053;
SCOTT@book> alter system switch logfile ;
System altered.
3.查看alert.log:
Wed Jun 07 09:12:37 2017
Thread 1 cannot allocate new log, sequence 814
Private strand flush not complete
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Current log# 2 seq# 813 mem# 0: /mnt/ramdisk/book/redo02.log
Beginning log switch checkpoint up to RBA [0x32e.2.10], SCN: 13278969076
Thread 1 advanced to log sequence 814 (LGWR switch)
Current log# 3 seq# 814 mem# 0: /mnt/ramdisk/book/redo03.log
Wed Jun 07 09:12:37 2017
Archived Log entry 1400 added for thread 1 sequence 813 ID 0x4fb7d86e dest 1:
--//注意~线的内容,也就是private strand有信息,在日志切换时要将以上信息写入日志就会出现Private strand flush not complete的
--//情况
SCOTT@book> @ &r/xid
XIDUSN_XIDSLOT_XIDSQN
------------------------------
16.27.91
C70 XIDUSN XIDSLOT XIDSQN UBAFIL UBABLK UBASQN UBAREC STATUS USED_UBLK USED_UREC XID ADDR START_DATE
---------------------------------------------------------------------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------------- ---------- ---------- ---------------- ---------------- -------------------
ALTER SYSTEM DUMP UNDO BLOCK '_SYSSMU16_4044556495$' XID 16 27 91; 16 27 91 7 1053 101 23 ACTIVE 1 1 10001B005B000000 00000000818B3C60 2017-06-07 09:11:53
ALTER SYSTEM DUMP UNDO HEADER '_SYSSMU16_4044556495$';
ALTER SYSTEM DUMP DATAFILE 7 BLOCK 1053;
--//可以看到事务没有提交.
$ strings /mnt/ramdisk/book/redo02.log | grep -i accounting
accounting
ACCOUNTING
--//可以已经写入日志文件中.
4.继续测试:
SCOTT@book> rollback ;
Rollback complete.
SCOTT@book> update deptx set dname=lower(dname) where deptno=30;
1 row updated.
SYS@book> alter system archive log current ;
System altered.
--//查看alert.log:
Wed Jun 07 09:21:24 2017
ALTER SYSTEM ARCHIVE LOG
Wed Jun 07 09:21:24 2017
Thread 1 cannot allocate new log, sequence 816
Private strand flush not complete
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Current log# 1 seq# 815 mem# 0: /mnt/ramdisk/book/redo01.log
Beginning log switch checkpoint up to RBA [0x330.2.10], SCN: 13278969776
Thread 1 advanced to log sequence 816 (LGWR switch)
Current log# 2 seq# 816 mem# 0: /mnt/ramdisk/book/redo02.log
Archived Log entry 1402 added for thread 1 sequence 815 ID 0x4fb7d86e dest 1:
$ strings /mnt/ramdisk/book/redo01.log | grep -i sales$
sales
SALES
--//使用alter system archive log current ;切换也一样.
--//从以上测试,说明我以前学习判断存在错误,正如zergduan所讲,使用IMU出现Private Strand Flush Not Complete是正常的现象.
5.再继续测试:
--//测试如果已经从private stand写出,后续的事务是否还继续使用IMU.
SCOTT@book> rollback ;
Rollback complete.
SCOTT@book> @ &r/logfile
GROUP# STATUS TYPE MEMBER IS_ GROUP# THREAD# SEQUENCE# BYTES BLOCKSIZE MEMBERS ARC STATUS FIRST_CHANGE# FIRST_TIME NEXT_CHANGE# NEXT_TIME
------ ------ ------- ------------------------------- --- ------ ------- --------- ----------- --------- ------- --- ---------- ------------- ------------------- ------------ -------------------
1 ONLINE /mnt/ramdisk/book/redo01.log NO 1 1 815 52428800 512 1 YES INACTIVE 13278969564 2017-06-07 09:18:00 13278969776 2017-06-07 09:21:24
2 ONLINE /mnt/ramdisk/book/redo02.log NO 2 1 816 52428800 512 1 NO CURRENT 13278969776 2017-06-07 09:21:24 2.814750E+14
3 ONLINE /mnt/ramdisk/book/redo03.log NO 3 1 814 52428800 512 1 YES INACTIVE 13278969076 2017-06-07 09:12:37 13278969564 2017-06-07 09:18:00
4 STANDBY /mnt/ramdisk/book/redostb01.log NO
5 STANDBY /mnt/ramdisk/book/redostb02.log NO
6 STANDBY /mnt/ramdisk/book/redostb03.log NO
7 STANDBY /mnt/ramdisk/book/redostb04.log NO
7 rows selected.
--//当前日志是/mnt/ramdisk/book/redo02.log.
$ strings /mnt/ramdisk/book/redo02.log | grep jjjj1234
--//没有jjjj1234信息.
SCOTT@book> update deptx set dname='jjjj1234' where deptno=10;
1 row updated.
$ strings /mnt/ramdisk/book/redo02.log | grep jjjj1234
--//没有jjjj1234信息.
SYS@book> alter system checkpoint ;
System altered.
$ strings /mnt/ramdisk/book/redo02.log | grep jjjj1234
jjjj1234
--//已经写入日志.如果不出现可以执行alter system checkpoint ;多次.可以参考链接http://blog.itpub.net/267265/viewspace-2137720/
--//[20170421]警惕打开IMU对测试的影响.txt.
SCOTT@book> update deptx set dname='jjjj1234' where deptno=20;
1 row updated.
$ strings /mnt/ramdisk/book/redo02.log | grep jjjj1234
jjjj1234
jjjj1234
--//可以发现后续的事务,不再使用IMU.
总结:
1.使用IMU在alert.log文件中出现Private Strand Flush Not Complete是正常的现象.不必过滤.
2.如果出现与redo相关的等待事件,才要引起关注,是否切换太频繁,是否日志太小,磁盘IO太慢等因素.
[20170607]再论Private Strand Flush Not Complete.txt的更多相关文章
- 关于 Private strand flush not complete
网友发来告警日志,原本是关于一个死锁的情形,而另外的一个问题则是从redo log buffer写出到redo log file出现了不能分配新的日志,Private strand flush not ...
- Private strand flush not complete错误
Private strand flush not complete错误 (2013-10-22 11:04:58) 转载▼ 分类: FAQ 最近的一个报表系统数据库,总是出现checkpoint ...
- Private strand flush not complete
当切换日志的时候,所有private strands的内容都会被flush到当前的日志中,然后日志切换才可以完成. strand是在oracle 10g中引入的新术语,和redo的latches相关. ...
- 11g Physical Standby配置
一,准备 Database DB_UNIQUE_NAME Oracle Net Service Name Primary PROD PROD Physical standby PRODDG PRO ...
- ORA-00020: No more process state objects available故障一例
今天公司一大早收到通知,昨天数据库数据未生成.当时查看跑批的日志,发现平常只需运行半个小时的过程,今天整整运行了7个小时(明显存在问题),导致后续数据正常时间读取失败.为了了解起因,查看了oracle ...
- Oracle 下马观花看redo
----------------------------------------- --Lerning Content :Oracle 下马观花看redo --Author :如人饮水冷暖自知 --版 ...
- Oracle死锁一例(ORA-00060),锁表导致的业务死锁问题
1.问题发现 检查客户数据库的时候发现存在大量死锁的情况 Thread advanced to log sequence (LGWR switch) Current log# mem# : /orad ...
- 相似进程死掉Process com.midea.mmp2 died.
此异常查到网上有一篇不错的文章例如以下: 08:56:03,273 INFO – 运行Do func=[GetSeqNo] keyNam=[keynam];KeyVal=[PRYPAYBILSYSTR ...
- MOS文章翻译
http://blog.csdn.net/column/details/msdnchina.html?&page=1 http://blog.csdn.net/staricqxyz/artic ...
随机推荐
- vue-06-过度和动画
1, css过度与动画 需要使用 v-if, v-show 来进行 1), 过度类名 v-enter: 进入时触发 v-enter-active: 执行过程中 v-enter-to: 停止时进行 v- ...
- ui2code中的深度学习+传统算法应用
背景 在之前的文章中,我们已经提到过团队在UI自动化这方面的尝试,我们的目标是实现基于 单一图片到代码 的转换,在这个过程不可避免会遇到一个问题,就是为了从单一图片中提取出足够的有意义的结构信息,我们 ...
- spring-boot (四) springboot+mybatis多数据源最简解决方案
学习文章来自:http://www.ityouknow.com/spring-boot.html 配置文件 pom包就不贴了比较简单该依赖的就依赖,主要是数据库这边的配置: mybatis.confi ...
- Wireshark的基本使用——过滤器
前言 网络上关于Wireshark的教程已有不少,博主就简单介绍一下Wireshark分析数据包时最重要的技巧之一的过滤器..一次性嗅探到的数据包有很多,想要高效地提取出你想要的数据包或者对某个数据包 ...
- docker常用命令2
Docker作为一种开源的.优秀的容器化技术,目前受到越来越多公司的运用,下面是我工作中常用到的一些命令. 1.删除一个容器(删除之前先要停止该容器) docker stop 容器IDdocker r ...
- 解读经典《C#高级编程》第七版 Page79-93.对象和类型.Chapter3
前言 本篇我们继续讲解本章其余的部分:构造函数.只读字段.匿名类型.结构详解.部分类.静态类.Object类.扩展方法,等. 01 类 构造函数 构造函数是一种特殊的方法: 与类同名 没有返回值,甚至 ...
- MySQL的binlog恢复(Windows下)
前言 在最近的工作中,由于自己粗(zuo)心(si)误update操作导致几百行的数据出现错误,在心急如焚的同时(那时候我竟然不知道除了备份之后还有binlog日志恢复)立马查资料学习binlog的恢 ...
- iOS SQLite详解
这周比较忙,前几天都加班到11点左右,基本都是到家都是12点左右(稍稍的抱怨一下,免费加班,何为免费,就是任何补偿都没有,例如调休,加班薪,餐补等各项福利,是一点都没有呀)因为App要上线了!App上 ...
- 第一册:lesson eighty three.
原文:Going on holiday. A:Hello Sam, come in. B:Hi,Sam.We are having lunch. Do you want to have lunch w ...
- Easyui input 取值跟赋值
var val = $("#id").textbox('getValue') //取值 $("#id").textbox('setValue','text') ...