【ASK_ORACLE】你知道怎麼又快同時又幹淨地關閉Oracle資料庫嗎?
實驗環境
搭建平臺:VMware Workstation
OS:RHEL 6.10
Grid&DB:Oracle 11.2.0.4
問題描述
1. 說到最快的關閉Oracle資料庫的方法,相信大家肯定會想到“shutdown abort”,但是,以這種形式關閉資料庫會使資料庫處於不一致的狀態(沒有回滾),在這種情況下的備份在下次啟動時需要恢復,所以達不到又快又幹淨的關閉方法的要求,所以pass。
2. 說到最乾淨的並且無需等待使用者程式退出的關閉Oracle資料庫的方法,相信大家肯定會想到“shutdown immediate”,但是這種方法並不是最快的,所以也pass。
那怎麼做到最快最乾淨的關閉呢?我們不妨換個思路,綜合一下這兩種方法?有人可能說這不是搞笑嗎,被我們騙進來了!其實不是,請大家繼續往下看。
解決辦法
1)透過下面的SQL查詢判定乾淨的關閉資料庫需要多少回滾(以位元組計算)
select sum(used_ublk) * <block size of the undo / rollback segment tablespace> from v$transaction;
2)執行“shutdown abort”
這個方法將在資料庫關閉時不進行事務回滾,可以最快的中斷所有程式,比如客戶端和後臺,這種關閉方式可以理解為“伺服器突然斷電”。
執行shutdown immediate時,SMON程式會嘗試中斷所有客戶端程式(SIGKILL),但是很多情況下SMON無法及時完成( 因為有些版本的bug也會導致 shutdown immediate命令無法停庫,比如Oracle 11.1.0.7的dmon程式),所以要等待很久才能關閉,這是使用 shutdown abort的原因。
注:
可透過第一步的輸出並結合你對需要停止的庫的經驗來判斷並決定乾淨的關閉資料庫的大致時間(shutdown immediate), 如果你不能等待shutdown immediate完成(不想幹淨關閉),剩下的步驟就可以不做,因為在下次啟動時,SMON會回滾事務(可能會很慢)。
生產庫非常不建議不乾淨的關閉!
3)執行“startup restrict”
4)透過下面的SQL檢視回滾(塊的個數)
select sum(distinct(ktuxesiz)) from x$ktuxe where ktuxecfl = 'DEAD';
5)當回滾完成 (有可能啟動後立刻就完成了),再執行" shutdown immediate"可乾淨關閉資料庫
知識延伸
1. 什麼是一致性備份和非一致性備份?
使用RMAN的backup命令可以 進行資料庫一致性和非一致性備份。
1)一致性備份(
Consistent Backups)
當資料庫為一致的狀態可以進行一致性備份。我們知道,當資料庫使用“shutdown
immediate”、“
shutdown
normal”或者 “
shutdown transactional”命令關閉時,資料庫為一致性狀態。一致性關閉保證了所有redo的資訊都被應用到了資料檔案。如果在此時資料庫在mount狀態進行備份,可以直接從restore資料庫並在開啟open資料庫時不需要再進行介質恢復。
2)非一致性備份(
Inconsistent Backups)
任何不是一致性的備份都叫做非一致性備份。資料庫不一致時的備份,比如在資料庫正在執行,或者例項失敗,或者“shutdown abort”後的備份。當資料庫從一個非一致性備份restore資料庫,Oracle在開啟前必須執行介質恢復,從重做日誌中應用變更。
注:
1. RMAN不允許在非歸檔模式下執行非一致性備份。
2. 只要資料庫在歸檔模式下執行,就可以備份任何歸檔日誌檔案和資料檔案,
非一致性備份是備份恢復策略的基礎。非一致性備份提供了高可用性,因為它無需關閉資料庫來進行備份,也完全保護了資料庫。
2. shutdown超時怎麼辦?
關閉資料庫將等待使用者斷開或者事務在限定的時間內完成。如果關閉操作由於有事件阻塞進而不能在一小時內完成,關閉命令將中止並顯示下面的資訊:ORA-01013: user requested cancel of current operation(這個資訊也會在取消關閉程式時顯示,比如執行CTRL-C),因為當ORA-01013發生,此時的例項是處在一個什麼樣的狀態,我們不得而知。所以,必須重新執行SHUTDOWN命令來繼續關閉程式。如果隨後的shutdown命令仍舊失敗,就需要執行“shutdown abort”使例項強行關閉,在這之後就可以重啟例項了。
最後, 強烈 建議在資料庫正常關閉的過程中,一定不要中斷例項的關閉!需要等關閉程式完成了,再重啟例項。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69992972/viewspace-2790117/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Redis真的又小又快又持久嗎Redis
- 當關閉了eclipse的toolbar 又關閉了menu...怎麼辦!Eclipse
- Android進階;App開發怎樣又快又穩又清晰AndroidAPP
- 【ASK_ORACLE】關於Oracle索引分裂你需要知道的Oracle索引
- 分散式資料庫怎樣才能叫好又賣座分散式資料庫
- 怎麼擺脫又臭又長的 Git 命令?Git
- 如何讓你的大檔案上傳變得又穩又快?
- 大資料是怎麼知道你去過新發地的?大資料
- 安全關閉Oracle資料庫Oracle資料庫
- 奧威BI系統:做資料視覺化大屏,又快又簡單視覺化
- 這些著名資料庫之間的“關係”,你知道嗎?資料庫
- 打造又快又準的廣告分析系統
- 天天在用Redis,持久化方案你又知道哪些?Redis持久化
- 糟了,資料庫崩了,又好像沒蹦資料庫
- 你知道資料庫索引的工作原理嗎?資料庫索引
- 如何以最快方式乾淨的關閉資料庫?資料庫
- 智慧數字經營3.0怎麼做才又穩又好?
- 雲開發資料庫又增新技能!資料庫
- SQLite資料庫怎麼這麼快?SQLite資料庫
- Win10系統下自動更新關閉後又自動開啟怎麼解決Win10
- oracle資料庫的關閉過程Oracle資料庫
- oracle關閉資料庫時沒反應的處理案例Oracle資料庫
- 系統關閉時候,oracle資料庫執行動作Oracle資料庫
- 【實戰教程】只需三步,用雲函式又快又安全地實現小程式支付函式
- 這個公司的程式設計師人均月薪7萬+!騰訊又又又又又又又又漲薪了程式設計師
- 資料探勘概述(又) (轉)
- 停車場地圖怎樣好看,停車場怎麼畫簡單又漂亮地圖
- 我怎麼又掛了?——面試中那些低階又致命的失誤面試
- 資料庫關閉資料庫
- 大佬都在用的自媒體文章一鍵釋出工具,又快又節省時間
- 重工業機臺資料彙集,如何保證資料準確的同時,又保持高效率?
- 關閉ORACLE資料庫步驟參考Oracle資料庫
- Oracle資料庫的啟動與關閉Oracle資料庫
- Oracle資料庫的啟動和關閉Oracle資料庫
- 為什麼開發者對PHP又愛又恨PHP
- 關於時序資料庫,你必須要知道的那些事兒!資料庫
- win10有哪些佔記憶體又沒必要的服務 win10佔記憶體又沒必要的服務怎麼關閉Win10記憶體
- 面試官:你知道怎麼求素數嗎?面試