在oracle9i中,若是未用 DEFAULT TABLESPACE 子句建立的全部用戶將以SYSTEM表空間做爲它們的默認表空間。同時也不能爲數據庫指定一個默認的表空間。sql
在Oracle 10g中定義了數據庫級別的默認表空間USERS,在建立用戶時沒有定義默認表空間,就會把數據庫級別的默認表空間看成本身的默認表空間。數據庫
在10g之前,是把系統表空間(SYSTEMS)看成默認表空間。這樣很不合理。oracle
能夠使用以下命令查看默認表空間:ide
ALTER DATABASE DEFAULT TABLESPACE users;測試
這裏有幾個注意事項:spa
1. 若是咱們在建立用戶時指定了默認表空間,那麼在修改默認表空間後,以前用戶的默認表空間也會發生改變。.net
2. 若是咱們在建立用戶時沒有指定用戶表空間,那麼默認也會使用DB的默認表空間,這時候若是咱們修改了DB的默認表空間,用戶的表空間也會發生改變。orm
3. 若是咱們在建立用戶指定用戶的表空間是其餘的表空間,那麼咱們修改DB的默認表空間不會影響用戶的表空間。blog
4. DB的默認表空間不能刪除,除非將默認表空間指向其餘表空間以後才能夠刪除。it
5. 若是用戶的默認表空間指向其餘的表空間,當這個表空間被drop 以後,用戶的默認表空間會自動指向DB的默認表空間。
SQL> select * from v$version;
BANNER
-----------------------------------------------------------------------
Oracle Database 11g Enterprise EditionRelease 11.2.0.1.0 - Production
PL/SQL Release 11.2.0.1.0 - Production
CORE 11.2.0.1.0 Production
TNS for 32-bit Windows: Version 11.2.0.1.0- Production
NLSRTL Version 11.2.0.1.0 - Production
SQL> SELECT PROPERTY_VALUE
2 FROM database_properties
3 WHERE PROPERTY_NAME ='DEFAULT_PERMANENT_TABLESPACE';
PROPERTY_VALUE
-------------------------------------------------------------
USERS
SQL> create user dave1 identified bydave1;
User created.
SQL> select default_tablespace from dba_users where username ='DAVE1';
DEFAULT_TABLESPACE
------------------------------
USERS
--默認表空間爲users。
SQL> create user dave2 identified by dave2 default tablespace users;
User created.
SQL> select default_tablespace fromdba_users where username ='DAVE2';
DEFAULT_TABLESPACE
------------------------------
USERS
--建立表空間:
SQL> create tablespace dave3 datafile'D:\APP\ADMINISTRATOR\ORADATA\NEWCCS\dave3.dbf' size 10M;
Tablespace created.
--建立用戶:
SQL> create user dave3 identified by dave3 default tablespace dave3;
User created.
SQL> select default_tablespace from dba_users where username ='DAVE3';
DEFAULT_TABLESPACE
------------------------------
DAVE3
SQL> ALTER DATABASE DEFAULT TABLESPACEdave3;
Database altered.
SQL> select default_tablespace from dba_users where username ='DAVE3';
DEFAULT_TABLESPACE
------------------------------
DAVE3
SQL> select default_tablespace fromdba_users where username ='DAVE2';
DEFAULT_TABLESPACE
------------------------------
DAVE3
SQL> select default_tablespace fromdba_users where username ='DAVE1';
DEFAULT_TABLESPACE
------------------------------
DAVE3
--注意這裏Dave1,dave2用戶的默認表空間都變成了dave3.
--如今dave3是咱們的默認表空間
SQL> SELECT PROPERTY_VALUE
2 FROM database_properties
3 WHERE PROPERTY_NAME ='DEFAULT_PERMANENT_TABLESPACE'
4 ;
PROPERTY_VALUE
----------------------------------------------------------
DAVE3
--drop dave3 看看:
SQL> drop tablespace dave3 includingcontents and datafiles;
drop tablespace dave3 including contentsand datafiles
*
ERROR at line 1:
ORA-12919: Can not drop the defaultpermanent tablespace
這裏報錯ORA-12919.
咱們把默認表空間改爲USERS,在測試:
SQL> ALTER DATABASE DEFAULT TABLESPACEUSERS;
Database altered.
SQL> drop tablespace dave3 including contents and datafiles;
Tablespace dropped.
Dave3表空間成功drop。 注意,咱們的dave3用戶的表空間之間是指向dave3的,如今咱們把dave3表空間drop了,咱們看一下dave3 如今默認表空間:
SQL> select default_tablespace from dba_users where username ='DAVE3';
DEFAULT_TABLESPACE
------------------------------
USERS
--這裏自動變成了咱們的DB 默認的表空間。