Oracle—如何查看一个表中使用了多少块
在使用Oracle时,我的经验非常有限,我想我需要的是一个相当简单的查询。我有一个包含一百万行的表,我试图证明压缩数据使用更少的空间,但是我不知道如何做到这一点,基于下面的表创建,有人能告诉我需要写什么来查看之前/之后使用的块吗Oracle—如何查看一个表中使用了多少块,oracle,Oracle,在使用Oracle时,我的经验非常有限,我想我需要的是一个相当简单的查询。我有一个包含一百万行的表,我试图证明压缩数据使用更少的空间,但是我不知道如何做到这一点,基于下面的表创建,有人能告诉我需要写什么来查看之前/之后使用的块吗 CREATE TABLE OrderTableCompressed(OrderID, StaffID, CustomerID, TotalOrderValue) as (select level, ceil(dbms_random.value(0, 1000)),
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时做了一些正确的事情,但我没有权限显示它哈哈!!再次感谢你