Oracle-解析啟動的全過程
之前對Oracle也沒有什麼瞭解,只是DBA給我們一個使用者,然後我們連上去就OK,總是搞不明白。今天有空來看看Oracle的啟動過程,還是有很多東西值得我們來仔細研究的:
Oracle的啟動過程總共分三步:
1 啟動Oracle的例項;
2 掛載Oracle資料庫;
3 開啟資料庫;
啟動Oracle例項到nomount狀態:
SQL> startup nomount
ORACLE 例程已經啟動。
Total System Global Area 293601280 bytes
Fixed Size 1248600 bytes
Variable Size 109052584 bytes
Database Buffers 176160768 bytes
Redo Buffers 7139328 bytes
SQL>
在這個情況下,Oracle都做了哪些工作呢:只是去尋找一個叫做spfile,或者是pfile的檔案,然後根據這個檔案去建立例項,分配記憶體;那麼你肯定是要問,那我如何才可以知道我載入的那個檔案呢:
SQL> show parameter spfile; NAME TYPE ------------------------------------ ---------------------- VALUE ------------------------------ spfile string D:\ORACLE\PRODUCT\10.2.0\DB_1\ DATABASE\SPFILEGJSID.ORA SQL> 看到了吧,Oracle載入的就是在這個目錄下的SPFILE.ora。那pfile和spfile之間有什麼區別呢:pfile其實和spfile是一樣的內容,只不過spfile在檔案頭的時候,有些我也不太明白的東西。
可以用以下的命令來實現pfile和spfile的轉換:
SQL> create pfile from spfile; 檔案已建立。 SQL>
接下來呢,就到了掛載Oracle資料庫的時候:
SQL> alter database mount; 資料庫已更改。 那這個過程中,Oracle做了哪些工作,其實是根據剛剛spfile裡面的內容來尋找一個叫做控制檔案的東東control file,你能搞明白麼,在Oracle中,共有三個一模一樣的控制檔案,就是為了防止有控制檔案損壞。
這個時候你可以通過以下的命令來檢視載入的控制檔案:
SQL> select * from v$controlfile; STATUS NAME IS_ BLOCK_SIZE FILE_SIZE_BLKS ------- ---------------------------------------- --- ---------- -------------- D:\ORACLE\DATA\GJSID\CONTROL01.CTL NO 16384 430 D:\ORACLE\DATA\GJSID\CONTROL02.CTL NO 16384 430 D:\ORACLE\DATA\GJSID\CONTROL03.CTL NO 16384 430 SQL> show parameter control_file; NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ control_file_record_keep_time integer 7 control_files string D:\ORACLE\DATA\GJSID\CONTROL01 .CTL, D:\ORACLE\DATA\GJSID\CON TROL02.CTL, D:\ORACLE\DATA\GJS ID\CONTROL03.CTL SQL> 看到了吧,這個時候,控制檔案就載入到系統檢視裡了,在沒有mount之前,v$controlfile裡是沒有內容的。
開啟資料庫,
SQL> alter database open;
這個時候,Oracle會去資料檔案頭和控制檔案頭裡去檢查資料庫版本的一致性,和資料的連續性,檢查SCN - system changing number。
至此,Oracle就算是啟動完成了。如果其中有報錯的話,可以去檢視在alter_.log. 在其中有比較完整的資訊。
全當自己學習Oracle的筆記吧。
Oracle的啟動過程總共分三步:
1 啟動Oracle的例項;
2 掛載Oracle資料庫;
3 開啟資料庫;
啟動Oracle例項到nomount狀態:
SQL> startup nomount
ORACLE 例程已經啟動。
Total System Global Area 293601280 bytes
Fixed Size 1248600 bytes
Variable Size 109052584 bytes
Database Buffers 176160768 bytes
Redo Buffers 7139328 bytes
SQL>
在這個情況下,Oracle都做了哪些工作呢:只是去尋找一個叫做spfile,或者是pfile的檔案,然後根據這個檔案去建立例項,分配記憶體;那麼你肯定是要問,那我如何才可以知道我載入的那個檔案呢:
SQL> show parameter spfile; NAME TYPE ------------------------------------ ---------------------- VALUE ------------------------------ spfile string D:\ORACLE\PRODUCT\10.2.0\DB_1\ DATABASE\SPFILEGJSID.ORA SQL> 看到了吧,Oracle載入的就是在這個目錄下的SPFILE.ora。那pfile和spfile之間有什麼區別呢:pfile其實和spfile是一樣的內容,只不過spfile在檔案頭的時候,有些我也不太明白的東西。
可以用以下的命令來實現pfile和spfile的轉換:
SQL> create pfile from spfile; 檔案已建立。 SQL>
接下來呢,就到了掛載Oracle資料庫的時候:
SQL> alter database mount; 資料庫已更改。 那這個過程中,Oracle做了哪些工作,其實是根據剛剛spfile裡面的內容來尋找一個叫做控制檔案的東東control file,你能搞明白麼,在Oracle中,共有三個一模一樣的控制檔案,就是為了防止有控制檔案損壞。
這個時候你可以通過以下的命令來檢視載入的控制檔案:
SQL> select * from v$controlfile; STATUS NAME IS_ BLOCK_SIZE FILE_SIZE_BLKS ------- ---------------------------------------- --- ---------- -------------- D:\ORACLE\DATA\GJSID\CONTROL01.CTL NO 16384 430 D:\ORACLE\DATA\GJSID\CONTROL02.CTL NO 16384 430 D:\ORACLE\DATA\GJSID\CONTROL03.CTL NO 16384 430 SQL> show parameter control_file; NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ control_file_record_keep_time integer 7 control_files string D:\ORACLE\DATA\GJSID\CONTROL01 .CTL, D:\ORACLE\DATA\GJSID\CON TROL02.CTL, D:\ORACLE\DATA\GJS ID\CONTROL03.CTL SQL> 看到了吧,這個時候,控制檔案就載入到系統檢視裡了,在沒有mount之前,v$controlfile裡是沒有內容的。
開啟資料庫,
SQL> alter database open;
這個時候,Oracle會去資料檔案頭和控制檔案頭裡去檢查資料庫版本的一致性,和資料的連續性,檢查SCN - system changing number。
至此,Oracle就算是啟動完成了。如果其中有報錯的話,可以去檢視在alter_.log. 在其中有比較完整的資訊。
全當自己學習Oracle的筆記吧。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/25850100/viewspace-714824/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 安卓平臺Flutter啟動過程全解析安卓Flutter
- Android啟動過程深入解析Android
- 以太坊啟動過程原始碼解析原始碼
- Tomcat啟動過程(二):EndPoint解析Tomcat
- 理解 Android 程式啟動之全過程Android
- MapReduce 執行全過程解析
- DNS解析全過程及原理DNS
- 【Android】【init】解析init程式啟動過程Android
- Java虛擬機器啟動過程解析Java虛擬機
- SpringMVC原始碼解析(1)-啟動過程SpringMVC原始碼
- Spring IoC Context啟動過程解析SpringContext
- Android系統啟動流程(三)解析SyetemServer程式啟動過程AndroidServer
- Angular的啟動過程Angular
- main的啟動過程AI
- Nginx的啟動過程Nginx
- Oracle的啟動過程Oracle
- 剖析Linux系統啟動的後臺全過程 (zt)Linux
- Netty原始碼解析 -- 服務端啟動過程Netty原始碼服務端
- 從原始碼角度解析 Springboot 2.6.2 的啟動過程原始碼Spring Boot
- Windows 啟動過程Windows
- app的啟動過程(三)APP
- App 啟動過程(含 Activity 啟動過程) | 安卓 offer 收割基APP安卓
- 根Activity元件的啟動過程元件
- Android Service的啟動過程Android
- Android Activity的啟動過程Android
- Oracle啟動的三個過程Oracle
- iOS App 的完整啟動過程iOSAPP
- oracle的內部啟動過程Oracle
- Linux的啟動過程(轉)Linux
- Service啟動過程分析
- Activity啟動過程分析
- linux啟動過程Linux
- 【LINUX】啟動過程Linux
- iOS App啟動過程iOSAPP
- Windows啟動過程(MBR引導過程分析)Windows
- Oracle->Mysql dblink 建立詳細過程OracleMySql
- 一次資料庫硬解析的分析全過程資料庫
- Linux 核心處理中斷全過程解析Linux