oracle数据库UNDOTBS空间清理
1.背景
數(shù)據(jù)庫(kù)UNDOTBS1表空間報(bào)警:
##告警172.0.0.1_Oracle數(shù)據(jù)庫(kù)讀寫分離–Oracle_TableSpace:UNDOTBS1使用率超過(guò)90,故障已持續(xù)0m(IP地址172.0.0.1;告警時(shí)間2020.03.11 09:47:53;檢查項(xiàng)oracle.check[pre,UNDOTBS1] ;當(dāng)前狀態(tài)PROBLEM;值92 %)
2.操作排查問題
(1)看到此報(bào)錯(cuò),一般認(rèn)為數(shù)據(jù)庫(kù)的表空間不足,查詢之后,表空間還存在很大的空余,之后認(rèn)真查看了一下表空間名稱,一看是UNDOTBS1(回滾表空間),這就知道什么原因了。
(2)知識(shí)普及:UNDOTBS1是一個(gè)回滾表空間,隨著數(shù)據(jù)庫(kù)的使用,默認(rèn)會(huì)自動(dòng)擴(kuò)展。當(dāng)它增大到一定程度,占用了過(guò)多的磁盤空間時(shí),就需要進(jìn)行清理了。
(3)網(wǎng)上查詢一下,發(fā)現(xiàn)有好多說(shuō)操作要重啟數(shù)據(jù)庫(kù),由于數(shù)據(jù)庫(kù)上正在跑著數(shù)據(jù),不能重啟,所以這種方案被否決。
3.解決方案
這里以表空間UNDOTBS1為例,undotbs2 為新建的表空間
(1)登錄數(shù)據(jù)庫(kù)服務(wù)器
執(zhí)行:su - oracle
(2)使用dab登錄
執(zhí)行:sqlplus / as sysdba
(3)查詢表空間信息
執(zhí)行:select * from dba_data_files;
(4)查詢當(dāng)前使用的undotbs表空間
SQL>show parameters undo;
(5)重新建立一個(gè)新的undo表空間
執(zhí)行:create undo tablespace undotbs2 datafile '/user/oracle/oradata/undotbs02.dbf' size 8048m;
(6)設(shè)置數(shù)據(jù)庫(kù)的undo表空間為新的undotbs2表空間
執(zhí)行:alter system set undo_tablespace=undotbs2;
(7)刪除舊的undo表空間及其內(nèi)容
執(zhí)行:drop tablespace undotbs1 including contents and datafiles;
(8)再次執(zhí)行語(yǔ)句查看表空間
SELECT a.tablespace_name "表空間名", total "表空間大小", free "表空間剩余大小", (total - free) "表空間使用大小", total / (1024 * 1024 * 1024) "表空間大小(G)", free / (1024 * 1024 * 1024) "表空間剩余大小(G)", (total - free) / (1024 * 1024 * 1024) "表空間使用大小(G)", round((total - free) / total, 4) * 100 "使用率 %" FROM (SELECT tablespace_name, SUM(bytes) free FROM dba_free_space GROUP BY tablespace_name) a, (SELECT tablespace_name, SUM(bytes) total FROM dba_data_files GROUP BY tablespace_name) b WHERE a.tablespace_name = b.tablespace_name;(8)但是即使按照上面的方式清空UNDOTBS表空間,主要頻繁執(zhí)行update語(yǔ)句也會(huì)很快讓空間飽和,所以可以考慮關(guān)閉undo retention的自動(dòng)優(yōu)化特性,即將數(shù)據(jù)庫(kù)參數(shù)_undo_autotune設(shè)置為FALSE,
執(zhí)行:Alter system set "_undo_autotune" = false;
該參數(shù)可以在線調(diào)整,不需要重啟數(shù)據(jù)庫(kù),也不會(huì)影響系統(tǒng)額正常運(yùn)行。
(10)增大臨時(shí)文件大小
alter database tempfile ‘/user/oracle/oradata/undotbs02.dbf’ RESIZE 4096M;
參考:https://blog.csdn.net/ziele_008/article/details/104792752
總結(jié)
以上是生活随笔為你收集整理的oracle数据库UNDOTBS空间清理的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: getprop导出雷电模拟器Androi
- 下一篇: Superset【实践 01】数据可视化