导航:首页 > 文件处理 > oracle表压缩语句

oracle表压缩语句

发布时间:2022-05-08 08:44:28

压缩oracle数据文件

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

Ⅱ 如何压缩oracle海量数据

一、应用场合
答:正如上面所说,压缩技术一般应用在“海量数据”的范畴,在大数据量下并且重复率高的情境下应该的效果才好,适合于OLAP(报表系统)不适合OLTP(在线交易系统),当数据量小时作用还不是很大,只要数据量达到一定程度的时候使用这门技术才有意义。
二、压缩技术的好处
1.节约空间:我认为压缩技术的最大好处就是节约空间,在存储设备空间很紧张的情况下更需要使用压缩技术来缓解
2.减少memory/IO开销:当使用了压缩技术后,同等记录对应的数据块相对较少,自然而然IO开销就小了
3.提高数据处理效率:原本10个数据块的,经过压缩后变成5个数据块,但还是那些数据,可效率提高了一倍。
三、压缩原理
答:我们都用过rar压缩zip压缩,其实这些压缩的原理都很相似,当然在细微处理上有不同,数据块压缩原理上是使用长度较短符号来代替列中的每个值,由于符号占用空间小于实际值,从而达到节约空间的效果,当列中重复值越多压缩效果越好。
四、数据压缩不适合OLTP系统
1.OLTP是一种多事务短时间片系统,有大量的DML操作,而DML操作我们都知道是有锁lock的(insert update delete)当数据块中记录数多起来时,导致访问这个数据块的用户就多,就是产生争用和等待,从而降低了效率。
2.数据插入、更新和索引键值更新时,都要先解压缩再更新,等待的时间会更长。
五、分区表的压缩
1.分区表的每个分区都可以独立压缩
2.有些时候,分区表在创建时不设置分区压缩属性,当某个分区需要压缩时,再独立进行压缩
3.如果在表级设置压缩属性的话,那么所有分区都会启动压缩功能,反正如果是某几个分区独立压缩,表级属性上什么也不写的。
实验
create table leo_partition1 (object_id,object_name) 创建一个六个分区的分区表,没有指定压缩
partition by range (object_id)
(
partition leo_p1 values less than (1000),
partition leo_p2 values less than (2000),
partition leo_p3 values less than (3000),
partition leo_p4 values less than (4000),
partition leo_p5 values less than (5000),
partition leo_max values less than (maxvalue)
)
as select object_id,object_name from dba_objects;
LS@LEO> select count(*) from leo_partition1;
COUNT(*)
----------
10351
LS@LEO> select partition_name,compression from user_tab_partitions where table_name='LEO_PARTITION1';
PARTITION_NAME COMPRESS
------------------------------ --------
LEO_MAX DISABLED
LEO_P1 DISABLED
LEO_P2 DISABLED
LEO_P3 DISABLED
LEO_P4 DISABLED
LEO_P5 DISABLED
LS@LEO> alter table leo_partition1 compress; 例如 定义表级压缩属性,此时所有分区都压缩
LS@LEO> alter table leo_partition1 modify partition leo_p1 compress; 我们测试准对leo_p1 和 leo_p5分区进行压缩,来说明分区可以独立压缩
Table altered.
LS@LEO> alter table leo_partition1 modify partition leo_p5 compress;
Table altered.
LS@LEO> select partition_name,compression from user_tab_partitions where table_name='LEO_PARTITION1';
PARTITION_NAME COMPRESS
------------------------------ -----------------------
LEO_MAX DISABLED
LEO_P1 ENABLED

Ⅲ 在oracle中,为什么要把新建的表做压缩处理

你说的是创建压缩表吧.
压缩表的主要作用是:通过消除在数据库块中的重复数据来实现空间节约
实现原理:比较数据块中包含的所有字段或记录,其中重复的数据只在位于数据块开始部分的记号表(Symbol Table)中存储一份,在其他行或字段出现同样的数据时,只记录一个指向记号表中相关数据的指针。
命令:
创建压缩表:
create table haha(
......
) compress;
alter table haha compress;
alter table haha nocompress;

Ⅳ oracle11g怎么建立压缩表

在数据量变的很大的情况下,可以考虑表压缩,减少磁盘的存储,减少buffer cache的消耗,加快查询的速度,压缩需要在数据加载和dml的时候消耗一些cpu.表压缩对于应用是透明的。

你可以在表空间,表或分区级别指定压缩,如果在表空间级别指定压缩,那么这个表空间中的所有表默认都是压缩的。

