oracle縮小表空間

2021-06-19 03:46:01 字數 1344 閱讀 7867

資料庫用久了難免會出現沒有**的空間,如果空間太大可使用以下方法進行**。

查詢用個表所占用的空間:

[sql]view plain

copy

select

tablespace_name,  

100*(sum_max-sum_alloc+nvl(sum_free,0))/sum_max as capa_per,  

(sum_max-sum_alloc+nvl(sum_free,0))/1024/1024  as capa_free,  

(sum_alloc - nvl(sum_free,0))/1024/1024 as capa_used,  

sum_max/1024/1024 as capa_max,  

100*nvl(sum_free,0)/sum_alloc as per,  

nvl(sum_free,0)/1024/1024 as

free,  

(sum_alloc - nvl(sum_free,0))/1024/1024 as used,  

sum_alloc/1024/1024 as

maxfrom ( select tablespace_name  

, sum(bytes) as sum_alloc  

, sum(decode(maxbytes,0,bytes,maxbytes)) as sum_max  

from dba_data_files  

group

by tablespace_name  

)  ,( select tablespace_name as fs_ts_name  

, sum(bytes) as sum_free  

from dba_free_space  

group

by tablespace_name )  

where tablespace_name = fs_ts_name(+)  

order

by 2,3;  

其中max為當前占用磁碟空間(單位mb),used為資料實際所需空間,free是可被**的空間。

假設system表max為10240m,used為600m,資料存放於d:\oradata\dba目錄下,用以下命令將system表空間縮小到610m:

[sql]view plain

copy

alter

database datafile  'd:\oradata\dba\system01.dbf' resize 610m;  

其他表空間(如undotbs1、indx等)方法一樣。

undo表空間縮小

最近執行乙個資料量比較大的儲存過程,造成undo表空間達到16g左右,但是直接採用resize的方式又無法縮小其大 小,因此經網上搜尋,採用了undo表空間重建的方式來縮小去空間大小,具體步驟如下 1 建立備用undo表空間 create undo tablespace newundotbs dat...

資料庫縮小表空間

案例環境 今天啟動應用程式,程式報錯如下 exceptionmessage ora 01653 表 hbxnb cs.bz29 無法通過 1024 在表空間 users 中 擴充套件 ora 06512 在 hbxnb cs.dbms context line 40 ora 01653 表 hbxn...

Oracle表空間 表

表 table 表空間是對儲存系統檔案 使用者資訊等資料的乙個空間。oracle表空間屬於oracle中的儲存結構,是由資料檔案組成,乙個資料庫例項可以有n個表空間,每個資料庫至少有乙個表空間 system表空間 乙個表空間下可以有n張表。可以通過表空間來實現對oracle的調優 oracle資料庫...