如果操作系统层面空间不足,临时需要收缩数据文件腾出空间,可按以下步骤执行: 1.查询数据文件的收缩情况
SELECT a.tablespace_name, file_name, c.VALUE / 1024 "Blk. size(Kb)", CEIL ((NVL (hwm, 1) * c.VALUE) / 1024 / 1024) "smallest(Mb) - HWM", CEIL (blocks * c.VALUE / 1024 / 1024) "currsize(Mb)", CEIL (blocks * c.VALUE / 1024 / 1024) - CEIL ((NVL (hwm, 1) * c.VALUE) / 1024 / 1024) "savings(Mb)" FROM dba_data_files a, (SELECT file_id, MAX (block_id blocks - 1) hwm FROM dba_extents GROUP BY file_id) b, (SELECT VALUE FROM v$parameter WHERE NAME = 'db_block_size') c WHERE a.file_id = b.file_id( ) and a.status !='INVALID' order by 6; TABLESPACE_NAME FILE_NAME Blk. size(Kb) smallest(Mb) - HWM currsize(Mb) savings(Mb) ------------------------- ------------------------------------------------------- ------------- ------------------ ------------ ----------- FR_TD E:\ORACLE\PRODUCT\11.2.0\DBHOME_1\ORADATA\FR02.DBF 8 8192 8192 0 SYSTEM E:\ORACLE\ORADATA\FRORCL\SYSTEM01.DBF 8 1570 1570 0 FR_TD E:\ORACLE\PRODUCT\11.2.0\DBHOME_1\ORADATA\FR05.DBF 8 8192 8192 0 FR_TD E:\ORACLE\PRODUCT\11.2.0\DBHOME_1\ORADATA\FR08.DBF 8 8192 8192 0 FR_TD E:\ORACLE\PRODUCT\11.2.0\DBHOME_1\ORADATA\FR09.DBF 8 8192 8192 0 FR_TD E:\ORACLE\PRODUCT\11.2.0\DBHOME_1\ORADATA\FR12.DBF 8 8192 8192 0 FR_TD E:\ORACLE\PRODUCT\11.2.0\DBHOME_1\ORADATA\FR03.DBF 8 8192 8192 0 FR_TD E:\ORACLE\PRODUCT\11.2.0\DBHOME_1\ORADATA\FR16.DBF 8 10240 10240 0 FR_TD E:\ORACLE\PRODUCT\11.2.0\DBHOME_1\ORADATA\FR13.DBF 8 10240 10240 0 FR_TD E:\ORACLE\PRODUCT\11.2.0\DBHOME_1\ORADATA\FR20.DBF 8 30720 30720 0 UNDOTBS1 E:\ORACLE\ORADATA\FRORCL\UNDOTBS02.DBF 8 1024 1024 0 TABLESPACE_NAME FILE_NAME Blk. size(Kb) smallest(Mb) - HWM currsize(Mb) savings(Mb) ------------------------- ------------------------------------------------------- ------------- ------------------ ------------ ----------- FR_TD E:\ORACLE\PRODUCT\11.2.0\DBHOME_1\ORADATA\FR 8 8192 8192 0 FR_TD E:\ORACLE\PRODUCT\11.2.0\DBHOME_1\ORADATA\FR04.DBF 8 8192 8192 0 FR_TD E:\ORACLE\PRODUCT\11.2.0\DBHOME_1\ORADATA\FR06.DBF 8 8192 8192 0 FR_TD E:\ORACLE\PRODUCT\11.2.0\DBHOME_1\ORADATA\FR19.DBF 8 30720 30720 0 FR_TD E:\ORACLE\PRODUCT\11.2.0\DBHOME_1\ORADATA\FR17.DBF 8 30720 30720 0 FR_TD E:\ORACLE\PRODUCT\11.2.0\DBHOME_1\ORADATA\FR013.DBF 8 16384 16384 0 FR_TD E:\ORACLE\PRODUCT\11.2.0\DBHOME_1\ORADATA\FR07.DBF 8 8192 8192 0 FR_TD E:\ORACLE\PRODUCT\11.2.0\DBHOME_1\ORADATA\FR15.DBF 8 10240 10240 0 FR_TD E:\ORACLE\PRODUCT\11.2.0\DBHOME_1\ORADATA\FR18.DBF 8 30720 30720 0 FR_TD E:\ORACLE\PRODUCT\11.2.0\DBHOME_1\ORADATA\FR11.DBF 8 8192 8192 0 FR_TD E:\ORACLE\PRODUCT\11.2.0\DBHOME_1\ORADATA\FR10.DBF 8 8192 8192 0 TABLESPACE_NAME FILE_NAME Blk. size(Kb) smallest(Mb) - HWM currsize(Mb) savings(Mb) ------------------------- ------------------------------------------------------- ------------- ------------------ ------------ ----------- FR_TD E:\ORACLE\PRODUCT\11.2.0\DBHOME_1\ORADATA\FR14.DBF 8 16384 16384 0 USERS E:\ORACLE\ORADATA\FRORCL\USERS01.DBF 8 5 10 5 FRUSER_TD E:\ORACLE\PRODUCT\11.2.0\DBHOME_1\ORADATA\FRUSER 8 8174 8192 18
EXAMPLE E:\ORACLE\ORADATA\FRORCL\EXAMPLE01.DBF 8 313 347 34
FRUSER_TD E:\ORACLE\PRODUCT\11.2.0\DBHOME_1\ORADATA\FRUSER02 8 8152 8192 40
SYSAUX E:\ORACLE\ORADATA\FRORCL\SYSAUX01.DBF 8 13746 14440 694
SYSTEM E:\ORACLE\ORADATA\FRORCL\SYSTEM02.DBF 8 5966 8192 2226
FR_TD E:\ORACLE\PRODUCT\11.2.0\DBHOME_1\ORADATA\FR21.DBF 8 27433 30720 3287
UNDOTBS1 E:\ORACLE\ORADATA\FRORCL\UNDOTBS03.DBF 8 6193 10240 4047
KETTLE_TD E:\ORACLE\PRODUCT\11.2.0\DBHOME_1\ORADATA\KETTLE 8 7 8192 8185
FR_TD E:\ORACLE\PRODUCT\11.2.0\DBHOME_1\ORADATA\FR23.DBF 8 1320 10720 9400
TABLESPACE_NAME FILE_NAME Blk. size(Kb) smallest(Mb) - HWM currsize(Mb) savings(Mb)
------------------------- ------------------------------------------------------- ------------- ------------------ ------------ -----------
FRUSER_10_TD E:\ORACLE\PRODUCT\11.2.0\DBHOME_1\ORADATA\FRUSER_10_1 8 15 16384 16369
FR_TD E:\ORACLE\PRODUCT\11.2.0\DBHOME_1\ORADATA\FR22.DBF 8 10825 30720 19895
UNDOTBS1 E:\ORACLE\ORADATA\FRORCL\UNDOTBS01.DBF 8 6084 32768 26684
已选择36行。
解释: tablespace_name:表空间名称 file_name:数据文件名称 blk.size:block_size smallest:数据文件可缩小到的最小大小 currentsize:数据文件当前大小 savings:数据文件可收缩的空间(其实就是currentsize-smallest的值)
执行操作:
SQL> alter database datafile 'E:\ORACLE\PRODUCT\11.2.0\DBHOME_1\ORADATA\FR22.DBF' resize 10825M;
数据库已更改。
SQL> alter database datafile 'E:\ORACLE\PRODUCT\11.2.0\DBHOME_1\ORADATA\FRUSER_10_1' resize 15M;
数据库已更改。
SQL> alter database datafile 'E:\ORACLE\PRODUCT\11.2.0\DBHOME_1\ORADATA\FR23.DBF' resize 1320M;
数据库已更改。
SQL> alter database datafile 'E:\ORACLE\PRODUCT\11.2.0\DBHOME_1\ORADATA\KETTLE' resize 7M;
数据库已更改。
SQL> alter database datafile 'E:\ORACLE\PRODUCT\11.2.0\DBHOME_1\ORADATA\FR21.DBF' resize 27433M;
数据库已更改。
这样,就通过收缩数据文件来达到腾出空间的目的了