默认的(永久)表空间

上一篇 / 下一篇  2010-11-03 11:31:34 / 个人分类:Oracle

 默认的(永久)表空间

在早期的Oracle版本中,如果在创建用户时没有指定DEFAULT TABLESPACE和TEMPORARY TABLEPACE,它们将默认为SYSTEM表空间。如果用户没有在创建段时显式地指定表空间,则在SYSTEM表空间中创建该表空间,前提是在SYSTEM表空间中向该用户显式地授予配额,或者通过授予系统特权UNLIMITED TABLESPACE向该用户提供配额。

从Oracle 9i开始,通过如下方法解决该问题:允许DBA为在创建时没有显式使用TEMPORARY TABLESPACE子句的所有用户指定默认的TEMPORARY TABLESPACE。

在Oracle Database 10g中,可以类似地为用户指定默认的永久表空间。在创建数据库期间,CREATE DATABASE命令可以包含子句DEFAULT TABLESPACE {tablespace}。创建完成后,可以通过发布如下命令使某个表空间成为默认表空间:

SQL> ALTER DATABASE DEFAULT TABLESPACE {tablespace};

在创建时没有使用DEFAULT TABLESPACE子句的所有用户将有分配为永久段默认表空间的{tablespace}。可以在任何时候通过使用上面的ALTER命令改变默认的表空间,该命令允许在不同的时间点将不同的表空间指定为默认的永久表空间。

如果在创建数据库期间没有指定默认的表空间,它将默认为SYSTEM。重点需要了解的是,通过ALTER命令改变默认的表空间时,不会移动任何已有的段。如果在创建用户时没有指定任何默认的表空间,并且数据库默认表空间在后面改变,则在闪回数据库默认表空间改变之前删除的表时,闪回的表就会进入初始的表空间,而不是进入用户当前的默认表空间。

如果在创建用户期间显式地指定默认的表空间,则改变数据库默认表空间将不会改变用户的默认表空间。然而,在创建时没有指定默认表空间的所有数据库用户都将开始使用这个新的默认表空间。该规则的例外情况是已经创建在创建期间显式提及默认表空间的用户,该表空间是数据库当前默认的表空间。在这种情况下,即使在创建期间已经分配了表空间,改变数据库默认表空间也将改变用户的默认表空间。


TAG:

 

评分:0

我来说两句

Open Toolbar