Oracle—如何查看一个表中使用了多少块

Oracle—如何查看一个表中使用了多少块,oracle,Oracle,在使用Oracle时,我的经验非常有限,我想我需要的是一个相当简单的查询。我有一个包含一百万行的表,我试图证明压缩数据使用更少的空间,但是我不知道如何做到这一点,基于下面的表创建,有人能告诉我需要写什么来查看之前/之后使用的块吗 CREATE TABLE OrderTableCompressed(OrderID, StaffID, CustomerID, TotalOrderValue) as (select level, ceil(dbms_random.value(0, 1000)),

在使用Oracle时,我的经验非常有限,我想我需要的是一个相当简单的查询。我有一个包含一百万行的表,我试图证明压缩数据使用更少的空间,但是我不知道如何做到这一点,基于下面的表创建,有人能告诉我需要写什么来查看之前/之后使用的块吗

CREATE TABLE OrderTableCompressed(OrderID, StaffID, CustomerID, TotalOrderValue)
as (select level, ceil(dbms_random.value(0, 1000)), 
                  ceil(dbms_random.value(0,10000)), 
                  round(dbms_random.value(0,10000),2) 
    from dual 
    connect by level <= 1000000);

ALTER TABLE OrderTableCompressed ADD CONSTRAINT OrderID_PKC PRIMARY KEY (OrderID);

--QUERY HERE THAT SHOWS BLOCKS USED/TIME TAKEN
SELECT COUNT(ORDERID) FROM OrderTableCompressed;

ALTER TABLE OrderTableCompressed COMPRESS;

--QUERY HERE THAT SHOWS BLOCKS USED/TIME TAKEN WHEN COMPRESSED
SELECT COUNT(ORDERID) FROM OrderTableCompressed;
我知道压缩是如何工作的等等。。。它只是应用代码来证明我的理论。谢谢你的帮助

--QUERY HERE THAT SHOWS BLOCKS USED
SELECT blocks, bytes/1024/1024 as MB 
FROM user_segments 
where segment_name = 'ORDERTABLECOMPRESSED';
现在压缩表格:注意移动。没有它,您只需更改表的属性,随后的直接路径插入将创建压缩块

ALTER TABLE OrderTableCompressed MOVE COMPRESS;
验证块:

--QUERY HERE THAT SHOWS BLOCKS USED TAKEN WHEN COMPRESSED
SELECT blocks, bytes/1024/1024 as MB 
FROM user_segments 
where segment_name = 'ORDERTABLECOMPRESSED';

谢谢,事实证明我在使用AutoTrace时做了一些正确的事情,但我没有权限显示它哈哈!!再次感谢你