压缩会发生在数据插入,更新或批量加载到表时。有几种类型的压缩。基本的,oltp的,dss的,归档的。他们的cpu消耗见文档。

当使用基本压缩,数据仓库压缩,或归档压缩的时候,压缩仅仅是在批量加载到一个表的时候发生。当你使用了oltp压缩,压缩发生在数据插入,更新,批量加载。

如果你使用了alter table命令让表启用压缩,那么对于已存在的数据是不受影响的,只有在启用压缩后的插入,或更新会受影响。也可以使用ALTER TABLE…NOCOMPRESS将一个表设置成非压缩,对于已经的压缩的表是没有影响的,压缩的数据还是压缩的,只是新插入的数据是不被压缩。

创建一个oltp压缩类型的表
CREATE TABLE orders … COMPRESS FOR OLTP;

如果你不指定压缩的类型,那么默认的情况下是基本压缩类型。下面的2个语句是等价的。
CREATE TABLE sales_history … COMPRESS BASIC;

CREATE TABLE sales_history … COMPRESS;

下面的表是一个数据仓库压缩类型的表,对于经常查询,并且没有dml的表适用。
CREATE TABLE sales_history … COMPRESS FOR QUERY;

创建一个归档压缩类型的表
CREATE TABLE sales_history … COMPRESS FOR ARCHIVE;

表可以包含压缩和非压缩的分区,并且不同的分区的压缩的类型可以是不同的,如果在分区上指定的压缩的类型与表上指定的压缩的类型不同,那么分区上的优先。

查看表是否是压缩的,及分区是否是压缩的。
SQL> SELECT table_name, compression, compress_for FROM user_tables;

SELECT table_name, partition_name, compression,compress_for
FROM user_tab_partitions;

查看表中的行是什么压缩类型
SELECT DECODE(DBMS_COMPRESSION.GET_COMPRESSION_TYPE(
ownname => ‘HR’,
tabname => ‘EMPLOYEES’,
row_id => ‘AAAVEIAAGAAAABTAAD’),
1, ‘No Compression’,
2, ‘Basic or OLTP Compression’,
4, ‘Hybrid Columnar Compression for Query High’,
8, ‘Hybrid Columnar Compression for Query Low’,
16, ‘Hybrid Columnar Compression for Archive High’,
32, ‘Hybrid Columnar Compression for Archive Low’,
‘Unknown Compression Type’) compression_type
FROM DUAL;

修改压缩的级别

如果表是分区表,使用在线重定义可以修改表的压缩级别。如果表是分分区表,那么可以使用alter table ..move.. compress for语句修改表的压缩级别,这个语句会阻塞dml操作。

对于压缩表的限制:
1基本压缩,你不能为添加的列指定默认的值。删除列是不被支持的。
2oltp压缩,如果要添加一个带默认值的列,那么需要指定not null,可以删除列,但是数据只是在内部做了一个不被使用的标记而已。

3在线段收缩是不被支持的。

4上面的压缩的方式不适合于lobs类型,他们有自己的压缩方式。

5基本压缩类型的表的pct_free参数自动的设置成0.

在上面的描述中可以看到对于基本类型的压缩,没有使用直接路径插入的行及更新的行是不会被压缩的。对于我们的oltp系统基本是没有用处的,只测试下oltp的压缩方式,这种方式对于没有使用直接路径插入的行及被更新的行都会压缩。

SQL> select count(*) from xyu2;

COUNT(*)

22096384

SQL> set serveroutput on
SQL> exec show_space(‘BAIXYU2’,’T’,’AUTO’);
Total Blocks……………………….334336
Total Bytes………………………..2738880512
Unused Blocks………………………1916
Unused Bytes……………………….15695872
Last Used Ext FileId………………..4
Last Used Ext BlockId……………….671872
Last Used Block…………………….6276

CREATE TABLE xyu3 COMPRESS FOR OLTP as select * from xyu2;

SQL> exec show_space(‘BAIXYU3’,’T’,’AUTO’);
Total Blocks……………………….107520
Total Bytes………………………..880803840
Unused Blocks………………………112
Unused Bytes……………………….917504
Last Used Ext FileId………………..4
Last Used Ext BlockId……………….116224
Last Used Block…………………….912

看到使用的块由33w下降到10w。压缩效果还是不错,但是是否使用还要结果上面的限制来根据实际情况评估。

Ⅳ oracle 什么是compressed 表

