Oracle数据库架构中的细分,范围和数据块,如何使用?

时间:2014-09-27 15:46:33

标签: oracle database-administration segment

在Oracle数据库架构中,有段,范围和数据块。

enter image description here

但作为一名程序员,我什么时候才能知道这些事情呢?当我测试Oracle内存管理时,它们对我有什么用呢。

有没有办法查询这些内存单元?或者它主要是为了dba方面?感谢

1 个答案:

答案 0 :(得分:2)

了解底层物理存储架构是一件好事,因为它可以让您设计和编写更高效的数据库应用程序;但这并非严格必要。

细分,范围和块是一个实现细节。

那就是说,你应该知道如何分析它们,你可以看到它们没有DBA权限,对初学者使用USER_SEGMENTS和USER_EXTENTS视图。

段可用于查看表/索引的低级存储。你应该知道你的桌子有多大。

以下是初学者用于了解数据库或表空间中对象的示例。

SQL> select segment_type, segment_name, bytes from user_segments
where segment_type in ('TABLE', 'INDEX') order by bytes desc


SEGMENT_TYPE       SEGMENT_NAME                                       BYTES
------------------ --------------------------------------------------------------------------------- ----------
TABLE          BIG                                            209715200
TABLE          FAKE                                         4194304
TABLE          MD_TRIGGERS                                       262144
TABLE          MD_DERIVATIVES                                    196608
INDEX          IX_ZZ_NVL                                         196608
TABLE          MD_PRIVILEGES                                     196608
INDEX          MD_COLUMNS_PERF_IDX                                   131072
INDEX          MD_DERIVATIVES_PERF_IDX1                              131072
...

此查询的一个特定用途是研究表和索引的足迹之前和之后,以查看重建的有效性。例如,您可能会发现有数百个小表在大范围的表空间中,您可以使用较小的初始范围重建这些表,并使用段视图来查看它的工作情况。

我可以找到它们所在的表空间,并确定BIG可能是一个很好的表,可以从USERS表空间移出更大范围的表空间。

SQL> select segment_type, tablespace_name, segment_name, bytes from user_segments
  where segment_type in ('TABLE', 'INDEX') order by bytes desc;
    2  
SEGMENT_TYPE       TABLESPACE_NAME        SEGMENT_NAME                                       BYTES
------------------ ------------------------------ --------------------------------------------------------------------------------- ----------
TABLE          USERS              BIG                                            209715200
TABLE          USERS              FAKE                                             4194304
TABLE          USERS              MD_TRIGGERS                                       262144
TABLE          USERS              MD_DERIVATIVES                                    196608