oracle 9i新特性研究 一
数据库默认临时表空间
作者:gototop
在9i之前,如果一个数据库用户没有被指定默认临时表空间,那么oracle就会使用system表空间作为该用户的临时表空间,这是很危险的。在9i里面,database可以被指定一个默认临时表空间。这样如果数据库用户没有被明确指定临时表空间,oracle 9i就会自动指定database的默认临时表空间作为该用户的临时表空间。
我们可以通过下面的语句来查询数据库的默认临时表空间:
sql> select * from database_properties where property_name = 'default_temp_tablespace';
property_name property_value description
--------------------- ------------------- ------------------------
default_temp_tablespace temp name of default temporary tablespace
默认临时表空间的限制:
1. 默认临时表空间必须是temporary的:
sql> alter database default temporary tablespace tools;
alter database default temporary tablespace tools
*
error at line 1:
ora-12902: default temporary tablespace must be system or of temporary type
2. 默认临时表空间一旦被指定,将无法在改成perm.net:
sql> alter tablespace temp2 permanent;
alter tablespace temp2 permanent
*
error at line 1:
ora-12904: default temporary tablespace cannot be altered to permanent type
3. 在删除默认临时表空间必须先重新指定默认临时表空间:
sql> drop tablespace temp including contents and datafiles;
drop tablespace temp including contents and datafiles
*
error at line 1:
ora-12906: cannot drop default temporary tablespace
sql> create tablespace temp2
2 datafile '/data1/ora9data/temp2_01.dbf'
3 size 100k temporary;
tablespace created.
sql> alter database default temporary tablespace temp2;
database altered.
sql> drop tablespace temp including contents and datafiles;
tablespace dropped.
4. 默认临时表空间无法offline:
sql> alter tablespace temp offline;
alter tablespace temp offline
*
error at line 1:
ora-12905: default temporary tablespace cannot be brought offline
5. 用户的临时表空间必须是temporary的(在9i之前没有这个限制,可以是permanent):
sql> alter user scott temporary tablespace tools;
alter user scott temporary tablespace tools
*
error at line 1:
ora-12911: permanent tablespace cannot be temporary tablespace
sql> create tablespace temp2
2 datafile '/data1/ora9data/temp2_01.dbf'
3 size 100k temporary;
tablespace created.
sql> alter user scott temporary tablespace temp2;
user altered.
6. 如果删除了用户的临时表空间,而这个临时表空间又不是数据库的默认临时表空间(如果是数据库的默认临时表空间是删不掉的),用户的临时表空间不会自动转换到数据库的默认临时表空间上:
sql> select tablespace_name, contents from dba_tablespaces where tablespace_name like 'temp%';
tablespace_name contents
------------------------------ ---------
temp temporary
temp2 temporary
sql> select temporary_tablespace from dba_users where username='scott';
temporary_tablespace
------------------------------
temp2
sql> drop tablespace temp2 including contents and datafiles;
tablespace dropped.
sql> select temporary_tablespace from dba_users where username='scott';
temporary_tablespace
------------------------------
temp2
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器