oracle undo表空間滿了 oracle11gr2undo表空間使用率高如何查看是什么語句造成的?
oracle11gr2undo表空間使用率高如何查看是什么語句造成的?通過這個SQL語句可以查詢到會話對應(yīng)的活動事務(wù)使用的UNDO段名稱,以及該段占用的UNDO空間大小,對于非活動事務(wù)占用了UNDO空
oracle11gr2undo表空間使用率高如何查看是什么語句造成的?
通過這個SQL語句可以查詢到會話對應(yīng)的活動事務(wù)使用的UNDO段名稱,以及該段占用的UNDO空間大小,對于非活動事務(wù)占用了UNDO空間是由Oracle實例根據(jù)參數(shù)配置自動化管理的。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可以有幾個?
你可以建立多個undo表空間,但是當(dāng)前在用undo表空間只能是其中一個。
你用show parameter undo_tablespace可以查看到當(dāng)前默認undo表空間
ORACLE中,數(shù)據(jù)庫的redo與undo分別是什么呀,兩者是什么關(guān)系呢?
redo 是記錄日志用的。undo是記錄數(shù)據(jù)的備份用的。簡單舉個例子說明(實際過程比這要復(fù)雜的多):1、當(dāng)你發(fā)出一條update語句后,oracle先將更改前后信息寫進redo(當(dāng)滿足一定條件后由日志寫進程寫入日志文件)2、然后將更新前得數(shù)據(jù)鏡像copy到undo中。3、用戶rollback后,oracle 將undo中的數(shù)據(jù)覆蓋回去 用戶commit后,oracle可以根據(jù)redo 的信息進行數(shù)據(jù)恢復(fù)。(當(dāng)然也可以利用undo進行flashback)簡單的講就是這樣,慢慢理解吧。
如何讓Oracle釋放undo表空間?
為了清理這部分的空間,下面通過如下幾個步驟完成替換操作。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將紅色部分替換為實際的oracle數(shù)據(jù)庫路徑2、切換系統(tǒng)表空間alter system set undo_tablespace=UNDOTBS2 scope=both讓oracle的當(dāng)前undo表空間切換到undotbs2上3、重啟數(shù)據(jù)庫通過命令行方式登錄數(shù)據(jù)庫,[root$smserver] sqlplus /nolog [root$smserver]conn / as sysdba [root$smserver] shutdown immediate[root$smserver] startup4、刪除原來undo內(nèi)容drop tablespace undotbs1 including contents and datafiles5、重復(fù)第三部操作,重啟數(shù)據(jù)庫