标签归档:rowid

根据块号查看块内数据和修改时间的例子(普通表和压缩表)

今天微信群里有个朋友问起一个问题,顺手做了个测试。 问题是这样的: 1,怎么根据file# block#来判断这个block中有多少数据? 2,启用了高级压缩后,如何查看? 3,怎么判断这些数据插入的时间? 4,不适用dump block的形式,可以怎么观察? 最后一个问题不用测试了,不用dump的话,可以使用类似bbed等一堆工具,还可以使用event 10046跟踪来观察。 本次始终压缩相关的脚本可以参考blog: Exadata上的HCC测试(EHCC)——1 Exadata上的HCC测试(EHCC)—2—:DBMS_COMPRESSION.GET_COMPRESSION_RATIO Exadata上的HCC测试(EHCC)—3—分区表的压缩 关于HCC压缩的块结构参见: Exadata上HCC表的数据块结构—1-非压缩数据块结构 Exadata上HCC表的数据块结构—2-BASIC Compress和OLTP Compress Exadata上HCC表的数据块结构—3-HCC块(compress for query low) 前三个问题,一次测试如下: 因为朋友问到ASM的情况,这个需求实际上跟是否使用ASM无关,是ORACLE DB的原理,测试环境如下: 随便找一个block,或者指定一个block都可以: 查看这个block中有多少条数据: 这里看到,目前这个block中存储了88行记录。 查看这88行数据是什么时间插入的,以及他们的ROWID: 这里看到有88行,跟前面的结果是一致的。 看看这个表中有多少个block,以及他们的块号: 因为要测试压缩,那么先看看现在该表的压缩状态,这里我的LUNAR表是没有压缩的: 这里的查询方法,参考: 现在启用压缩(HCC只能在exadata上,否则会报错): 再次查询,可以看到,已经是高级压缩了: 这里可以看到,rowid已经改变了,这是因为块的存储格式已经变化了: 看下现在这个LUNAR表使用了哪些block: 这里看到比刚才已经减少了17-12=5个block。 查询每个block中的记录数: … 继续阅读

发表在 Internal, 内部机制 | 标签为 , | 一条评论