ORACLE學習之路 常用表空間操作指令集

2021-05-01 23:49:32 字數 4466 閱讀 5395

為了方便,下面用到的表空間統一名稱myspace,資料檔案存放在$oracle_base/oradata/wilson 下面

1、建立表空間

a、最簡形式

create tablespace myspace datafile '/u01/oradata/wilson/myspace01.dbf' size 10m;

tablespace created

b、帶自動擴充套件空能的表空間

有很多時候,我們都是無法準確的**到資料庫將來的資料量,因此在建立表空間的時候無法準確定義資料檔案的大小,這時

我們可以讓表空間有自動擴充套件的功能,當資料量大於資料檔案初始值時,讓它自動增長。

create tablespace myspace datafile '/u01/oradata/wilson/myspace01.dbf' size 10m autoextend on next 2m

maxsize 100m;

tablespace created

使用上面的命令,我們就建立了乙個初始大小為10m,帶自動擴充套件功能的表空間了,擴充套件的步長為2m,最大值為100m。如果你

不想加空間限制的話可以使用maxsize unlimited,如果不設maxsize,系統預設為unlimited。(還是受到硬碟大小的限制!)

c、local management 的表空間。

以前的oracle的表空都是由系統統一管理,從xx開始,oracle對錶空間提供了locally management,他的好處是不需要查詢

資料字典,在每個資料檔案頭部加bit map 來控制空間的使用,分配空間不用undo。具體內容大家可以到網上去google一下。

create tablespace myspace datafile '/u01/oradata/wilson/myspace01.dbf' size 10m extent management

local uniform size 128k;

tablespace created

2、修改表空間狀態

a、修改狀態為唯讀/非唯讀

有時候因為某種需要,我們讓表空間處於唯讀狀態,就可以用如下的sql statement

alter tabespace myspace read only;

修改回來為

alter tablespace myspace read write;

當表空間被設為唯讀的時候有如下特點:

--系統會觸發checkpiont,把redo裡面的東西寫入資料檔案;

--資料唯讀;

--可以在表空間裡drop物件(不能truncate table)。

b、修改狀態為offline/online

有時候,我們為了避免使用者的資料連線,可以把錶空間offline

alter tablespace myspace offline;

修改為online,可以使用

alter tablespace myspace online;

在offline後面有三個引數分別為normal,immediate,temporary。9i之前還有for recovery 到了10g後就沒有了。

有些表空間是無法offline的:

--system表空間

--正在交易的表空間

--系統預設臨時表空間

3、修改表空間大小

a、使用autoextend on實現

在建立表空間的時候,可以使用autoextend on來實現,具體請看上面的 b、帶自動擴充套件空能的表空間。

如果在建立表空間的時候沒有設定autoextend on 那麼可以使用alter database來實現

alter database datafile '/u01/oradata/wilson/myspace01.dbf' autoextend on next 2m maxsize 100m;

database altered

b、手動resize表空間

如果想手動修改表空間到一定的大小,可以使用resize方法

alter database datafile '/u01/oradata/wilson/myspace01.dbf' resize 20m;

database altered

使用這個命令可以隨意的改變表空間的大小。不過有一點要注意的就是,在改小表空的時候,重新設定的值不能小於表空間

內現存的資料大小,否則報錯。

c、通過新增資料檔案修改

我們知道表空間是個邏輯上的概念,資料存放的實體地址是磁碟上的資料檔案,因此我們可以通過新增新資料檔案來擴充表空間

alter tablespace myspace add datafile '/u01/oradata/wilson/myspace02.dbf' size 20m;

tablespace altered

4、移動資料檔案

有時候可能會因為磁碟損壞或者新增新磁碟,我們需要把原來的資料檔案移動到新磁碟上,對此,oracle提供了兩種方法

a、alter tablespace

準備工作:

--表空間狀態必須是offline

--新資料檔案必須已經存在

alter tablespace myspace rename datafile '/u01/oradata/wilson/myspace01.dbf' to '/u01/oradata/

myspace01.dbf';

tablespace altered

b、alter database

準備工作

--資料庫必須處於mounted狀態

--新資料檔案必須已經存在

startup mount

alter database rename file'/u01/oradata/wilson/myspace01.dbf' to '/u01/oradata/myspace01.dbf';

database altered

5、刪除表空間

a、刪除表空間保留資料檔案

drop tablespace myspace including contents;

這時,資料空中的myspace表空間已經被刪除了,但是磁碟上面的資料檔案還存在。

b、刪除表空間同時刪除資料檔案

drop tablespace myspace including contents and datafiles;

這時表空間和磁碟上面的資料檔案都被刪除了。

c、刪除表空間的主外來鍵約束

如果要刪除的表空間中的表和其他表空間中的表有主外來鍵約束關係,我們必須刪除其約束關係,否則無法刪除表空間。

drop tablespace myspace including contents cascade contraints;

這樣我們就可以吧表空間種的約束條件都刪除了。

大家可能發現上面的三個刪除方式可以寫成一條sql語句

drop tablespace myspace including contents and datafiles cascade contraints;

用這條語句就可以成功地將表空間完全刪除。

6、存放表空間資訊的資料字典和動態檢視

a、表空間資訊

dba_tablespace

v$tablespace

b、資料檔案資訊

dba_data_files

v$datafile

c、臨時表空間檔案資訊

dba_temp_files

v$tempfile

上面我們說的都是permanet型別的表空間,undo和temporary型別的表空間沒有什麼太大的差異,有機會我再寫。

睡覺了(~ o ~)~zz。

新增一條檢視資料庫裡表空間使用情況的sql:

select f.tablespace_name,a.total||『m』,u.used||『m』,f.free||『m』,round((u.used/a.total)*100) "% used",

round((f.free/a.total)*100) "% free"   

from 

(select tablespace_name, sum(bytes/(1024*1024)) total   

from dba_data_files group by tablespace_name) a,  

(select tablespace_name, round(sum(bytes/(1024*1024))) used   

from dba_extents group by tablespace_name) u,  

(select tablespace_name, round(sum(bytes/(1024*1024))) free   

from dba_free_space group by tablespace_name) f  

where a.tablespace_name = f.tablespace_name and a.tablespace_name = u.tablespace_name; 

oracle 建立表空間常用

dmp 檔案使用者匯入命令 imp 使用者名稱 密碼 file e mps css.dmp fromuser 匯出使用者 touser 匯入使用者 imp system root file e mps css.dmp fromuser msp css touser msp css 給其他使用者查詢許...

Oracle表空間常用操作

1 建立表空間 在sql plug下,執行下面的語句 create tablespace nberp logging datafile d oracle oradata oracle9i user data.dbf size 50m autoextend on next 50m maxsize 20...

Oracle 表空間常用操作

備忘 檢視表空間使用率 set lin 200 pagesize 1000 select b.tablespace name,round sum b.bytes 1024 1024,0 sum mb,round sum nvl a.bytes,0 1024 1024,0 free mb,round ...