1.確定干凈的關(guān)閉數(shù)據(jù)庫 多少回滾(以字節(jié)計(jì)算)
( 為測(cè)試目的,先對(duì)某表做插入,但不commit)
select sum(used_ublk)*(block size of the undo/rollback segment tablespace block size) from v$transcation;
#其實(shí)這里是有經(jīng)驗(yàn)的,最好這個(gè)回滾量不要太大,否則重新啟動(dòng)之后,要回滾很長(zhǎng)時(shí)間的.
SQL> select sum(used_ublk) from v$transaction;
SUM(USED_UBLK)
--------------
1
2.Shutdown abort數(shù)據(jù)庫
#發(fā)起這個(gè)命令之后。將快速終止所有進(jìn)程(客戶端和后臺(tái)進(jìn)程)。不會(huì)產(chǎn)生任何回滾操作。
SQL> shutdown abort
3.Startup Restrict
#做這一步是為了讓數(shù)據(jù)庫回滾,SMON做回滾的時(shí)候,最好不要讓其他Session連進(jìn)來,以免其他Session執(zhí)行同樣的SQL報(bào)錯(cuò)。
SQL> startup restrict
ORACLE instance started.
Total System Global Area 1185853440 bytes
Fixed Size 2252664 bytes
Variable Size 771752072 bytes
Database Buffers 402653184 bytes
Redo Buffers 9195520 bytes
Database mounted.
Database opened.
4.觀察SMON回滾的進(jìn)度[通過下面的查詢查看回滾(塊的個(gè)數(shù))]
SQL> select sum(distinct(ktuxesiz)) from x$ktuxe where ktuxecfl = 'DEAD';
SUM(DISTINCT(KTUXESIZ))
-----------------------
0
5.當(dāng)回滾完成后【(有 可能 啟動(dòng)后立刻就完成了) 步驟4 結(jié)果為0 】發(fā)起shutdown immediate
SQL> shutdown immediate;
6.最后 再Startup
SQL> startup;