Hybrid Columnar Compressed
首先我们要搞清楚,什么是行压缩,什么叫列压缩。我们熟悉的数据库,如Oracle,MySQL等都是基于行的数据库,就是行的不同字段物理上存放在一起,还有一种是基于列的数据库,就是每个字段的不同行物理上存放在一起。他们的优缺点同样突出:
基于行的数据库,访问一行非常方便,但是由于同一列的数据是分开存放的,如果要针对某一列进行查询时,几乎要扫描整个表才能得到结果。基于行数据库的压缩,称为行压缩。
基于列的数据库,因为同一列的数据物理上放在一起,所以访问一列非常方便,也就是说如果针对某一列进行查询时,不需要扫描整个表,只需要扫描这一列的数据就可以了,但是访问一行的全部字段非常不方便(又是废话)。基于列数据库的压缩,称为列压缩。
Oracle通常说的compress功能(包括11g R2的Advanced compress),都是行压缩,因为Oracle是个基于行的数据库。大概的方法就是在block头部存放一个symbol table,然后将相同的值放在那里,每行上相同的数据指向symbol table,以此来达到压缩的目的。行压缩的效果通常不好,因为我们知道行与行之间,其实相同的数据并不多。但是列压缩则不同,因为相同列的数据类型相同,很容易达到很好的压缩效果。
行压缩和列压缩都有其优缺点,而Oracle的混合列压缩技术,实际上是融合了列压缩的高压缩比和行数据库的访问特性,将两者的优点结合起来。Oracle提出了CU的概念(compress unit),在一个CU内,是一个基于列的存储方式,采用列压缩,但是一个CU内保存了行的所有字段信息,所以在CU与CU之间,Oracle还是一个基于行的数据库,访问某一行,总是只在一个CU内。每个CU由一些连续的block组成,CU header中记录了每一行的各个列在CU中的分布情况,在混合列压缩模式下,一行通常是跨多个block的。
所以说混合列压缩,结合了列压缩和行访问的特点,即可以提供非常高的压缩率,又很好的保证了基于行类型的访问。
Exadata的另一个重要功能是IO resource management,如果我们在一个Exadata上部署了很多个数据库,可以用它来管理IO资源,这里就不作阐述了。
目前,我还没有了解到在国内有Exadata的应用,而且资料也是比较少的。希望有机会可以真实的测试一下它的性能,我不怀疑他在DSS环境下的表现,但是对于OLTP类型的应用,是否真的象Oracle说的那么强劲,还有待于验证。

Ⅵ oracle怎样实现备份文件自动压缩

1、在需要储存备份的硬盘中建文件夹如:databasebackup ;
2、拷贝exp.bat到 databasebackup 中;(把下列语句保存成exp.bat文件)
set filename=c:\databasebackup\%date:~0,10%
exp.exe system/system@testdb wner=ewms file=%filename%.dmp log=%filename%.log
rar a %filename%.zip %filename%.dmp %filename%.log
del %filename%.dmp
del %filename%.log
3、从数据库系统C:\Program Files\WinRAR中拷贝Rar.exe文件到 C:\WINDOWS\system32中;
4、执行系统定时任务。

Ⅶ 怎样压缩Oracle数据文件

如果属于一个单独的表空间不是system等,可以把表空间删除,或删除所有对象后resize数据文件

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

1. 它是一个可执行的文件 存放目录/ORACLE_HOME/bin
exp导出工具将数据库中数据备份压缩成一个二进制系统文件. 它有三种模式:
a. 用户模式:导出用户所有对象以及对象中的数据;
b. 表模式: 导出用户所有表或者指定的表;
c. 整个数据库: 导出数据库中所有对象。
2. 导出工具exp交互式命令行方式的使用的例子
$exp test/test123@appd
Enter array fetch buffer size: 4096 > 回车
Export file: expdat.dmp > m.dmp 生成导出的文件名
(1)E(ntire database), (2)U(sers), or (3)T(ables): (2)U > 3
Export table data (yes/no): yes > 回车wQeLin
Compress extents (yes/no): yes > 回车

Ⅸ 请问下Oracle 数据库database 11g OLTP表压缩特性是怎么会事

给你一段吧

数据使用的现状随着企业业务的快速增长,企业数据库中存储的数据出现了大幅度的增加,并且随着支撑企业运行的商业智能平台的实施,数据中心的数据更是出现了爆炸式增长,虽然磁盘存储器的价格在不断的下降,但是海量的数据存储也是企业IT成本不可轻视的一个重要组成。更重要的是,企业的IT管理者需要确保在业务数据量不断增长的情况下性能的稳定和系统的可扩展性。

