压缩oracle数据文件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了压缩oracle数据文件相关的知识,希望对你有一定的参考价值。

我的数据表上有多个表空间,表空间物理文件很大了,想压缩一下文件,各位给出出招,谢了!

Oracle
中压缩数据节省空间和提高速度

添加时间
:2007-4-22

使用表压缩来节省空间并提高查询性能

很多决策支持系统通常都涉及到存储于几个特大表中的大量数据。随着这些系统的发展,对磁盘空间
的需求也在快速增长。在当今的环境下,存储着数百
TB
(太字节)的数据仓库已经变得越来越普遍。

为了帮助处理磁盘容量问题,

Oracle9i

2
版中引入了表压缩特性,
它可以极大地减少数据库表所
需要的磁盘空间数量,并在某些情况下提高查询性能。

在本文中,我将向你说明表压缩是如何工作的,以及在构建和管理数据库时如何配置表空间。我还将
基于一些示例测试结构讨论一些性能问题,以帮助你了解使用表压缩预计能获得多大好处。

表压缩是如何工作的


Orcle9i

2
版中,表压缩特性通过删除在数据库表中发现的重复数据值来节省空间。压缩是在数
据库的数据块级别上进行的。当确定一个表要被压缩后,数据库便在每一个数据库数据块中保留空间,以

便储存在该数据块中的多个位置上出现的数据的单一拷贝。这一被保留的空间被称作符号表(
symbol
table

。被标识为要进行压缩的数据只存储在该符号表中,而不是在数据库行本身内。当在一个数据库行
中出现被标识为要压缩的数据时,该行在该符号表中存储一个指向相关数据的指针,而不是数据本身。节
约空间是通过删除表中数据值的冗余拷贝而实现的。

对于用户或应用程序开发人员来说,表压缩的效果是透明的。无论表是否被压缩,开发人员访问表的
方式都是相同的,
所以当你决定压缩一个表时,
不需要修改
SQL
查询。
表压缩的设置通常由数据库管理人
员或设计人员进行配置,几乎不需要开发人员或用户参与。

如何创建一个压缩的表

要创建一个压缩的表,可在
CREATE TABLE
语句中使用
COMPRESS
关键字。
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

Create table me(shengao int32,tizhong

int ,zhangxiang verchar2(60)) compress;
Select table_name, compression from user_tables;
Select tablespace_name,def_tab_compression from user_tablespaces;
也可以在表空间级别上定义
COMPRESS
属性,
既可以在生成时利用
CREATE TABLESPACE
来定义,
也可以稍后时间利用
ALTER TABLESPACE
来定义。与其他存储参数类似,
COMPRESS
属性也具有一些
继承特性。当在一个表空间中创建一个表时,它从该表空间继承
COMPRESS
属性。为了确定是否已经利

COMPRESS
对一个表空间进行了定义,可查询
USER_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
属性追问

直接用compress没用

追答

你oracle 是什么版本的!

追问

11g,将表空间设为compress,对原来的数据文件大小没任何影响,compress只作用于正在使用的表空间的吧。

参考技术A 你意思是收缩一下表空间大小,直接收缩不一定能成功,因为可能尾部已经用了,建议建新表空间,再将表和索引移到新的表空间上,然后删除旧的表空间追问

这样有点累吧

本回答被提问者采纳

以上是关于压缩oracle数据文件的主要内容,如果未能解决你的问题,请参考以下文章

win10下oracle11g数据库突然连接失败怎么办

win10下oracle11g数据库突然连接失败怎么办

如何用exp导出oracle数据库并压缩

Oracle 连接压缩?

请高手解答下:如何把oracle数据库备份成压缩包的形式??

100天精通Oracle-实战系列(第25天)Oracle 数据泵并行和压缩