0607Private Strand Flush Not Complete 2

[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太慢等因素.

时间: 2024-10-10 07:19:09

0607Private Strand Flush Not Complete 2的相关文章

关于 Private strand flush not complete

      网友发来告警日志,原本是关于一个死锁的情形,而另外的一个问题则是从redo log buffer写出到redo log file出现了不能分配新的日志,Private strand flush not complete的等待事件.这是个和redo log相关的话题,从Meatlink也找到了对此的描述如下文.   1.错误消息 Tue Sep 24 14:27:48 2013Thread 1 cannot allocate new log, sequence 22120Private

0322Private strand flush not complete

[20170322]Private strand flush not complete.txt --//探究一下生产系统出现alert大量出现Private strand flush not complete.这台服务去年4,5月我做了优化,前面设置sga太小,导致数 --//据缓存很小. SYS@xxxxxx> select * from v$version; BANNER ------------------------------------------------------------

Thread 1 cannot allocate new log Private strand flush not complete 警告

官方解释如下: CHANGES 切换日志时,所有 private strand 都必须刷新到当前日志,然后才允许继续切换. CAUSE 此信息表示我们在尝试切换时,尚未完全将所有 redo 信息写入到日志中.它本质上类似于"checkpoint not complete",不同的是,它仅涉及到正在被写入日志的redo.在写入所有 redo 前,无法切换日志. "strand"是 10g 中的新术语,它用于处理 redo 的 latch. Strands是一种允许进程

解决Oracle 12.1.0.2 的OLAP API组件无效问题

数据库从11.2.0.3.x升级到12.1.0.2.3之时出现如下错误,Oracle OLAP API组件无效 Oracle Database 12.1 Post-Upgrade Status Tool           04-21-2015 10:58:50                                                                                      Component                        

ORA-16401: archivelog rejected by RFS

早上检查邮件的时候发现有ORA-16401: archive log rejected by Remote File Server (RFS)报警邮件! 通常此问题是由于主库的fal_client参数与备库的log_archive_dest_n中的service参数不匹配造成的. 模拟一下环境(案例来自metalink [ID 1183143.1]) ********* Primary ******** log_archive_config DG_CONFIG=(p1ncm1,p1ncm2) l

oracle数据库-oracle 11g ORA-00445:每个月数据库都会死,pl/sql登录不上

问题描述 oracle 11g ORA-00445:每个月数据库都会死,pl/sql登录不上 每个月数据库都会无缘无故的死掉,重启数据库又正常了,下面是alert_orcl.log里面的日志,window服务器内存8G ,oracle版本11gR2,这个是什么原因导致的呢 Tue Oct 28 20:18:25 2014 Errors in file d:oraclediagrdbmsorclorcltraceorcl_cjq0_2628.trc (incident=65106): ORA-00

[20170322]关于IMU.txt

[20170322]关于IMU.txt --昨天测试实例crash恢复时,别人测试无法重复我前面的测试,最终发现IMU导致这个问题. --我本人对IMU的东西很少探究.摘抄一段: 从Oracle10g开始,Oracle在数据库中引入了In Memory Undo(可以被缩写为IMU)的新技术,使用这一技术,数据库会在共享内存中 (Shared Pool)开辟独立的内存区域用于存储Undo信息,这样就可以避免Undo信息以前在Buffer Cache中的读写操作,从而可以进一步的 减少Redo生成

[20140418]使用dgmgrl管理dataguard(6).txt

[20140418]使用dgmgrl管理dataguard(6).txt 参考链接: http://blog.itpub.net/267265/viewspace-1142649/ http://blog.itpub.net/267265/viewspace-1143027/ http://blog.itpub.net/267265/viewspace-1143058/ http://blog.itpub.net/267265/viewspace-1143126/ http://blog.itp

【MOS】中文文档列表 - Oracle Database (文档 ID 1533057.1)

中文文档列表 - Oracle Database (文档 ID 1533057.1) 类型: 状态: 上次主更新: 上次更新: ANNOUNCEMENT PUBLISHED 2017-2-23 2017-2-23     文档内容 详细信息 操作   Oracle 数据库技术支持通讯   安装/升级/降级/迁移相关     日常管理相关   性能相关     集群及存储相关   高可用相关   TimesTen 内存数据库 联系人 参考 适用于: Oracle Database - Enterp