如何以最快方式乾淨的關閉資料庫? (文件 ID 1577321.1)

mosdoc發表於2016-12-01

適用於:

Oracle Database - Enterprise Edition - 版本 9.0.1.0 到 11.2.0.2 [發行版 9.0.1 到 11.2]
本文件所含資訊適用於所有平臺

目標

如何以最快方式乾淨的關閉資料庫的?

解決方案

SHUTDOWN ABORT 是關閉資料庫的最快方式。  但是,以這種形式關閉資料庫會使資料庫處於不一致的狀態(沒有回滾),在這種情況下的備份在下次啟動時需要恢復 (參見下面的提示1)

*** 注意 *** 在8.1.6以前的資料庫不推薦使用SHUTDOWN ABORT,因為在這麼老的版本上這麼做導致資料庫損壞的機率很大。


1) 透過下面的查詢判定乾淨的關閉資料庫需要多少回滾(以位元組計算)

select sum(used_ublk) * <undo / rollback segment 表空間的block size> from v$transaction;



2) SHUTDOWN ABORT

將不進行事務回滾,快速的中斷所有程式 (客戶端後臺)。 

 

A SHUTDOWN IMMEDIATE時SMON會嘗試中斷所有客戶端程式(SIGKILL),但是很多情況下SMON無法及時完成,這是使用SHUTDOWN ABORT的原因。(參加下面的提示2)

3) 從第一步的輸出以及您的經驗決定您是否能等待乾淨的關閉資料庫的時間(shutdown immediate)  如果您不能等待shutdown immediate完成,忽略餘下的步驟,在下次啟動時,SMON會回滾事務。

4) STARTUP RESTRICT

5) 透過下面的查詢檢視回滾(塊的個數)
   

select sum(distinct(ktuxesiz)) from x$ktuxe where ktuxecfl = 'DEAD';



6) 當回滾完成 (有 可能 啟動後立刻就完成了), 執行 SHUTDOWN IMMEDIATE。

 

當完成此步驟後,資料庫將乾淨的關閉

=============================================================

提示 1:

** Oracle? Database Backup and Recovery User's Guide 11g Release 1 (11.1)

7 RMAN Backup Concepts

Consistent Backups(一致性備份)

您可以使用BACKUP命令進行資料庫一致性和非一致性備份。當資料庫為一致的狀態可以進行一致性備份。當資料庫使用SHUTDOWN NORMAL, SHUTDOWN IMMEDIATE, or SHUTDOWN TRANSACTIONAL命令關閉,資料庫為一致性狀態。一致性關閉保證了所有redo的資訊都被應用到了資料檔案。如果您在此時mount資料庫進行備份,您可以稍後從備份restore資料庫並在開啟它時無需介質恢復。

Inconsistent Backups(非一致性備份)

任何不是一致性的備份都定義為非一致性備份。資料庫不一致時的備份,如在例項失敗或者SHUTDOWN ABORT後的備份。當資料庫從一個非一致性備份restore,Oracle在開啟前必須執行介質恢復,從重做日誌中應用變更。

注意:
RMAN不允許在非歸檔模式下執行非一致性備份。如果您採用非歸檔模式下使用者管理方式的備份,那麼您不可以進行非一致性備份。

只要資料庫在歸檔模式下執行,您可以備份歸檔日誌檔案和資料檔案,非一致性備份是合理的備份恢復策略的基礎。非一致性備份提供了高可用性,因為它無需關閉資料庫來進行備份,也完全保護了資料庫。

=============================================================

提示 2: 

一個存在的SQLPLUS內部bug(沒有被髮布)會阻止SQLPLUS會話被SMON中斷。
    客戶端程式的truss / pdump等會顯示SQLPLUS會話在等待WAITPID 

=============================================================

提示 3:

** Oracle? Database Administrator's Guide 11g Release 1 (11.1)

Shutting Down a Database

Shutdown Timeout and Abort

關閉模式將等待使用者斷開或者事務在限定的時間內完成。如果關閉操作由於有事件阻塞進而不能在一小時內完成,關閉命令將中止並顯示下面的資訊:ORA-01013: user requested cancel of current operation。這個資訊也會在您取消關閉程式時顯示,例如執行CTRL-C。Oracle推薦您不要中斷例項關閉。允許關閉程式完成,再重啟例項。

當ORA-01013發生,您必須考慮到例項是在一個未知的狀態。所要您必須重新執行SHUTDOWN命令來繼續關閉程式。如果隨後的SHUTDOWN命令仍舊失敗,您需要執行SHUTDOWN ABORT使例項關閉。之後您可以重啟例項。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31393455/viewspace-2129446/,如需轉載,請註明出處,否則將追究法律責任。

相關文章