Как создать сжатую таблицу
Для создания сжатой таблицы используется ключевое слово COMPRESS в операторе CREATE TABLE. Ключевое слово COMPRESS требует от сервера Oracle, по возможности, хранить строки таблицы в сжатом виде. Ниже представлен пример оператора CREATE TABLE COMPRESS:
CREATE TABLE SALES_HISTORY_COMP ( PART_ID VARCHAR2(50) NOT NULL, STORE_ID VARCHAR2(50) NOT NULL, SALE_DATE DATE NOT NULL, QUANTITY NUMBER(10,2) NOT NULL ) COMPRESS;
Можно также использовать оператор ALTER TABLE для изменения атрибута сжатия существующей таблицы, как в следующем примере:
ALTER TABLE SALES_HISTORY_COMP COMPRESS;
Чтобы узнать, использовалось ли ключевое слово COMPRESS в определении таблицы, выполните запрос к представлению USER_TABLES словаря данных и проверьте значение столбца COMPRESSION, как в следующем примере:
SELECT TABLE_NAME, COMPRESSION FROM USER_TABLES;
TABLE_NAME COMPRESSION ------------------ ----------- SALES_HISTORY DISABLED SALES_HISTORY_COMP ENABLED
Атрибут COMPRESS также может быть задан на уровне табличного пространства, как в момент его создания (с помощью оператора CREATE TABLESPACE), так и в дальнейшем (с помощью оператора ALTER TABLESPACE). Атрибут COMPRESS наследуется аналогично параметрам хранения. При создании таблицы в табличном пространстве наследуется атрибут COMPRESS
этого табличного пространства. Чтобы определить, задан ли для табличного пространства атрибут COMPRESS, выполните запрос к представлению DBA_TABLESPACES словаря данных и проверьте значение столбца DEF_TAB_COMPRESSION, как в следующем примере:
SELECT TABLESPACE_NAME, DEF_TAB_COMPRESSION FROM DBA_TABLESPACES;
TABLESPACE_NAME DEF_TAB_COMPRESSION --------------- ------------------- DATA_TS_01 DISABLED INDEX_TS_01 DISABLED
Как и следовало ожидать, вы можете сжимать или не сжимать таблицу в табличном пространстве, независимо от значения COMPRESS, заданного на уровне табличного пространства.