Oracle資料庫啟動過程及狀態詳解

zhcunique發表於2021-03-11

      Oracle Server主要由例項(instance)和資料庫(database)組成,例項(instance)由共享記憶體(SGA)和後臺程式系統組成,資料庫(database)是儲存在磁碟上的一系列物理檔案。
      SGA主要由Share Pool(共享池,又分Library Cache和Data Dictionary Cache,前者臨時儲存最近執行過的語句程式碼等,後者臨時儲存資料位置、表定義及使用者許可權等)、Database Buffer Cache(資料緩衝區,臨時儲存讀過的資料塊)、Redo Log Buffer(重做日誌緩衝區,臨時儲存資料庫修改操作)、Large Pool(大池,分擔Share Pool部分工作供共享伺服器程式使用,如備份恢復、大型I/O操作、並行查詢等)和Java Pool(Java池,分析Java語句)。
      後臺程式是資料庫和作業系統進行互動的通道,後臺程式的命名由ORACLE_SID決定,ORACLE根據ORACLE_SID來尋找引數檔案啟動例項。是Oracle資料庫為保持最佳效能和協調多使用者請求而設定的,主要有DBWR(將Database Buffer Cache資料寫入Data Files)、LGWR(將Redo Log Buffer資料寫入Redo Log Files)、CKPT(協調資料檔案、控制檔案和重做日誌,將System Change Number即SCN寫入到控制檔案和資料檔案頭部,促使DBWR、LGWR執行)、SMON(System Monitor,3方面作用:instance recovery例項故障資料恢復、合併空閒碎片空間、回收臨時段)、PMON(使用者例程意外終止時處理事務,如回退事務、釋放鎖及其他資源等)、ARCH(將Redo Log Files寫入Archive Log Files)、CJQ0(job queue coordinator)、RVWR(recover writer,為flashback database提供日誌記錄)等程式。
      資料庫(database)是指儲存在磁碟上的一組物理檔案,如資料檔案(Data files,用於儲存資料)、控制檔案(Control files,儲存資料檔案、重做日誌檔案、歸檔日誌檔案位置及維護資料庫完整性所需資訊)和重做日誌檔案(Redo Log files,儲存修改資料的所有操作記錄以備故障後恢復),這三個是啟動資料庫必須的檔案;另外還有引數檔案(Parameter file,設定記憶體後臺程式的啟動等)、歸檔日誌檔案(Archived Log files,歸檔記錄寫滿的重做日誌檔案的內容)和口令檔案(Password file,驗證使用者名稱密碼),這三個是非必須的檔案。
Oracle啟動分3個過程nomount、mount和open,這三個過程具體執行的工作如下:


  1. nomount狀態:啟動例項。
    Reading the initialization file from $ORACLE_HOME/dbs in the following order:
    從環境變數下dbs目錄按如下順序讀取初始化檔案:
    -first  spfileSID.ora
    首先,讀取spfile+例項名.ora
    -if not found then, spfile.ora
    若未發現檔案則讀取spfile.ora
    -if not found then, initSID.ora
    若未發現檔案則讀取init+例項名.ora
    Specifying the PFILE parameter with STARTUP overrides the default behavior.
    指定pfile引數檔案啟動以替代預設啟動方式
    *  Allocating the SGA
    *  Starting the background processes
    *  Opening the alertSID.log file and the trace files
    The database must be named with the DB_NAME parameter either in the initialization Parameter file or in the STARTUP command.
    資料庫必須用初始引數檔案或啟動命令中的DB_NAME引數命名。

  2. mount狀態:關聯例項與資料庫,讀取控制檔案並獲取資料檔案和重做日誌檔名稱狀態。
    * Associating a database with a previously started instance
    * Locating and opening the control files specified in the parameter file
    * Reading the control files to obtain the names and status of the data files and online redo log files.However,no checks are performed to verify the existence of the data files and online redo log files at this time.

  3. open狀態:
    opening the database includes the following tasks:
    opening the online data log files
    opening the onling redo log files
    If any of the datafiles or noline redo log files are not present when you attempt to open the database ,the oracle server returns an error.
    During this final stage,the oracle server verfies that all the data files and online redo log files can be opened and checks the consistency of the database. If necessary,the SMON background process initiates instance recovery.
    在最後階段,Oracle資料庫驗證資料檔案和重做日誌檔案可否開啟並檢驗資料庫的一致性,若不一致,SMON後臺程式將啟動例項恢復。

