Oracle 10g 中,数据库级别的默认表空间是USERS,创建用户时,如果没有指定用户的默认表空间,则会把数据库级别的默认表空间当做该用户的默认表空间。考虑一下几种情况:
1、 创建用户时没有指定用户默认表空间,那么将DB默认表空间作为用户默认表空间,此后,若修改了DB默认表空间,用户的表空间也会随之改变。
2、 创建用户时指定了默认表空间,该默认表空间为DB默认表空间。那么在修改DB默认表空间后,该用户的默认表空间也会随之改变。
3、 创建用户时指定了默认表空间,该默认表空间为非DB默认表空间的其他表空间。那么修改DB默认表空间不会影响该用户。
4、 DB默认表空间不能删除,除非将DB默认表空间指向其他表空间后才可删除。
5、 如果用户的默认表空间指向其他表空间(如3),当这个表空间被drop后,用户的默认表空间自动指向DB默认表空间。
==============================================================================
1、 查看当前DB默认表空间
SYS@ tsid > select property_value from database_properties where property_name='DEFAULT_PERMANENT_TABLESPACE';
PROPERTY_VALUE
--------------------------------------------------------------------------------
TEST
2、 修改DB默认表空间
SYS@ tsid > alter database default tablespace users;
Database altered.
SYS@ tsid > select property_value from database_properties where property_name='DEFAULT_PERMANENT_TABLESPACE';
PROPERTY_VALUE
--------------------------------------------------------------------------------
USERS
3、 创建用户test1,不指定默认表空间
SYS@ tsid > create user test1 identified by test1;
User created.
SYS@ tsid > select default_tablespace from dba_users where username='TEST1';
DEFAULT_TABLESPACE
------------------------------
USERS
--TEST1默认表空间为USERS
4、创建用户test2,指定默认表空间为DB默认表空间USERS
SYS@ tsid > create user test2 identified by test2 default tablespace users;
User created.
SYS@ tsid > select default_tablespace from dba_users where username='TEST2';
DEFAULT_TABLESPACE
------------------------------
USERS
4、 创建用户test3,指定默认表空间为非DB默认表空间TEST
SYS@ tsid > create user test3 identified by test3 default tablespace test;
User created.
SYS@ tsid > select default_tablespace from dba_users where username='TEST3';
DEFAULT_TABLESPACE
------------------------------
TEST
=========================================================================
5、 修改DB默认表空间
SYS@ tsid > alter database default tablespace test;
Database altered.
6、 查看用户表空间变化情况
SYS@ tsid > select default_tablespace from dba_users where username='TEST1';
DEFAULT_TABLESPACE
------------------------------
TEST
--test1默认表空间随DB默认表空间变为TEST
SYS@ tsid > select default_tablespace from dba_users where username='TEST2';
DEFAULT_TABLESPACE
------------------------------
TEST
--test2默认表空间也随DB默认表空间变为TEST
SYS@ tsid > select default_tablespace from dba_users where username='TEST3';
DEFAULT_TABLESPACE
------------------------------
TEST
7、 试图删除默认表空间TEST
SYS@ tsid > drop tablespace test including contents and datafiles;
drop tablespace test including contents and datafiles
*
ERROR at line 1:
ORA-12919: Can not drop the default permanent tablespace
8、把DB默认表空间修改为USERS,再删除TEST表空间。
SYS@ tsid > alter database default tablespace users;
Database altered.
SYS@ tsid > drop tablespace test including contents and datafiles;
Tablespace dropped.
查看test3的默认表空间
SYS@ tsid > select default_tablespace from dba_users where username='TEST3';
DEFAULT_TABLESPACE
------------------------------
USERS
--test3默认表空间自动变为USERS
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/25744374/viewspace-721489/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/25744374/viewspace-721489/