time:2008/03/25
author: skate
如果temp表空间很满的时候,我们要回缩表空间,根据表空间的类型,回缩的方法也不同
1.字典管理表空间:
temp(非本地管理表空间) 回收
可以将表空间的缺省存储参数pctincrease改为非0。一般将其设为1,如:
alter tablespace temp
default storage(pctincrease 1);
这样smon便会将自由范围自动合并。也可以手工合并自由范围:
alter tablespace temp coalesce;
2. 本地管理表空间
可以通过重新创建temp的方法
1.创建过渡的temp1
2,更改缺省临时表空间的为temp1
3.删除临时表空间temp //由于还有其他会话可能使用临时段,所以没有删除datafile
4.重新创建临时表空间temp
5.重置默认临时表空间temp
6. 删除哪个过渡的临时表空间temp2
7.更改用户的临时表空间
1.
SQL> select tablespace_name from dba_tablespaces;
TABLESPACE_NAME
------------------------------
SYSTEM
UNDOTBS1
SYSAUX
TEMP
USERS
EXAMPLE
PERFSTAT
已选择7行。
SQL> select name,bytes from v$tempfile;
NAME
-----------------------------------------------------------------------------
BYTES
----------
F:/ORACLE/PRODUCT/10.2.0/ORADATA/MOVO/TEMP01.DBF
20971520
SQL> create temporary tablespace temp2
2 tempfile 'F:/ORACLE/PRODUCT/10.2.0/ORADATA/MOVO/temp02.dbf' size 10m
3 autoextend on next 1m maxsize 20m;
create temporary tablespace temp2
*
第 1 行出现错误:
ORA-01031: 权限不足
SQL> conn /as sysdba
已连接。
SQL> create temporary tablespace temp2
2 tempfile 'F:/ORACLE/PRODUCT/10.2.0/ORADATA/MOVO/temp02.dbf' size 10m
3 autoextend on next 1m maxsize 20m;
表空间已创建。
2.
SQL> alter database default temporary tablespace temp2;
数据库已更改。
3.
SQL> drop tablespace temp including contents and datafiles;
表空间已删除。
4.
SQL> create temporary tablespace temp
2 tempfile 'F:/ORACLE/PRODUCT/10.2.0/ORADATA/MOVO/temp01.dbf' size 10m
3 autoextend on next 1m maxsize 20m;
create temporary tablespace temp
*
第 1 行出现错误:
ORA-01119: 创建数据库文件 'F:/ORACLE/PRODUCT/10.2.0/ORADATA/MOVO/temp01.dbf'
时出错
ORA-27038: 所创建的文件已存在
OSD-04010: 指定了 <create> 选项, 但文件已经存在
注意 :这个错误的原因是,临时段还在被某个会话用,没有删除临时表空间的数据库文件
5.
SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup
ORACLE 例程已经启动。
Total System Global Area 574619648 bytes
Fixed Size 1250212 bytes
Variable Size 171969628 bytes
Database Buffers 394264576 bytes
Redo Buffers 7135232 bytes
数据库装载完毕。
数据库已经打开。
这个是时候还是不能创建temp空间,因为那个临时表空间仍然存在,我可以手工删除临时数据文件
SQL> create temporary tablespace temp
2 tempfile 'F:/ORACLE/PRODUCT/10.2.0/ORADATA/MOVO/temp01.dbf' size 10m
3 autoextend on next 1m maxsize 20m;
表空间已创建。
6.
SQL> alter database default temporary tablespace temp;
数据库已更改。
7.
SQL> alter user scott temporary tablespace temp;
用户已更改。
-----end----