1. 程式人生 > 資料庫 >oracle表空間不夠用怎麼解決?

oracle表空間不夠用怎麼解決?

看到標題,首先,要知道表空間資料寫不進去是什麼原因。是因為系統記憶體不足?還是oracle使用者表空間給的大小不足?這裡拋開系統記憶體不足不說,下面介紹oracle使用者表空間給的太小造成資料寫不進去怎麼處理。本人所在公司的業務客戶是公安部門,所以資料量是非常巨大的。直接在公安局內網伺服器上敲鍵盤,沒有測試環境,沒有業內人士全靠度娘,每條命令都再三再四地看,畢竟30g公安資料,故知識、命令理解了也不敢回車,小夥子害怕.....

便於理解 可以將xxx.bdf檔案是oracle使用者表空間下面的資料檔案,資料都存放在xxxx.bdf裡面 ,建立使用者以及表空間的時候已經設定xxx.bdf檔案的大小,可以設定此檔案允許無限增大(只要你的伺服器給oracle的空間夠),然後再考慮如何擴容的問題。下面介紹兩種方式達到給表和空間擴容的目的。啊~請把有才打在公屏上........

1>為表空間增加資料檔案(xxx.bdf的數量)

2>增加表空間原有資料檔案尺寸(xxx.bdf的尺寸)

如果已經存了資料,一定要用第一種方案,如果更改原始資料檔案尺寸的話可能會導致資料丟失。試想,如果原始資料檔案為30g,然後你通過sql命令將此檔案擴充套件為20g(檔案空間竟然變小了),必然會導致資料丟失。這條命令就是resize 和 size的sql命令的區別了   第一種方案斷然不會丟失資料,因為增加的是存資料的資料資料夾,並不是操作原始資料資料夾。

下面進入GC:

進入dba管理使用者

sysplus / as dba;

1、查看錶空間的名稱及大小 
SELECT t.tablespace_name, round(SUM(bytes / (1024 * 1024)), 0) ts_size 

FROM dba_tablespaces t, dba_data_files d 
WHERE t.tablespace_name = d.tablespace_name 
GROUP BY t.tablespace_name; 

2、查看錶空間物理檔案的名稱及大小 
SELECT tablespace_name, 
file_id, 
file_name, 
round(bytes / (1024 * 1024), 0) total_space 
FROM dba_data_files 
ORDER BY tablespace_name;

3,開始“擴容”啦

原有一個bdf檔案,內有30g資料,/home/oracledb/oradata/orcl/BHZHDP.dbf,現在TBS_BHZHDP表空間不足無法寫入資料開始擴容。

alter tablespace TBS_BHZHDP add datafile '/home/oracledb/oradata/orcl/BHZHDP2.dbf' size 35g;(35g如果算是很大可能回報這個錯誤)

ORA-01144即表示你的單個數據檔案超出了oracle的限制:
如:ORA-01144: File size (4194304 blocks) exceeds maximum of 4194303 blocks
表示你的表空間是Smallfile tablespace,單個數據檔案最大隻可以有2^22=4194303個blocks,換成KBytes時即乘上你資料庫的block_size即可,解決方法是用多個數據檔案,不是把單個數據檔案設得很大.【解決】創新資料檔案的時候給小一點空間10g差不多足夠,也可以先看還有多少剩餘嘛!可參考https://blog.csdn.net/jlds123/article/details/6771440

【注】上面的數字2,表示是在同個TBS_BHZHDP空間表下建立新資料檔案存資料,標記此檔案2.bdf。至此問題解決,可以執行操作1再次查看錶空間的名稱和大小。

 

【題外話】

剛說到直接擴容bdf檔案的問題是危險的,這裡不在過多描述,resize是重定義檔案大小,而add xxxx size是你想要新增多少容量。總之不是專業DBA不建議通過這種方式擴容表空間。具體可以偷襲下面這篇部落格,我這邊直接忽略此博主寫的第一種方案,本人小白。

https://www.cnblogs.com/longjshz/p/4553482.html

要了解更多的oracle查看錶空間以及剩餘量的sql語句請看偷襲!!!!!!!!!!!!!!!!!!!!

https://www.cnblogs.com/wolfplan/p/6874327.html

下面是我瀏覽過認為描述問題比較全面的部落格

https://www.cnblogs.com/mzdljgz/p/11387294.html (這一篇也是我此次解決問題的關鍵,因為不瞭解直接擴bdf和增加bdf的區別,感謝此博主)

http://blog.itpub.net/29485627/viewspace-1280367/

 

 

 

啊.請把有才打在公屏上

偷襲!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!