oracle undo表空間滿了 oracle11gr2undo表空間使用率高如何查看是什么語(yǔ)句造成的?
oracle11gr2undo表空間使用率高如何查看是什么語(yǔ)句造成的?通過(guò)這個(gè)SQL語(yǔ)句可以查詢到會(huì)話對(duì)應(yīng)的活動(dòng)事務(wù)使用的UNDO段名稱,以及該段占用的UNDO空間大小,對(duì)于非活動(dòng)事務(wù)占用了UNDO空
oracle11gr2undo表空間使用率高如何查看是什么語(yǔ)句造成的?
通過(guò)這個(gè)SQL語(yǔ)句可以查詢到會(huì)話對(duì)應(yīng)的活動(dòng)事務(wù)使用的UNDO段名稱,以及該段占用的UNDO空間大小,對(duì)于非活動(dòng)事務(wù)占用了UNDO空間是由Oracle實(shí)例根據(jù)參數(shù)配置自動(dòng)化管理的。select s.sid,s.serial#,s.sql_id,v.usn,segment_name,r.status, v.rssize/1024/1024 mb From dba_rollback_segs r, v$rollstat v,v$transaction t,v$session s Where r.segment_id = v.usn and v.usn=t.xidusn and t.addr=s.taddr order by segment_name
ORACLE中UNDOTABLESPACE可以有幾個(gè)?
你可以建立多個(gè)undo表空間,但是當(dāng)前在用undo表空間只能是其中一個(gè)。
你用show parameter undo_tablespace可以查看到當(dāng)前默認(rèn)undo表空間
ORACLE中,數(shù)據(jù)庫(kù)的redo與undo分別是什么呀,兩者是什么關(guān)系呢?
redo 是記錄日志用的。undo是記錄數(shù)據(jù)的備份用的。簡(jiǎn)單舉個(gè)例子說(shuō)明(實(shí)際過(guò)程比這要復(fù)雜的多):1、當(dāng)你發(fā)出一條update語(yǔ)句后,oracle先將更改前后信息寫進(jìn)redo(當(dāng)滿足一定條件后由日志寫進(jìn)程寫入日志文件)2、然后將更新前得數(shù)據(jù)鏡像copy到undo中。3、用戶rollback后,oracle 將undo中的數(shù)據(jù)覆蓋回去 用戶commit后,oracle可以根據(jù)redo 的信息進(jìn)行數(shù)據(jù)恢復(fù)。(當(dāng)然也可以利用undo進(jìn)行flashback)簡(jiǎn)單的講就是這樣,慢慢理解吧。
如何讓Oracle釋放undo表空間?
為了清理這部分的空間,下面通過(guò)如下幾個(gè)步驟完成替換操作。1、創(chuàng)建新的undo表空間undotbs2CREATE UNDO TABLESPACE UNDOTBS2 DATAFILE "/u01/app/oracle/oradata/mydb/undo02.dbf" SIZE 512M REUSEAUTOEXTEND ON NEXT 64M MAXSIZE UNLIMITED RETENTION NOGUARANTEE BLOCKSIZE 8K FLASHBACK ON將紅色部分替換為實(shí)際的oracle數(shù)據(jù)庫(kù)路徑2、切換系統(tǒng)表空間alter system set undo_tablespace=UNDOTBS2 scope=both讓oracle的當(dāng)前undo表空間切換到undotbs2上3、重啟數(shù)據(jù)庫(kù)通過(guò)命令行方式登錄數(shù)據(jù)庫(kù),[root$smserver] sqlplus /nolog [root$smserver]conn / as sysdba [root$smserver] shutdown immediate[root$smserver] startup4、刪除原來(lái)undo內(nèi)容drop tablespace undotbs1 including contents and datafiles5、重復(fù)第三部操作,重啟數(shù)據(jù)庫(kù)