oracle 導(dǎo)入 undo ORACLE中,數(shù)據(jù)庫(kù)的redo與undo分別是什么呀,兩者是什么關(guān)系呢?
ORACLE中,數(shù)據(jù)庫(kù)的redo與undo分別是什么呀,兩者是什么關(guān)系呢?redo 是記錄日志用的。undo是記錄數(shù)據(jù)的備份用的。簡(jiǎn)單舉個(gè)例子說(shuō)明(實(shí)際過(guò)程比這要復(fù)雜的多):1、當(dāng)你發(fā)出一條updat
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ù)
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如何擴(kuò)展undo表空間?
處理方法有兩種,一是添加undo 表空間的數(shù)據(jù)文件,二是切換undo tablespace. 這種情況下多用在undo 表空間已經(jīng)非常大的情況。1 增加數(shù)據(jù)文件sql> alter tablespace undo add datafile "D:%undo02.dbf" size 100m reuse表空間已更改。 2 切換undo 表空間1、建立新的表空間undotbs2sql> create undo tablespace undotbs2 datafile "D:%undo03.dbf" size 100m reuse表空間已創(chuàng)建。2、切換到新建的undo表空間上來(lái),操作如下sql> alter system set undo_tablespace=undotbs2 scope=both系統(tǒng)已更改。3、將原來(lái)的undo表空間,置為脫機(jī): sql> alter tablespace undo offline表空間已更改。4、刪除原來(lái)的undo表空間:sql> drop tablespace undo including contents and datafiles cascade constraints 表空間已刪除。如果只是drop tablespace undo ,則只會(huì)在刪除控制文件里的記錄,并不會(huì)物理刪除文件。drop undo表空間的時(shí)候必須是在未使用的情況下才能進(jìn)行。如果undo表空間正在使用(例如事務(wù)失敗,但是還沒有恢復(fù)成功),那么drop表空間命令將失敗。在drop表空間的時(shí)候可以使用including contents。