資料庫用久了難免會出現沒有**的空間,如果空間太大可使用以下方法進行**。
查詢用個表所占用的空間:
[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資料庫...