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
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/
啊.請把有才打在公屏上
偷襲!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!