CREATE USER z_test IDENTIFIED BY welcome1;
GRANT CONNECT, RESOURCE TO z_test;
CREATE TABLESPACE bigdata
DATAFILE SIZE 100M AUTOEXTEND ON NEXT 100M MAXSIZE UNLIMITED;
ALTER USER z_test QUOTA UNLIMITED ON bigdata;
CONN z_test/welcome1
CREATE TABLE bigtable
TABLESPACE bigdata
AS
SELECT rownum id, a.*
FROM all_objects a
WHERE 1 = 0;
ALTER TABLE bigtable NOLOGGING;
DECLARE
l_cnt NUMBER;
l_rows NUMBER := 1000000;
BEGIN
INSERT /*+ APPEND */ INTO bigtable
SELECT rownum, a.*
FROM all_objects a;
l_cnt := SQL%ROWCOUNT;
COMMIT;
WHILE (l_cnt < l_rows) LOOP
INSERT /*+ APPEND */ INTO bigtable
SELECT rownum+l_cnt, owner, object_name, subobject_name, object_id, data_object_id,
object_type, created, last_ddl_time, timestamp, status, temporary, generated,
secondary, namespace, edition_name, sharing, editionable, oracle_maintained
FROM bigtable
WHERE rownum <= l_rows-l_cnt;
l_cnt := l_cnt + SQL%ROWCOUNT;
COMMIT;
END LOOP;
COMMIT;
END;
/
CONN / as sysdba
SELECT segment_name, SUM(bytes)/1024/1024 MB
FROM dba_segments
WHERE segment_name = 'BIGTABLE'
GROUP BY segment_name;
SET SERVEROUTPUT ON
DECLARE
v_blocks_comp PLS_INTEGER;
v_blocks_uncomp PLS_INTEGER;
v_rows_comp PLS_INTEGER;
v_rows_uncomp PLS_INTEGER;
v_compress_ratio NUMBER;
v_compress_type VARCHAR2(32767);
BEGIN
DBMS_COMPRESSION.get_compression_ratio (
scratchtbsname => 'BIGDATA',
ownname => 'Z_TEST',
objname => 'BIGTABLE',
subobjname => NULL,
comptype => 2,
blkcnt_cmp => v_blocks_comp,
blkcnt_uncmp => v_blocks_uncomp,
row_cmp => v_rows_comp,
row_uncmp => v_rows_uncomp,
cmp_ratio => v_compress_ratio,
comptype_str => v_compress_type,
subset_numrows => DBMS_COMPRESSION.comp_ratio_minrows
) ;
dbms_output.put_line('OUTPUT: ');
dbms_output.put_line('Estimated Compression Ratio: '||v_compress_ratio);
dbms_output.put_line('Blocks used - compressed sample: '||v_blocks_comp);
dbms_output.put_line('Blocks used - uncompressed sample: '||v_blocks_uncomp);
dbms_output.put_line('Rows in a block - compressed sample: '||v_rows_comp);
dbms_output.put_line('Rows in a block - uncompressed sample: '||v_rows_uncomp);
END;
/
DECLARE
v_blocks_comp PLS_INTEGER;
v_blocks_uncomp PLS_INTEGER;
v_rows_comp PLS_INTEGER;
v_rows_uncomp PLS_INTEGER;
v_compress_ratio NUMBER;
v_compress_type VARCHAR2(32767);
BEGIN
DBMS_COMPRESSION.get_compression_ratio (
scratchtbsname => 'BIGDATA',
ownname => 'Z_TEST',
objname => 'BIGTABLE',
subobjname => NULL,
comptype => 4,
blkcnt_cmp => v_blocks_comp,
blkcnt_uncmp => v_blocks_uncomp,
row_cmp => v_rows_comp,
row_uncmp => v_rows_uncomp,
cmp_ratio => v_compress_ratio,
comptype_str => v_compress_type,
subset_numrows => DBMS_COMPRESSION.comp_ratio_minrows
) ;
dbms_output.put_line('OUTPUT: ');
dbms_output.put_line('Estimated Compression Ratio: '||v_compress_ratio);
dbms_output.put_line('Blocks used - compressed sample: '||v_blocks_comp);
dbms_output.put_line('Blocks used - uncompressed sample: '||v_blocks_uncomp);
dbms_output.put_line('Rows in a block - compressed sample: '||v_rows_comp);
dbms_output.put_line('Rows in a block - uncompressed sample: '||v_rows_uncomp);
END;
/
-- Clean-Up
DROP USER z_test CASCADE;
DROP TABLESPACE bigdata INCLUDING CONTENTS AND DATAFILES;