Oracle浅谈第六回
2019獨角獸企業重金招聘Python工程師標準>>>
Oracle的實例是由實例和一組數據庫文件組成的,實例則是Oracle開辟的內存區和一組后臺進程組成的。
體驗過Oracle內存區后,我們來體會一下后臺進程,因為Windows環境中Oracle是多線程形式的,所以我們登錄Linux/Unix環境,UNIX環境下是多進程的,方便查看。
方框標記的部分是剛才熟悉的幾個進程,Oracle還有其他很多相關的進程,可以看出Oracle的實例名叫itemtest,具體可以在數據庫中查看到,如下:
LOCAL=NO的部分,這表示是非Oracle本身的后臺進程,是別的用戶通過監聽,連接該數據庫進行訪問的
LOCAL=NO的這些進程如果被殺了,數據庫不會崩潰,只是某些應用正好連上來操作數據庫,被強制提出數據庫了,而那些LGWR和DBWR進程被殺了,那么數據庫機會立即崩潰,操作一定要小心,這里少了一個進程,即ARCH,這是歸檔進程,當日志循環寫入過程中會出現下一個日志已經被寫過的情況,再繼續寫將會覆蓋其內容,需要將這些即將被覆蓋的內容寫出到磁盤里去形成歸檔日志文件,這樣日志記錄就不會丟失,將來數據庫就可以從這些日志文件和歸檔文件中進行數據庫的恢復處理。不過這個歸檔并非是必要的,因為有的數據庫只是用來測試的,對安全性要求不高,此時就可以考慮把歸檔進程給關閉,數據庫少做一件事,效率就會提升。
查看歸檔進程是否打開:
Database log mode 表示當前數據庫時非歸檔的。
更改數據庫的歸檔模式比較麻煩,需要重啟數據庫,將數據庫置于mount狀態后,輸入alter database archivelog(如果是歸檔改為非歸檔,這里是alter database noarchivelog),然后在開啟數據庫alter database open,才可以將數據庫改為歸檔,具體步驟如下:
現在ARCH進程也可以查詢到了,發現ARCH這個進程是允許多進程的,
數據庫時如何啟動和關閉的,這可以說是數據庫最常見的操作了,下面我們來看一下數據庫啟動的具體步驟,首先看體系結構圖的數據庫部分
參數文件和控制文件和數據庫的啟動與關閉時息息相關的,數據庫的啟動可以分為三個階段,分別是nomount、mount和open,我們在啟動的時候直接輸入startup啟動,也可以分成startup nomount、startup mount和alter database open三步分別啟動,下面一次描述三個步驟:
? ? 1. startup nomount階段:
????? ? Oracle必須讀取到數據庫的參數文件(PFILE或者SPFILE),如果讀不到參數文件,數據庫根本無法啟動成功,如果讀取到參數文件,將會完成一個重要的事,就是根據參數上的內存分配策略分配相應的內存區域,并啟動相應的后臺進程,換而言之,就是創建了instance實例,
????? ? 為了保證數據庫可以動態的修改參數,從Oracle9i 起,Oracle引進了SPFILE參數來替代之前僅有的單一PFILE的一種情況,具體在數據庫開啟后可以執行如下命令來了解,如下就表示是SPFILE啟動的。
一般來說,Oracle9i 后的版本數據庫是這樣一個情況,首先查找spfile文件,查找不到了在查找INIT.ORA文件,在查不到就報錯了,nomount失敗。
? ? 2. startup mount 階段
????? ? 實例已經創建,Oracle繼續根據參數文件上描述的控制文件的名稱和位置,去查找控制文件,一旦找到立即鎖定該控制文件,控制文件里記錄了數據庫中數據文件、日志文件、檢查點信息等非常重要的信息,所以Oracle成功鎖定控制文件就表示數據庫mount成功,為實例和數據庫之前橋梁的搭建打下了基礎。
? ? 3. alter database open 階段
????? ? 根據控制文件記錄的信息,定位到數據庫文件、日志文件等,從而正式開通了實例和數據庫之間的橋梁。
總結起來,nomount階段僅需要一個參數文件就可以啟動成功,mout階段能夠正常讀取到控制文件才能成功,而open階段需要保證所有的數據文件和日志文件等需要和控制文件里記錄的名稱和位置一致,能被鎖定訪問的同時還要保證沒有損壞,否則數據庫的open階段就不可能成功。
文件的體會:
? ? 沒有參數文件,實例無法創建,數據庫無法nomount成功;沒有控制文件,數據庫無法mount;沒有數據文件數據庫無法打開使用(此外,沒有了數據文件,那數據沒有地方保存,數據庫也就失去意義了);沒有日志和歸檔文件數據庫就失去了保護傘,數據庫變得很不安全。因此,所有的這些文件都非常重要。
? ? 下面我們來感受一下Oracle數據庫中的這些參數文件、控制文件、數據文件、日志文件、歸檔文件存在數據庫主機的什么位置,又都是通過什么方法查詢到的:
????
?
?
?
?
?
?
?
?
?
?
?
轉載于:https://my.oschina.net/hcy8888/blog/902053
新人創作打卡挑戰賽發博客就能抽獎!定制產品紅包拿不停!總結
以上是生活随笔為你收集整理的Oracle浅谈第六回的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 20170124L07-03-01老男孩
- 下一篇: 结构性约束事件聚合下的在线多目标跟踪方法