博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[20150225]Delayed Block Cleanout.txt
阅读量:6606 次
发布时间:2019-06-24

本文共 2587 字,大约阅读时间需要 8 分钟。

[20150225]Delayed Block Cleanout.txt

--主要原因是buffer太小或者修改的信息太大,大于buffer 的10%,出现一些块在dml时已经不在buffer。这样在提交时剩下的block不触

--摸,仅仅修改undo段的提交标志,表示事务已经结束。

--这样仅仅在下次select或者操作相应的数据块是在修改itl槽以及块内的信息,清除lb标识。

--昨天看了Apress.Oracle.Database.Transactions.and.Locking.Revealed.1484207610.pdf。
--参考文档,改进一下做一个测试:

1.建立测试环境:

SCOTT@test> @ver1

PORT_STRING                    VERSION        BANNER
------------------------------ -------------- --------------------------------------------------------------------------------
x86_64/Linux 2.4.xx            11.2.0.3.0     Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production

CREATE UNDO TABLESPACE UNDOTBS2 DATAFILE
  '/u01/app/oracle11g/oradata/test/undotbs02.dbf' SIZE 4M AUTOEXTEND OFF
ONLINE
RETENTION NOGUARANTEE
BLOCKSIZE 8K
FLASHBACK ON;

create table small ( x int, y char(500) );
insert into small select rownum, 'x' from all_users;
commit;
exec dbms_stats.gather_table_stats( user, 'SMALL' );

--建立sql脚本test2.sql:

set verify off
begin
for i in 1 .. 5000
loop
update small set y = i where x= &1;
commit;
end loop;
end;
/
exit

--建立shell脚本如下test2.sh:

sqlplus -s scott/btbtms @test2 1 &
sqlplus -s scott/btbtms @test2 2 &
sqlplus -s scott/btbtms @test2 3 &
sqlplus -s scott/btbtms @test2 4 &
sqlplus -s scott/btbtms @test2 5 &
sqlplus -s scott/btbtms @test2 6 &
sqlplus -s scott/btbtms @test2 7 &
sqlplus -s scott/btbtms @test2 8 &
sqlplus -s scott/btbtms @test2 9 &

2.开始测试:

alter system set undo_tablespace = UNDOTBS2;

SCOTT@test> update dept set loc=UPPER(loc) ;

7 rows updated.

SCOTT@test> alter system flush BUFFER_CACHE ;

System altered.
--我已经转储了数据缓冲。

SCOTT@test> commit ;

Commit complete.
--这样提交不写

SCOTT@test> variable x refcursor ;

SCOTT@test> exec open :x for select * from dept ;
PL/SQL procedure successfully completed.

$ ./test2.sh

--等待结束.我保险执行了2次。

SCOTT@test> set serveroutput on format wrapped

SCOTT@test> print x
ERROR:
ORA-01555: snapshot too old: rollback segment number 239 with name "_SYSSMU239_1274966276$" too small

--可以发现出现了ORA-01555错误。

SCOTT@test> column spare1 noprint

SCOTT@test> column spare2 noprint
SCOTT@test> column spare3 noprint
SCOTT@test> column spare4 noprint
SCOTT@test> column spare5 noprint
SCOTT@test> column spare6 noprint
SCOTT@test> select * from sys.undo$ where name='_SYSSMU239_1274966276$';
       US# NAME                                USER#      FILE#     BLOCK#     SCNBAS     SCNWRP    XACTSQN    UNDOSQN      INST#    STATUS$        TS#      UGRP#       KEEP    OPTIMAL      FLAGS
---------- ------------------------------ ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ----------
       239 _SYSSMU239_1274966276$                  1         10        288          0          0          0          0          0          3          5

转载地址:http://zqbso.baihongyu.com/

你可能感兴趣的文章
Visual studio Express 2012 for Web 试用
查看>>
PB控制Excel表格
查看>>
无法连接 MKS: Login(username/password)incorrect
查看>>
系统内存耗尽的案例分析
查看>>
Exchange2010 生成以下严重警告: 10。内部错误状态为 1203
查看>>
springboot docker笔记
查看>>
idea git 合并本地分支
查看>>
juniper发布pptp服务器
查看>>
跟我一起学QT3:电子表格的制作
查看>>
mysql char和varchar区别
查看>>
Modbus RTU 通信工具设计
查看>>
C语言格式化输出小结
查看>>
Java中的排列组合(二)
查看>>
10月10日全球域名注册商(国际域名)保有量及市场份额
查看>>
NFS配置及FTP(exportfs命令、NFS客户端问题、FTP介绍、使用vsftpd搭建ftp)
查看>>
服务化改造实践 | 如何在 Dubbo 中支持 REST
查看>>
From Apprentice To Artisan 翻译 13
查看>>
Nginx日志切割脚本
查看>>
高可用性×××(链路备份)
查看>>
[java理论篇]--java的环境
查看>>