oracle表空间压缩
Ⅰ oracle清理数据后,如何缩小表空间,减小表空间文件大小
很大可能是原来表是压缩过的,再导进去就没有压缩了,要重新压缩下
Ⅱ oracle如何缩小表空间
删除数据不能缩小表空间,只是可再利用的多了.
要实际缩小,让操作系统可以利用,需要先把表move tablespace
也可以在原来的tablespace上move一遍,再缩小tablespace就可以了.
例如:
alter table your_table move tablespace yourtablespace;
Ⅲ oracle清理数据后,如何缩小表空间,减小表空间文件大小
修改表空间的扩展策略。减小增长比例。
或者表空间的初始值设大点。
Ⅳ oracle 压缩表空间有什么作用
主要是节省空间,不过查询的时候貌似更消耗cpu资源,对历史数据比较适合。
Ⅳ oracle表空间太大,有哪些优化办法
给您提供建议如下:
(1)如果表空间的数据没存满,可以考虑执行表空间收缩操作。
(2)如果表空间的数据存满了,可以考虑建多个表空间文件。
(3)从业务的角度考虑,是否可以考虑将部分数据进行剥离,存放在历史库。
(4)从业务角度进行分析,该表空间中最大的几张表中的数据都是必须、有用的吗?是否可以将部分无用数据备份后执行清理操作。
(5)如果是undo表空间,可以执行undo表空间收缩操作。
(6)如果是temp表空间,可以将原表空间文件drop掉后重建表空间文件。
Ⅵ oracle表空间创建的太大了…怎么把表空间缩小,又不丢失数据 当初计划错误,在500GB的D盘
你可以先备份表空间,backup tablespace,然后resize,做任何改变之前先备份,避免酿成大错。
Ⅶ 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 truncate table aud$后怎么压缩system表空间
oracle truncate table aud$后怎么压缩system表空间
:你的系统表空间已经满了,且无法扩展。需要扩展系统表空间。 alter tabespace add datafile 'd:\xxxx\system02.dbf' size 1024M reuse autoextend on next 10m maxsize 20480M
Ⅸ oracle数据库表空间占用太大,如何在不删除表的情况下缩小占用空间
alter table 表名 move和alter table 表名 shrink space都可以用来进行段收缩,降低高水位HWM,
也都可以用来消除行链接(Row Chaining)和行迁移(Row Migration),估计效果不明显,看你的数据库用途是干什么的(如果是数据仓库肯定是不明显的)。