Oracle 删除表中记录 如何释放表及表空间大小
2013-04-17 18:27
489 查看
有好多时候,表经过大量的DML操作后,高水线也会升高,在delete后高水位线还是没下来,也就是说,数据是删除了,但空间并没有释放,这时候我们可
以用alter table move的方法使空间释放。
1.查看一个表所占的空间大小:
SELECT bytes/1024/1024 ||'MB' TABLE_SIZE ,u.* FROM USER_SEGMENTS U WHERE U.SEGMENT_NAME='JK_TEST';
2.查看一个表空间所占的实际大小:
SELECT SUM(BYTES) / 1024 / 1024 ||'MB' FROM USER_SEGMENTS U WHERE
TABLESPACE_NAME = 'DATA01';
3.查看一个表空间对应的数据文件:
SELECT * FROM DBA_DATA_FILES D WHERE D.TABLESPACE_NAME = 'DATA01';
4.查看表空间的使用情况:
SELECT A.TABLESPACE_NAME,
FILENUM,
TOTAL
"TOTAL (MB)",
<
4000
/span> F.FREE
"FREE (MB)",
TO_CHAR(ROUND(FREE
* 100 / TOTAL, 2), '990.00') "FREE%",
TO_CHAR(ROUND((TOTAL
- FREE) * 100 / TOTAL, 2), '990.00') "USED%",
ROUND(MAXSIZES,
2) "MAX (MB)"
FROM
(SELECT TABLESPACE_NAME,
COUNT(FILE_ID)
FILENUM,
SUM(BYTES
/ (1024 * 1024)) TOTAL,
SUM(MAXBYTES)
/ 1024 / 1024 MAXSIZES
FROM
DBA_DATA_FILES
GROUP
BY TABLESPACE_NAME) A,
(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
5.查看数据文件的实际使用情况:
SELECT CEIL(MAX_BLOCK * BLOCK_SIZE / 1024)
FROM
(SELECT MAX(BLOCK_ID) MAX_BLOCK
FROM
DBA_EXTENTS
WHERE
FILE_ID IN (SELECT FILE_ID
FROM
DBA_DATA_FILES D
以用alter table move的方法使空间释放。
1.查看一个表所占的空间大小:
SELECT bytes/1024/1024 ||'MB' TABLE_SIZE ,u.* FROM USER_SEGMENTS U WHERE U.SEGMENT_NAME='JK_TEST';
2.查看一个表空间所占的实际大小:
SELECT SUM(BYTES) / 1024 / 1024 ||'MB' FROM USER_SEGMENTS U WHERE
TABLESPACE_NAME = 'DATA01';
3.查看一个表空间对应的数据文件:
SELECT * FROM DBA_DATA_FILES D WHERE D.TABLESPACE_NAME = 'DATA01';
4.查看表空间的使用情况:
SELECT A.TABLESPACE_NAME,
FILENUM,
TOTAL
"TOTAL (MB)",
<
4000
/span> F.FREE
"FREE (MB)",
TO_CHAR(ROUND(FREE
* 100 / TOTAL, 2), '990.00') "FREE%",
TO_CHAR(ROUND((TOTAL
- FREE) * 100 / TOTAL, 2), '990.00') "USED%",
ROUND(MAXSIZES,
2) "MAX (MB)"
FROM
(SELECT TABLESPACE_NAME,
COUNT(FILE_ID)
FILENUM,
SUM(BYTES
/ (1024 * 1024)) TOTAL,
SUM(MAXBYTES)
/ 1024 / 1024 MAXSIZES
FROM
DBA_DATA_FILES
GROUP
BY TABLESPACE_NAME) A,
(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
5.查看数据文件的实际使用情况:
SELECT CEIL(MAX_BLOCK * BLOCK_SIZE / 1024)
FROM
(SELECT MAX(BLOCK_ID) MAX_BLOCK
FROM
DBA_EXTENTS
WHERE
FILE_ID IN (SELECT FILE_ID
FROM
DBA_DATA_FILES D
相关文章推荐
- Oracle 删除表中记录 如何释放表及表空间大小
- Oracle 删除表中记录 如何释放表及表空间大小
- Oracle 删除表中记录 如何释放表及表空间大小
- Oracle 删除表中记录 如何释放表及表空间大小
- Oracle 删除表中记录 如何释放表及表空间大小
- Oracle 删除表中记录 如何释放表及表空间大小
- Oracle 删除表中记录 如何释放表及表空间大小
- Oracle 删除表中记录 如何释放表及表空间大小
- Oracle 系统函数 如何查表记录所占空间大小
- Oracle 如何删除不为空的表空间
- 在Oracle中如何利用Rowid查找和删除表中的重复记录
- oracle定时删除表空间的数据并释放表空间
- 如何删除Eclipse中无效的工作空间记录
- 删除abrt记录,释放空间
- 工作记录:删除文件,空间不释放
- Oracle如何删除表中重复记录
- ORACLE 运用RMAN删除过期备份和日志文件 释放空间
- Oracle 如何找回已经删除了的表记录
- Oracle 删除数据后释放数据文件所占磁盘空间
- oracle使用where条件删除分区表后空间没有释放的解决办法