| 導購 | 订阅 | 在线投稿
分享
 
 
 

實例講解Oracle數據庫設置默認表空間問題

來源:互聯網  2008-08-05 07:04:59  評論

DBA們經常會遇到一個這樣令人頭疼的問題:不知道誰在Oracle上創建了一個用戶,創建時,沒有給這個用戶指定默認表空間,所以這個用戶就會采用默認的表空間——system表空間。導致系統表空間迅速被用戶數據占滿,直至宕機。

在10G中,DBA有辦法避免這種問題了——在線指定系統默認表空間:

ALTER DATABASE DEFAULT TABLESPACE ;

通過執行以上命令,可以設定系統的默認表空間。這樣的話,在創建新用戶時,如果不指定他的默認表空間,就會采用上面指定的系統默認表空間作爲這個用的默認表空間。

SQL>conn /as sysdba

SQL> create user test1 identified by test1 default tablespace ringidx;

用戶已創建。

SQL> alter database default tablespace ring;

數據庫已更改。

SQL> create user test identified by test;

用戶已創建。

SQL> select username, default_tablespace defspace from dba_users where

username=』TEST』;

USERNAME DEFSPACE

————– —————-

TEST RING

但是要注意的是,一旦將系統默認表空間修改了以後,原有的所有普通用戶的默認表空間都會被指定爲這個表空間,如上例中test1,創建時指定了他的默認表空間爲ringidx,執行了』alter database default tablespace ring』後,他的默認表空間也被改爲了ring。

SQL> select username, default_tablespace defspace from dba_users where

username=』TEST1′;

USERNAME DEFSPACE

————– —————-

TEST1 RING

爲非核心的系統用戶指定一個特殊的默認表空間

在創建Oracle實例時,除了創建了如sys、system等系統核心的用戶外,還會創建一些諸如dbsnmp、odm、perfstat等非核心的用戶。這些用戶在9i中都是以system作爲他們的默認表空間。這些用戶一旦被使用,也會産生較大的數據量占用system表空間。

在Oracle10G當中,使用了一個新的表空間SYSAUX作爲這些用戶的默認表空間。這個表空間在實例創建是就創建了,除了他的數據文件名可以被修改外,其他都不允許被修改。

Oracle的這一改變可以使當system表空間損壞時對數據庫做全庫恢複。在sysaux中的對象可以恢複成普通對象,而數據庫能保持正常運行。

如果DBA想要將sysaux表空間中的用戶轉移到其他表空間去該如何做呢。在10G中,專門爲此提供一個視圖V$SYSAUX_OCCUPANTS來描述如何轉移這些用戶的表空間。

select * from V$SYSAUX_OCCUPANTS where OCCUPANT_NAME = 『ODM』

OCCUPANT_NAME OCCUPANT_DESC SCHEMA_NAME MOVE_PROCEDURE MOVE_PROCEDURE_DESC SPACE_USAGE_KBYTES

————- ————- ———– ————– ——————- ——————

ODM Oracle Data Mining DMSYS MOVE_ODM Move Procedure for Oracle Data Mining 5568

1 rows selected

如上,如果要將改變ODM的表空間,可以使用存儲過程MOVE_ODM,當前它占用了5568kb的表空間。

爲表空間改名

這Oracle10G表空間增強中一個令人心動的改變。

這項功能允許改變數據庫中除system和sysaux外任意一個表空間的名字。

ALTER TABLESPACE RENAME TO ;

有了這項功能,將會讓很多事情變得非常簡單。

有DBA可能會擔心,一旦一個表空間的名字改變了,而且它已經被使用了很長時間了,會不會引起系統的混亂?這個不用擔心,執行了上面的語句後,Oracle會將系統中所有相關的數據字典的內容全部更新:

SQL> alter tablespace ring rename to ring1;

表空間已更改。

SQL> select username, default_tablespace defspace from dba_users where username=』TEST』;

USERNAME DEFSPACE

————– —————-

TEST RING1

