注:这种方法功能有限,如果system表空间末尾写入了一些系统表资料,那么是无法回收的。
C:\Documents and Settings\Administrator.XY>sqlplus "/as sysdba"
SQL*Plus: Release 10.2.0.1.0 - Production on 星期三 2月 14 10:45:30 2007
Copyright (c) 1982, 2005, Oracle. All rights reserved.
连接到:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
SQL> conn system/oracle@orcl
已连接。
查看初始表空间大小
SQL> select tablespace_name,bytes/1024/1024/1024 "大小(G)" from v$datafile_hea
der where tablespace_name='SYSTEM';
TABLESPACE_NAME 大小(G)
------------------------------ ----------
SYSTEM .478515625
将表空间设定自动扩展
SQL> alter database datafile 1 autoextend on next 100m maxsize 2G;
数据库已更改。
在system下创建测试表并插入数据
SQL> create table t as select * from dba_objects;
表已创建。
SQL> insert into t select * from t;
已创建50362行。
SQL> /
已创建100724行。
SQL> /
已创建201448行。
SQL> /
已创建402896行。
SQL>
SQL> /
已创建805792行。
SQL> /
已创建1611584行。
SQL> /
已创建3223168行。
SQL> commit;
提交完成。
查看此时表空间大小
SQL> select tablespace_name,bytes/1024/1024/1024 "大小(G)" from v$datafile_hea
der where tablespace_name='SYSTEM';
TABLESPACE_NAME 大小(G)
------------------------------ ----------
SYSTEM 1.16210938
删除数据
SQL> truncate table t;
表被截断。
SQL> alter database datafile 1 resize 500m;
数据库已更改。
此时system表空间已经成功收缩,
SQL> select tablespace_name,bytes/1024/1024/1024 "大小(G)" from v$datafile_hea
der where tablespace_name='SYSTEM';
TABLESPACE_NAME 大小(G)
------------------------------ ----------
SYSTEM .48828125
SQL>
继续ing
SQL> insert into t select * from dba_objects;
已创建50399行。
SQL> insert into t select * from t;
已创建50399行。
SQL> /
已创建100798行。
SQL> /
已创建201596行。
SQL> /
已创建403192行。
SQL> /
已创建806384行。
SQL> select tablespace_name,bytes/1024/1024/1024 "大小(G)" from v$datafile_hea
der where tablespace_name='SYSTEM';
TABLESPACE_NAME 大小(G)
------------------------------ ----------
SYSTEM .68359375
SQL> commit;
提交完成。
SQL> drop table t;
表已删除。
SQL> alter database datafile 1 resize 500m;
数据库已更改。
SQL> select tablespace_name,bytes/1024/1024/1024 "大小(G)" from v$datafile_hea
der where tablespace_name='SYSTEM';
TABLESPACE_NAME 大小(G)
------------------------------ ----------
SYSTEM .48828125
SQL>
由此可见删除表后也可以resize datafile,也可以说明drop table也回收hwm