今天在
itpub
上被问到一个问题,
undo
表空间原来被设置成了自动扩展,现在已经有
10G
大小了,如果这样下去,硬盘早晚撑暴;
俺说了一下自己的想法:
重新建立一个undo2表空间,不要设置为自动扩展,指定最大值,然后切换undo1到这个新的undo2表空间,等到所有事务都移动到undo2以后,删除undo1即可。
如果原来的undo1上没有活动的事务的话,可以直接删除,重新建立。
查了一下资料,用一下命令:
alter database datafile 文件路径 autoextend off;取消自动扩展,
alter database datafile 文件路径 autoextend on;设置自动扩展。
也可以实现。
查看表空间数据文件是否为自动扩展:
SQL> col FILE_NAME format a40
SQL> col TABLESPACE_NAME format a20
SQL> select file_id,file_name,tablespace_name,autoextensible from dba_data_files order by file_id;
FILE_ID FILE_NAME TABLESPACE_NAME AUT
---------- ---------------------------------------- -------------------- ---
1 C:/ORACLE/ORADATA/ORADB/SYSTEM01.DBF SYSTEM YES
2 C:/ORACLE/ORADATA/ORADB/RBS01.DBF RBS YES
3 C:/ORACLE/ORADATA/ORADB/USERS01.DBF USERS YES
4 C:/ORACLE/ORADATA/ORADB/TEMP01.DBF TEMP YES
5 C:/ORACLE/ORADATA/ORADB/TOOLS01.DBF TOOLS YES
6 C:/ORACLE/ORADATA/ORADB/INDX01.DBF INDX YES
7 C:/ORACLE/ORADATA/ORADB/DR01.DBF DRSYS YES
8 D:/TEST.DBF TEST NO
已选择
8
行。
说明:
TEST
表空间用以下语句创建的一个实验表空间,没有指定
AUTOEXTEND ON
参数,所以不是自动扩展。
SQL> create tablespace test datafile
2 'd:/test.dbf' size 5M
3 default storage (initial 1M next 1M pctincrease 0)
4 /