2016-05-10 15 views
1

Oracleの使用経験は非常に限られています。私は100万行を含むテーブルを持っていますが、データを圧縮することでスペースが少なくて済むことを証明しようとしていますが、これを行う方法がわからないのですが、このテーブルの作成に基づいて誰かが私に前/後に使用されるブロック?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; 

私は圧縮がどのように働くかなど知っています...そのコードを私の理論に適用するだけです。任意のヘルプ

答えて

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

ためのおかげで今のテーブルを圧縮する:(あなただけのテーブルの属性を変更すると、後続のダイレクト・パス・インサートは圧縮ブロックを作成します。それがなければmoveに注意してください。)

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'; 
+0

よろしくお願いします。私はAutoTraceを使用して何かをしていますが、私はそれを表示する権限を持っていません。もう一度おはよう – Crezzer7

関連する問題