Oracle 盘区 - 我怎么能用这么小的尺寸拥有这么多盘区?

orb*_*ish 5 oracle oracle-11g-r2 storage

这是一个与标题几乎相同的问题不同的问题。

同样,这比我需要更改的任何内容更令人好奇 Oracle 数据库的工作原理(是的,我知道多个范围很好,我也读过 Tom Kyte)。

我有一张具有以下特征的表:

Initial Ext: 1.44GB
Next Ext:    1MB
Num Extents: 26
Size:        4.18MB
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我通过扫描 10% 的表行来获得大小。初始盘区大小如此之大,而数据如此之低,如何添加更多盘区?我确信桌子没有变大,然后又急剧缩小。

谢谢你。

Jus*_*ave 3

您从 Toad 获得的数据似乎不正确,或者至少具有误导性。如果您使用具有自动扩展区分配功能的本地管理表空间,Oracle 将自动确定您的初始和下一个扩展区大小。在 11.2 中,前 16 个扩展区的大小将为 64k(总共 1 MB)。接下来的 63 个扩展区的大小将为 1 MB。因此,如果有 26 个区,则意味着该表占用磁盘上 11 MB 的空间。1.44 GB 的初始范围毫无意义,如果您说它没有缩小,则 4.18 MB 的大小似乎相当低。

什么是

SELECT tablespace_name,
       extent_id, 
       bytes/1024 kb
  FROM user_extents
 WHERE segment_name = <<name of table>>
Run Code Online (Sandbox Code Playgroud)

给你看?如果您有 26 个扩展区,您应该会看到扩展区 0-15 的大小为 64 kb,扩展区 16-25 的大小为 1 MB。

SELECT SUM(bytes)/1024/1024 size_in_mb
  FROM user_extents
 WHERE segment_name = <<name of table>>
Run Code Online (Sandbox Code Playgroud)

将显示磁盘上表区的总大小。