DBA們經常會遇到一個這樣令人頭疼的問題:不知道誰在Oracle上創建了一個用戶,創建時,沒有給這個用戶指定默認表空間,所以這個用戶就會采用默認的表空間——system表空間。導致系統表空間迅速被用戶數據占滿,直至宕機。 在10G中,DBA有辦法避免這種問題了——在線指定系統默認表空間: ALTER DATABASE DEFAULT TABLESPACE ; 通過執行以上命令,可以設定系統的默認表空間。這樣的話,在創建新用戶時,如果不指定他的默認表空間,就會采用上面指定的系統默認表空間作爲這個用的默認表空間。 SQL>conn /as sysdba SQL> create user test1 identified by test1 default tablespace ringidx; 用戶已創建。 SQL> alter database default tablespace ring; 數據庫已更改。 SQL> create user test identified by test; 用戶已創建。 SQL> select username, default_tablespace defspace from dba_users where username=』TEST』; USERNAME DEFSPACE ————– —————- TEST RING 但是要注意的是,一旦將系統默認表空間修改了以後,原有的所有普通用戶的默認表空間都會被指定爲這個表空間,如上例中test1,創建時指定了他的默認表空間爲ringidx,執行了』alter database default tablespace ring』後,他的默認表空間也被改爲了ring。 SQL> select username, default_tablespace defspace from dba_users where username=』TEST1′; USERNAME DEFSPACE ————– —————- TEST1 RING 爲非核心的系統用戶指定一個特殊的默認表空間 在創建Oracle實例時,除了創建了如sys、system等系統核心的用戶外,還會創建一些諸如dbsnmp、odm、perfstat等非核心的用戶。這些用戶在9i中都是以system作爲他們的默認表空間。這些用戶一旦被使用,也會産生較大的數據量占用system表空間。 在Oracle10G當中,使用了一個新的表空間SYSAUX作爲這些用戶的默認表空間。這個表空間在實例創建是就創建了,除了他的數據文件名可以被修改外,其他都不允許被修改。 Oracle的這一改變可以使當system表空間損壞時對數據庫做全庫恢複。在sysaux中的對象可以恢複成普通對象,而數據庫能保持正常運行。 如果DBA想要將sysaux表空間中的用戶轉移到其他表空間去該如何做呢。在10G中,專門爲此提供一個視圖V$SYSAUX_OCCUPANTS來描述如何轉移這些用戶的表空間。 select * from V$SYSAUX_OCCUPANTS where OCCUPANT_NAME = 『ODM』 OCCUPANT_NAME OCCUPANT_DESC SCHEMA_NAME MOVE_PROCEDURE MOVE_PROCEDURE_DESC SPACE_USAGE_KBYTES ————- ————- ———– ————– ——————- —————— ODM Oracle Data Mining DMSYS MOVE_ODM Move Procedure for Oracle Data Mining 5568 1 rows selected 如上,如果要將改變ODM的表空間,可以使用存儲過程MOVE_ODM,當前它占用了5568kb的表空間。 爲表空間改名 這Oracle10G表空間增強中一個令人心動的改變。 這項功能允許改變數據庫中除system和sysaux外任意一個表空間的名字。 ALTER TABLESPACE RENAME TO ; 有了這項功能,將會讓很多事情變得非常簡單。 有DBA可能會擔心,一旦一個表空間的名字改變了,而且它已經被使用了很長時間了,會不會引起系統的混亂?這個不用擔心,執行了上面的語句後,Oracle會將系統中所有相關的數據字典的內容全部更新: SQL> alter tablespace ring rename to ring1; 表空間已更改。 SQL> select username, default_tablespace defspace from dba_users where username=』TEST』; USERNAME DEFSPACE ————– —————- TEST RING1
󰈣󰈤
 
 
 
>>返回首頁<<
 
 
 
 
 熱帖排行
 
王朝網路微信公眾號
微信掃碼關註本站公眾號 wangchaonetcn
 
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有