在管理版上这样的说法:
如果是全表扫描,读取segment header之后会通过extent链的方式读下去,即使你drop掉表,由于物理块还是存在的所以不会出问题。
但是oracle每读10个extent会需要重新读取header一次,那么这个时候如果表不存在的话,会发现在数据字典里面已经不存在了,那么就会报表找不到。
和屏幕输出什么的没什么关系。。。
原文: http://www.itpub.net/viewthread. ... p;extra=&page=3
不太认同这样的说法,做了测试,如不对,欢迎大家指出:
测试环境: LINUX 4.6 + ORACLE 10.2.0.4
对象T1 的SEGEMNT 的信息:
SEGMENT_NAME FILE_ID BLOCK_ID
--------------------------------------------------------------------------------- ---------- ----------
T1 1 55921
T1 1 55929
T1 1 55937
T1 1 55945
T1 1 55953
T1 1 55961
T1 1 55969
T1 1 55977
T1 1 55985
T1 1 55993
可以看到SEGMENT HEADER 的BLOCK NUMBER为55921。
对象号为:17890, 所在的FILE NUMNER 为1。有80个BLOCK。
查询header被touch的次数:
select ADDR , FILE#, DBABLK ,STATE , TCH from x$bh where file#=1 and OBJ=17890 and DBABLK=55921
在对TABLE做查询前先做查询,看SEGMENT HEADER 被访问的次数:
0000002A97A6D430 1 55921 1 8
进行查询:
SQL> select count(*) from t1;
COUNT(*)
----------
5790
再次查看SEGMENT HEADER被touch的次数:
SQL> /
ADDR FILE# DBABLK STATE TCH
---------------- ---------- ---------- ---------- ----------
0000002A97A6D430 1 55921 1 9
看到touch次数只增加了1次,不是按照设想的增加为8+80/10=16次。
进行多次测试,结果都是一样的,都只增加一次。
将数据量变大为原先的4倍,再次测试结果也是一样的,都只增加一次。
如果是全表扫描,读取segment header之后会通过extent链的方式读下去,即使你drop掉表,由于物理块还是存在的所以不会出问题。
但是oracle每读10个extent会需要重新读取header一次,那么这个时候如果表不存在的话,会发现在数据字典里面已经不存在了,那么就会报表找不到。
和屏幕输出什么的没什么关系。。。
原文: http://www.itpub.net/viewthread. ... p;extra=&page=3
不太认同这样的说法,做了测试,如不对,欢迎大家指出:
测试环境: LINUX 4.6 + ORACLE 10.2.0.4
对象T1 的SEGEMNT 的信息:
SEGMENT_NAME FILE_ID BLOCK_ID
--------------------------------------------------------------------------------- ---------- ----------
T1 1 55921
T1 1 55929
T1 1 55937
T1 1 55945
T1 1 55953
T1 1 55961
T1 1 55969
T1 1 55977
T1 1 55985
T1 1 55993
可以看到SEGMENT HEADER 的BLOCK NUMBER为55921。
对象号为:17890, 所在的FILE NUMNER 为1。有80个BLOCK。
查询header被touch的次数:
select ADDR , FILE#, DBABLK ,STATE , TCH from x$bh where file#=1 and OBJ=17890 and DBABLK=55921
在对TABLE做查询前先做查询,看SEGMENT HEADER 被访问的次数:
0000002A97A6D430 1 55921 1 8
进行查询:
SQL> select count(*) from t1;
COUNT(*)
----------
5790
再次查看SEGMENT HEADER被touch的次数:
SQL> /
ADDR FILE# DBABLK STATE TCH
---------------- ---------- ---------- ---------- ----------
0000002A97A6D430 1 55921 1 9
看到touch次数只增加了1次,不是按照设想的增加为8+80/10=16次。
进行多次测试,结果都是一样的,都只增加一次。
将数据量变大为原先的4倍,再次测试结果也是一样的,都只增加一次。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/40239/viewspace-616596/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/40239/viewspace-616596/