shutdown或startup狀態可執行的操作:
shutdown有四個引數:normal、transactional、immediate、abort,不帶引數預設為normal。
shutdown normal:不斷開現在連線使用者,阻止任何使用者建立新的連線,包括管理員在內。已經連線的使用者能夠繼續他們當前的工作,如遞交新的更新事務,直到此使用者自行斷開連線。這樣需要等待的時間長,可以查出現連使用者,再通知其自行斷開。所有的使用者都斷開連線,資料庫才進行關閉操作,即關閉資料庫、解除安裝資料庫、終止例程。在這種情況下關閉的資料庫在重新啟動後,不會出現問題。啟動時不需要例項恢復。
shutdown transactional:阻止任何使用者建立新連線,等待所有當前連線使用者的未遞交的活動事務提交完畢,然後立即斷開使用者的連線。所有的使用者都斷開連線則立即關閉資料庫,進行關閉資料庫、解除安裝資料庫、終止程式等操作。這種方式,使用者有可能正在算賬,做複雜報表!一次資料庫操作做不完的,在剛做了一次資料庫操作後,將被斷開,這樣對使用者有一定影響,啟動時不需要例項恢復。
shutdown immediate:阻止任何使用者新的連線,同時限制當前連線使用者開始新的事務。如果已連線使用者有未完成的事務,則資料庫系統不會等待他們完成,而是直接把當前未遞交的事務回退。資料庫系統不再等待使用者主動斷開連線,當未遞交的事務回退成功後,系統會直接關閉、解除安裝資料庫,並終止資料庫程式,啟動時不需要例項恢復。
shutdown abort:當資料庫出現故障時,可能以上三種方式都無法正常關閉資料庫,則使用這種方法。強制結束當前正在執行的SQL語句,任何未遞交的事務都不被回退!這種方法基本上不會對控制檔案或者引數檔案造成破壞,這比強制關機要好一點(在無法正常關閉資料庫的時候),啟動時自動進行例項恢復。
startup有7個引數:nomount、mount、open、pfile、force、restrict和
startup nomount:透過引數檔案,分配sga,啟動資料庫後臺程式,不開啟控制檔案和資料檔案,不能訪問資料庫。
startup mount:僅給dba進行管理操作,不允許資料庫使用者訪問。僅當前例項的控制檔案被開啟,資料檔案未開啟,在這個模式下可以進行如下操作:重新命名資料檔案、新增取消或重新命名重做日誌檔案、設定歸檔模式、設定閃回、執行完整的資料庫恢復操作等。
startup open:startup的預設引數就是open,開啟資料庫,允許資料庫的訪問,當前例項控制檔案中所描述的所有檔案都已經開啟。
startup pfile=FILENAME:以FILENAME為初始化檔案啟動資料庫,不是採用預設初始化檔案。
startup force:中止當前資料庫的執行,並開始重新正常的啟動資料庫。
startup restrict:只允許具有restricted session許可權的使用者訪問資料庫,該模式下登陸者可做如下操作:執行資料庫資料的匯出或匯入、執行資料裝載操作用SQL*Loader、暫時阻止一般的使用者使用資料、在某個移植過程和升級操作過程中restricted session登陸後可使用ALTER SYSTEM 語句來禁止RESTRICTED SESSION特性ALTER SYSTEM DISABLE RESTRICTED SESSION;如果是在非受限模式下開啟的資料庫,後來發現需要限制訪問,此時可以使用帶ENABLE RESTRICTED SESSION 子句的ALTER SYSTEM 語句來完成。
startup recover:資料庫啟動,並開始介質恢復。

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

相關文章