天天看點

oracle表空間擴容

1、查詢目前表空間使用情況

col FILE_NAME format a50;
col SPACE_NAME format a15;  
select b.file_name file_name,b.tablespace_name space_name,
b.bytes/1024/1024 munM,(b.bytes-sum(nvl(a.bytes,0)))/1024/1024 usedM,
substr((b.bytes-sum(nvl(a.bytes,0)))/(b.bytes)*100,1,5) "use%"
from dba_free_space a,dba_data_files b
where a.file_id=b.file_id group by > b.tablespace_name,b.file_name,b.bytes
order by b.tablespace_name;
           

2、查詢各表占用空間情況,可以通過blocks塊數判斷空間占用情況

select table_name,tablespace_name,num_rows,blocks  from all_tables where owner='IPEMS_DEV_EMS' order by blocks asc;
           

3、結合業務需要可以對曆史資料表進行删除,如果需要删除的表較多,可通過拼接自動生成SQL腳本,也可利用notpad++工具手動拼接SQL腳本

alter table IPEMS_DEV_EMS.DO_5C6B3296CD1E_1062 move tablespace IPEMS01;
           

4、增加資料檔案擴充表空間

alter tablespace IPEMS01 add datafile 'D:\APP\ADMINISTRATOR\ORADATA\IPEMS\IPEMS0104.DBF' size 30000m  reuse  autoextend on next 50M;
           

5、直接增大現有資料檔案擴充表空間

ALTER DATABASE DATAFILE 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\DBFIRST\DITS.DBF' RESIZE 400M;
           

6、關于oracle資料檔案大小的說明:

64位OS 和64位oracle,預設oracle表空間資料檔案用的BLOCKSIZE是8k,表空間資料檔案最大是32G(最大blocks 2^22-1,單個資料檔案最大為最大blocks*block_size (2^22-1)*8/1024/1204/1024)。要擴大單個資料檔案的大小限制主要修改block_size的大小           

uname -a 檢視linuxOS的位數,sqlplus 登入oracle會顯示oracle的位數,show parameter block;在指令行視窗可以檢視資料塊大小;

計算機右鍵“屬性”檢視windows的位數;

32位OS和32位oracle,預設oracle表空間datafile用的BLOCKSIZE也是8k,表空間資料檔案最大也是32G。試了一下64G檔案,也沒有問題。
是以最終限制資料檔案大小的還是oracle資料庫,而不是作業系統。