分类: Oracle
2008-03-10 10:34:45
如果说oracle 8i以下(包括8i)还是使用的是有数据文件特性的临时数据文件,Oracle 9i已经是真正意义的临时文件了,这样的临时文件不需要备份与恢复,也不会记录任何redo log信息。
因此,9i才有了一个新的关键字tempfile,而在8i的时候,这个都是datafile。如要添加一个新的临时文件,8i是:
alter tablespace temp add datafile ''temp file name'' size 2000M;
而9i是
alter tablespace temp add tempfile ''temp file name'' size 2000M;
这个是9i一个新的特性,就是真正意义的临时数据文件。而且从9i开始,数据库将有默认的临时表空间,新建用户如果不特殊指定将用默认的临时表空间(在老的版本中如果不特殊指定,将默认system表空间为临时表空间),从如下视图可以查询到当前默认临时表空间。
select PROPERTY_NAME, PROPERTY_VALUE
from database_properties
where property_name = ''DEFAULT_TEMP_TABLESPACE'';
PROPERTY_NAME PROPERTY_VALUE
------------------------------ ---------------
DEFAULT_TEMP_TABLESPACE TBS_TEMP
如我们可以通过如下命令要创建与设置临时表空间
create temporary tablespace temp tempfile ''temp file name'' size 100m;
alter database default temporary tablespace temp;
在linux/unix上,如果不指定reuse关键字,新创建出来的临时文件都是稀疏文件,也就是说空间不是马上分配的,所以有很快的创建速度。临时表空间一旦创建,就不能转化为永久表空间了,不能执行离线(offline)操作,而且当前默认的临时表空间不能被删除。
SQL> drop tablespace temp including contents and datafiles;
drop tablespace temp including contents and datafiles
ORA-12906: cannot drop default temporary tablespace
如果是非当前默认的临时表空间,则可以删除,另外,临时文件可以随时增加或者是删除。
SQL>alter tablespace tbs_temp add tempfile ''temp file name'' size 100M;
Database altered
SQL>alter database tempfile ''temp file name'' drop;
Database altered