回收数据库表空间的一个思路

,有些项目比较小,硬盘空间也只有40多克,加上无人维护,久而久之就出现了硬盘空间告警的问题。经过查看之后,发现有些数据文件一开始就设置成2 G,但实际可能就只使用了100米左右。为了解决硬盘空间告警的问题,就想到了重置数据文件大小的方法。

<强>第一步是查看各个表空间的适用率,找出可以缩小的数据文件。

——查看表空间使用率,找到闲置的表空间

选择上(F.TABLESPACE_NAME),,,,“表空间名”,

,,,D。TOT_GROOTTE_MB,,,,,,,,“表空间大小(M)”,

,,,D。TOT_GROOTTE_MB - F。TOTAL_BYTES”已使用空间(M)”,

,,,To_char(圆((D。TOT_GROOTTE_MB - F。TOTAL_BYTES)/D。TOT_GROOTTE_MB * 100, 2),“990.99”)

,,,,| |‘%’,,,,,,,,,,,,,“使用比”,

,,,F。TOTAL_BYTES,,,,,,,,,,“空闲空间(M)”,

,,,F。MAX_BYTES,,,,,,,,,,,“最大块(M)“

,(选择TABLESPACE_NAME,

,,,,,,,,圆(总和(字节数)/(1024 * 1024),2)TOTAL_BYTES,

,,,,,,,,圆(Max(字节数)/(1024 * 1024),2)MAX_BYTES

,,,,从,SYS.DBA_FREE_SPACE

,,,,组,由TABLESPACE_NAME) F

,,,,(选择DD.TABLESPACE_NAME,

,,,,,,,,圆(总和(DD.BYTES)/(1024 * 1024), 2) TOT_GROOTTE_MB

,,,,从,SYS。DBA_DATA_FILES DD

,,,,组,由DD.TABLESPACE_NAME) D

, D。TABLESPACE_NAME=F。TABLESPACE_NAME

订单,由4 desc;


<强>第二步是查看所选择的表空间数据文件的高水位线,以用户表空间为例。

——查找表空间的高水线

SELECT *

,,,从(选择/* +命令use_hash (a, b, c) */

,,,,,,a.file_id,

,,,,,,a.file_name,

,,,,,,a.filesize,

,,,,,,b.freesize,

,,,,,,(一个。文件大小- b.freesize) usedsize,

,,,,,,c。hwmsize,高水位线

,,,,,,c。hwmsize - (a。文件大小- b.freesize) unsedsize_belowhwm,

,,,,,,一个。文件大小- - - c。hwmsize canshrinksize

,,,,,,,(选择file_id,

,,,,,,,,,,,,,file_name,

,,,,,,,,,,,,,轮(字节/1024/1024)文件大小

,,,,,,,,,,,从dba_data_files),

,,,,,,,,,(选择file_id轮(SUM (dfs.bytes)/1024/1024) freesize

,,,,,,,,,,,从dba_free_space dfs

,,,,,,,,,,集团通过file_id) b,

,,,,,,,,,(选择file_id轮(MAX (block_id) * 8/1024) HWMsize

,,,,,,,,,,,从dba_extents

,,,,,,,,,,集团通过file_id) c

,,,,,,一个地方。file_id=b.file_id

,,,,,,,和一个。file_id=c.file_id

,,,,,,ORDER BY unsedsize_belowhwm DESC)

,,在file_id(选择file_id

,,,,,,,,,,,,从dba_data_files

,,,,,,,,,,,,tablespace_name=坝没А?

,,ORDER BY file_id;

<强>第三步是使用管理员账号登录,执行:

改变数据库丢失file_id调整N M/G;——N为任意整数

改变数据库丢失file_id autoextend未来100 M最大容量1 G;

通过以上3个步骤,就可以临时解决磁盘空间告警的问题。




回收数据库表空间的一个思路