删除数据清理oracle表空间,oracle数据库删除无用表空间及数据文件过程
應(yīng)用場景:html
數(shù)據(jù)庫服務(wù)器A下的一張數(shù)據(jù)庫表重建過,而且數(shù)據(jù)已經(jīng)遷移到新表空間下,現(xiàn)遺留了一些原有的表空間數(shù)據(jù)文件在服務(wù)器上,耗費(fèi)資源,如圖所示:
linux
原數(shù)據(jù)庫表對(duì)應(yīng)的數(shù)據(jù)文件:sql
遷移后數(shù)據(jù)文件:
數(shù)據(jù)庫
咱們的目的是,將這些沒用的dbf文件刪除,把/opt/oradata下的存儲(chǔ)釋放出來。
現(xiàn)說明一下處理的步驟:服務(wù)器
查詢表空間和數(shù)據(jù)文件對(duì)應(yīng)關(guān)系oracle
發(fā)現(xiàn)CLRDBS01-14是重建前的,CLRDB01-60是重建后的。spa
執(zhí)行語句,嘗試進(jìn)行刪除,這塊Oracle報(bào)錯(cuò)了。線程
drop tablespace CLRDBS14 INCLUDING CONTENTS AND DATAFILES;
oracle提示報(bào)錯(cuò):ORA-14404
code
此錯(cuò)誤說明,該表空間下有分區(qū)表在用此表空間的數(shù)據(jù)文件,因此不能直接刪除表空間htm
既然報(bào)錯(cuò)了,那咱們就看一下怎么解決它。
查詢哪些表在占用這個(gè)CLRDBS14:
SELECT x.table_name,x.partition_name,x.tablespace_name 表空間1, y.tablespace_name 表空間2
FROM dba_tab_partitions x, dba_tab_partitions y
WHERE x.tablespace_name ='CLRDBS14' AND y.tablespace_name <> 'CLRDBS14' AND x.table_name=y.table_name;
經(jīng)查詢,有5個(gè)表在使用,分別是:
TFA_ALARM_UNSTANDARD
TFA_ALARM_GCSS
TFA_ALARM_CLR_05061
TFA_ALARM_CLR_05062
TFA_ALARM_CLR_0506
分別查看一下這些表
TFA_ALARM_UNSTANDARD TFA_ALARM_GCSS 這兩張下面沒數(shù)據(jù),導(dǎo)出建表語句,刪除。
TFA_ALARM_CLR_05061 TFA_ALARM_CLR_05062 TFA_ALARM_CLR_0506 這三張是以前clr表的備份,刪除。
再次執(zhí)行刪除語句,刪除CLRDBS14
drop tablespace CLRDBS14 INCLUDING CONTENTS AND DATAFILES;
這次正常執(zhí)行。
依次刪除CLRDBS01-CLRDBS13
登錄數(shù)據(jù)庫服務(wù)器下/opt/oradata,查看以前的clrdbs數(shù)據(jù)文件,已經(jīng)在服務(wù)器上找不到了
執(zhí)行bdf,觀察/opt/oradata大小
這塊特殊說明一下,空間不會(huì)立刻就釋放出來,由于linux OS系統(tǒng)bdf命令的機(jī)制是,只有當(dāng)線程釋放完畢后,才會(huì)釋放bdf命令內(nèi)的空間。
總結(jié)
以上是生活随笔為你收集整理的删除数据清理oracle表空间,oracle数据库删除无用表空间及数据文件过程的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 烽火服务器怎么进入bios系统,装机高手
- 下一篇: mysql常见错误解决方法_mysql常