alter table 表名 move和alter table 表名 shrink space都可以用来进行段收缩,降低高水位HWM,
创新互联公司专注于东莞网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供东莞营销型网站建设,东莞网站制作、东莞网页设计、东莞网站官网定制、微信小程序开发服务,打造东莞网络公司原创品牌,更为您提供东莞网站排名全网营销落地服务。
也都可以用来消除行链接(Row Chaining)和行迁移(Row Migration),估计效果不明显,看你的数据库用途是干什么的(如果是数据仓库肯定是不明显的)。
删除数据不能缩小表空间,只是可再利用的多了.
要实际缩小,让操作系统可以利用,需要先把表move tablespace
也可以在原来的tablespace上move一遍,再缩小tablespace就可以了.
例如:
alter table your_table move tablespace yourtablespace;
用下面的看表空间使用情况:
SELECT F.TABLESPACE_NAME,
A.TOTAL,
U.USED,
F.FREE,
ROUND((U.USED / A.TOTAL) * 100) "% used",
ROUND((F.FREE / A.TOTAL) * 100) "% Free"
FROM (SELECT TABLESPACE_NAME,
SUM(BYTES / (1024 * 1024)) TOTAL
FROM DBA_DATA_FILES
GROUP BY TABLESPACE_NAME) A,
(SELECT TABLESPACE_NAME,
ROUND(SUM(BYTES / (1024 * 1024))) USED
FROM DBA_EXTENTS
GROUP BY TABLESPACE_NAME) U,
(SELECT TABLESPACE_NAME,
ROUND(SUM(BYTES / (1024 * 1024))) FREE
FROM DBA_FREE_SPACE
GROUP BY TABLESPACE_NAME) F
WHERE A.TABLESPACE_NAME = F.TABLESPACE_NAME
AND A.TABLESPACE_NAME = U.TABLESPACE_NAME
然后再决定删除/缩小那个表空间
缩小表空间大小注意如下几点:
1、查清该表空间下的数据文件个数,使用量;
2、为了保证数据库的性能,表空间的使用量不要超过75%;
3、修改数据文件语法:ALTER DATABASE DATAFILE data_file_name RESIZE nnnnM;
如果是10g,那么修改参数,sga_target,和sga_maxsize以及pga_xxxxx(具体的名字忘记了,自己show parameter pga查一下)
修改语句举例:alter system set sga_target=xxxxx;scope=spfile;全部修改后重起数据库。
如果是11g,那么是修改参数memory_target.修改参数一致。
如果是linux系统,还要修改操作系统文件system文件(操作系统不同,该文件名称也不同),其中有一个值,最好改一下,不过要停库后修改。(不改也可以)