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

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

· 湖北宜昌三峽壩區水面驚現神秘動物

近日,湖北宜昌,一段視頻在當地熱傳:有網友在三峽壩區拍到神秘動物,體型碩大數米長...

· 什麽是語段?語段的類型以及和句群、段落的區別與聯系是什麽?

句群是最高級的語言單位。 段落(自然段)是章法單位...

· 十八部好看的賭石類小說

以下是十八部(排名不分先後)好看的賭石類小說的簡介,喜歡的朋友可以去搜索書名閱讀...

 
詳細講解Oracle數據庫9i穿過防火牆問題
環境:win2000,oracle 9.2.0.1 方法一: 在windows2000的注冊表中,hkey_local_machinesoftwareoraclehome0下加入字符串值: USE_SHARED_SOCKET=TRUE,即可 方法二: 1、首先將數據庫實例改爲SHARED SERVER模式 2、以...查看完整版>>詳細講解Oracle數據庫9i穿過防火牆問題
 
詳細講解Oracle數據庫的數據遷移方法
這篇論壇文章(賽迪網技術社區)主要介紹了Oracle數據庫的數據遷移方法,詳細內容請大家參考下文: 隨著數據庫管理系統和操作系統平台的更新換代的速度的加快,數據庫管理員經常需要在兩個不同的數據庫之間或在兩種不...查看完整版>>詳細講解Oracle數據庫的數據遷移方法
 
深入講解Oracle數據庫的多欄輸出語句
數據表: ID NAME 1 蘋果汁 2 牛奶 3 蕃茄醬 4 鹽 5 麻油 6 醬油 7 海鮮粉 8 胡椒粉 9 雞 10 蟹 11 民衆奶酪 12 德國奶酪 13 龍蝦 14 沙茶 15 味精 16 餅幹 17 豬肉 18 墨魚 19 糖果 20 桂花糕 21 花生 22 糯米 以下是...查看完整版>>深入講解Oracle數據庫的多欄輸出語句
 
實例講解兩台SQL Server數據同步解決方案
複制的概念   複制是將一組數據從一個數據源拷貝到多個數據源的技術,是將一份數據發布到多個存儲站點上的有效方式。使用複制技術,用戶可以將一份數據發布到多台服務器上,從而使不同的服務器用戶都可以在權限的許...查看完整版>>實例講解兩台SQL Server數據同步解決方案
 
如何修改oracle默認internal用戶的登陸問題
經過我半下午的反複試驗(因爲我很菜,什麽都要查幫助)終于找到一個可以讓別人無法用internal登陸你的Oracle的辦法(注:sys的口令是很輕易修改的所以不用管他)步驟如下1:找到建庫時的口令文件pwd(sid).ora將他備份...查看完整版>>如何修改oracle默認internal用戶的登陸問題