[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的更多相关文章

  1. 关于 Private strand flush not complete

    网友发来告警日志,原本是关于一个死锁的情形,而另外的一个问题则是从redo log buffer写出到redo log file出现了不能分配新的日志,Private strand flush not ...

  2. Private strand flush not complete错误

    Private strand flush not complete错误 (2013-10-22 11:04:58) 转载▼   分类: FAQ 最近的一个报表系统数据库,总是出现checkpoint ...

  3. Private strand flush not complete

    当切换日志的时候,所有private strands的内容都会被flush到当前的日志中,然后日志切换才可以完成. strand是在oracle 10g中引入的新术语,和redo的latches相关. ...

  4. 11g Physical Standby配置

    一,准备   Database DB_UNIQUE_NAME Oracle Net Service Name Primary PROD PROD Physical standby PRODDG PRO ...

  5. ORA-00020: No more process state objects available故障一例

    今天公司一大早收到通知,昨天数据库数据未生成.当时查看跑批的日志,发现平常只需运行半个小时的过程,今天整整运行了7个小时(明显存在问题),导致后续数据正常时间读取失败.为了了解起因,查看了oracle ...

  6. Oracle 下马观花看redo

    ----------------------------------------- --Lerning Content :Oracle 下马观花看redo --Author :如人饮水冷暖自知 --版 ...

  7. Oracle死锁一例(ORA-00060),锁表导致的业务死锁问题

    1.问题发现 检查客户数据库的时候发现存在大量死锁的情况 Thread advanced to log sequence (LGWR switch) Current log# mem# : /orad ...

  8. 相似进程死掉Process com.midea.mmp2 died.

    此异常查到网上有一篇不错的文章例如以下: 08:56:03,273 INFO – 运行Do func=[GetSeqNo] keyNam=[keynam];KeyVal=[PRYPAYBILSYSTR ...

  9. MOS文章翻译

    http://blog.csdn.net/column/details/msdnchina.html?&page=1 http://blog.csdn.net/staricqxyz/artic ...

随机推荐

  1. Unity UI性能优化技巧

    本文将介绍一些提升Unity UI性能的技巧.更多优化技巧,可以观看Unity工程师Ian Dundore在Unite Europe 2017的演讲<使用Unity性能提升技巧>. 1.划 ...

  2. Java线程池ThreadPoolExecutor使用和分析(一)

    相关文章目录: Java线程池ThreadPoolExecutor使用和分析(一) Java线程池ThreadPoolExecutor使用和分析(二) - execute()原理 Java线程池Thr ...

  3. man mountd(rpc.mountd中文手册)

    本人译作集合:http://www.cnblogs.com/f-ck-need-u/p/7048359.html rpc.mountd() System Manager's Manual rpc.mo ...

  4. 容器概念与Linux Container原理

    一.容器与LxC 在像KVM等众多主机虚拟化解决方案中,对每一个虚拟机实例提供的是从底层硬件开始一直到上层的环境,在硬件级进行资源划分.虚拟机的内核是运行在硬件内核之上的.由于每个虚拟实例都有自己的运 ...

  5. 分布式系统监视zabbix讲解十之监控tomcat--技术流ken

    前言 在Zabbix中,JMX监控数据的获取由专门的代理程序来实现,即Zabbix-Java-Gateway来负责数据的采集,Zabbix-Java-Gateway和JMX的Java程序之间通信获取数 ...

  6. 跨域 webpack + vue-cil 中 proxyTable 处理跨域

    博客地址:https://ainyi.com/27 跨域 了解同源政策:所谓"同源"指的是"三个相同". 协议相同 域名相同 端口相同 解决跨域 jsonp 缺 ...

  7. Java编程思想——异常

    1.异常对象的方法printStackTrace 作用是打印Throwable和Throwable的调用栈轨迹. 2.finally 不管抛没抛出异常,都会执行finally中的代码.前提是出异常的代 ...

  8. 【转】没那么难,谈CSS的设计模式

    什么是设计模式? 曾有人调侃,设计模式是工程师用于跟别人显摆的,显得高大上:也曾有人这么说,不是设计模式没用,是你还没有到能懂它,会用它的时候. 先来看一下比较官方的解释:“设计模式(Design p ...

  9. [转]PHP开发者必须了解的工具—Composer

    本文转自:https://blog.csdn.net/Zhihua_W/article/details/80345973 Composer是PHP 用来管理依赖(dependency)关系的工具.你可 ...

  10. 阿里云免费SSL证书申请与安装使用(IIS7)

    准备: 阿里云已完成备案的域名一个 第一步:免费SSL证书申请 登陆阿里云平台,在域名控制台下,选择你的域名,点击“SSL”证书,如图所示 再跳转后的页面,选择“单域名免费证书”,并补全域名,非二级域 ...