Archive for 十二月, 2005

dynamic sampling

dynamic sampling对于我们来说其实不算太陌生,从9i r2开始,dynamic sampling其实已经不动声色地融入到数据库中了。
我们经常会碰到由于一些表没有分析导致执行计划错误的情况,但是dynamic sampling的出现一定程度的减少了错误的产生。dynamic sampling针对没有分析过的表可以采样估计表的选择性,对于生产正确的执行计划有一定的帮助。
Continue reading ‘dynamic sampling’

oracle block cleanout

上一篇文章正好写到oracle lock mechanism internal,这次顺理成章得写一下block cleanout,因为cleanout与transaction,lock都有密切关系。

cleanout分为2钟,一种是fast commit cleanout,另一种是delayed block cleanout.
Continue reading ‘oracle block cleanout’

oracle lock mechanism internal

谈到oracle的锁机制,这是oracle和其他数据库区别比较大的地方,为了更好的解释其中的原来,我们在这篇文章中主要介绍tx lock,所以以下提到的lock均代表tx lock。
Continue reading ‘oracle lock mechanism internal’

bulk fetch limit

bulk fetch limit可以限制每次bulk collect into的行数,这在fetch一个大cursor时非常有必要,因为它能减少pga的内存使用量。

我们来看一下加了limit子句和不加limit的pga使用率的区别

首先看一下不执行语句时的pga使用率
Continue reading ‘bulk fetch limit’

10g r2之log error

10gr2的logerror功能有点接近于以前的exception表,不过相比exception表它更灵活,内容更丰富。

SQL 10G>desc test
Name Null? Type
—————————————– ——– —————————-
OWNER VARCHAR2(30)
OBJECT_NAME VARCHAR2(128)
SUBOBJECT_NAME VARCHAR2(30)
OBJECT_ID NUMBER
DATA_OBJECT_ID NUMBER
OBJECT_TYPE VARCHAR2(19)
CREATED DATE
LAST_DDL_TIME DATE
TIMESTAMP VARCHAR2(19)
STATUS VARCHAR2(7)
TEMPORARY VARCHAR2(1)
GENERATED VARCHAR2(1)
SECONDARY VARCHAR2(1)

首先我们的创建error表

SQL 10G>exec dbms_errlog.create_error_log(’TEST’ );

PL/SQL procedure successfully completed.

创建的error表以err$_开头,加上表名,包含了test表的所有列

Continue reading ‘10g r2之log error’