elfcheg Asked: 2022-06-02 09:10:33 +0800 CST2022-06-02 09:10:33 +0800 CST 2022-06-02 09:10:33 +0800 CST 我的数据被压缩了吗? 772 假设我想为我的表实现基本压缩。我知道它可以分两步完成,例如: 更改表 MYTABLE 压缩; 改变表 MYTABLE 移动; 有没有办法检查这两个步骤是否已实施?我怎么知道数据被压缩了? 如果这很重要,我正在使用 Oracle 19c。 oracle compression 2 个回答 Voted Best Answer Balazs Papp 2022-06-02T09:24:55+08:002022-06-02T09:24:55+08:00 SQL> create table t1 as select * from dba_objects; Table created. SQL> select dbms_compression.get_compression_type(user, 'T1', rowid) as compression_type, count(*) from t1 group by dbms_compression.get_compression_type(user, 'T1', rowid); COMPRESSION_TYPE COUNT(*) ---------------- ---------- 1 23861 SQL> alter table t1 compress; Table altered. SQL> select dbms_compression.get_compression_type(user, 'T1', rowid) as compression_type, count(*) from t1 group by dbms_compression.get_compression_type(user, 'T1', rowid); COMPRESSION_TYPE COUNT(*) ---------------- ---------- 1 23861 最后: SQL> alter table t1 move; Table altered. SQL> select dbms_compression.get_compression_type(user, 'T1', rowid) as compression_type, count(*) from t1 group by dbms_compression.get_compression_type(user, 'T1', rowid); COMPRESSION_TYPE COUNT(*) ---------------- ---------- 4096 23861 表 38-1 DBMS_COMPRESSION 常量 - 压缩类型 1 - No compression ... 4096 - Basic table compression mustaccio 2022-06-02T09:20:09+08:002022-06-02T09:20:09+08:00 您可以运行DBMS_COMPRESSION.GET_COMPRESSION_RATIO系统存储过程来获取表的实际压缩比。显然,它不会告诉您是否有人已经运行alter table ... move,但它会告诉您该表是实际压缩的还是仅配置的。
最后:
表 38-1 DBMS_COMPRESSION 常量 - 压缩类型
您可以运行
DBMS_COMPRESSION.GET_COMPRESSION_RATIO
系统存储过程来获取表的实际压缩比。显然,它不会告诉您是否有人已经运行alter table ... move
,但它会告诉您该表是实际压缩的还是仅配置的。