Oracle Database 11g引入的高级压缩特征可以帮助客户最大化资源使用率并减少成本。它是的IT管理者可以通过为所有类型的数据启用压缩来减少数据库的存储容量,虽然高级压缩的最明显的好处是减少存储成本,而且Oracle Database 11g的高级压缩技术被设计为减少IT架构所有组件的成本,包括内存和网络带宽。

Oracle压缩概述

Oracle的压缩经历了以下几个版本:

Oracle 8i简单的索引压缩;

Oracle9ir2表级别的压缩;

Oracle 10g LOB压缩;

Oracle11g行级别压缩;

相对于9iR2引入的表数据压缩技术只能用于通过批量加载数据,而传统的DML的数据不会压缩,11g的表数据压缩真正支持了各种DML语句从而也能够用于OLTP环境(insert,update等)。

而且Oracle11g的压缩使用了“基于数据块的批次压缩技术”,也就是说数据的压缩不是在执行DML语句的时候实时发生的,一开始当一个数据块空的时候,插入的数据并不被压缩,所以这个时候对于性能是没有影响的,数据块压缩的动作是在数据块即将满的时候才发生,这样就保证了大部分DML语句的效率,并且,因为在数据块将要满的时候才发生的压缩技术保证了最大的压缩率,因为实际上压缩是基于数据块里相同的数据的。压缩对比如下:

Oracle11g的压缩选项

OLTP压缩

允许在所有的DML操作包括INSERT,UPDATE,DELETE期间进行压缩。该特性使得可以为所有应用启用压缩,并使用了智能的算法确保写操作期间的负载最小化(随后我们将看到)。并且,压缩的数据使用更少的磁盘空间并且能够更有效的利用内存,并通过减少磁盘I/O来提高查询的性能。

非结构化文件副本清除

Oracle11g压缩技术采用了智能的技术来消除存储在Oracle Database 11g中的文件拷贝,它不仅减少了存储,并且在包含重复内容的写和拷贝期间能够极大地提高性能。

非结构化文件压缩

通过使用额外的CPU资源,我们可以在数据库内压缩无结构的数据和文件数据。

备份数据压缩

数据库备份的空间需求和备份性能直接受到数据库大小的影响,高级压缩使得在使用RMAN和Oracle Data Pump进行备份时直接包含压缩的备份数据来减少存储容量并提高性能。

网络传输压缩

高级压缩选项提供了功能用于压缩Oracle Data Guard重做数据,这可以提高网络带宽的利用率。

11g压缩特性的好处

Oracle11g的在线数据压缩工具提供了以下好处:

节省大量的磁盘:根据存储数据的不同,Oracle压缩将大量节省磁盘空间;

更快的全表扫描、区间扫描:因为数据存储在更少的数据块中,全表扫描和索引区间扫描能够使用更少的快提取行;

减少网络负载:因为数据仅在Oracle内压缩和解压缩,所以外部网络仅传输压缩的数据块。

随着数据的快速增长,企业必须快速的适应这些改变而不会降低性能以及提高成本。Oracle Database 11g高级压缩特性可以帮助客户减少管理大量数据的资源和成本,它提供了一个自动化的压缩功能使得IT管理者可以快速解决这些问题。

Ⅹ oracle数据库表空间占用太大,如何在不删除表的情况下缩小占用空间

alter table 表名 move和alter table 表名 shrink space都可以用来进行段收缩,降低高水位HWM,
也都可以用来消除行链接(Row Chaining)和行迁移(Row Migration),估计效果不明显,看你的数据库用途是干什么的(如果是数据仓库肯定是不明显的)。

阅读全文

与oracle表压缩语句相关的资料

热点内容
卡尔曼滤波算法书籍 浏览:765
安卓手机怎么用爱思助手传文件进苹果手机上 浏览:841
安卓怎么下载60秒生存 浏览:800
外向式文件夹 浏览:233
dospdf 浏览:428
怎么修改腾讯云服务器ip 浏览:385
pdftoeps 浏览:490
为什么鸿蒙那么像安卓 浏览:733
安卓手机怎么拍自媒体视频 浏览:183
单片机各个中断的初始化 浏览:721
python怎么集合元素 浏览:477
python逐条解读 浏览:829
基于单片机的湿度控制 浏览:496
ios如何使用安卓的帐号 浏览:880
程序员公园采访 浏览:809
程序员实战教程要多长时间 浏览:972
企业数据加密技巧 浏览:132
租云服务器开发 浏览:811
程序员告白妈妈不同意 浏览:333
攻城掠地怎么查看服务器 浏览:600