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% 的表行来获得大小。初始盘区大小如此之大,而数据如此之低,如何添加更多盘区?我确信桌子没有变大,然后又急剧缩小。
谢谢你。
您从 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)
将显示磁盘上表区的总大小。