一文看懂 Oracle 資料庫啟動過程

2021-10-22 21:52:55 字數 3006 閱讀 8778

oracle啟動過程涉及幾種模式,這些模式涉及不同的檔案,每個狀態下資料庫做不同的事情,同時這些模式適用於不同的維護需求,主要的模式有三種:nomount、mount、open。

這種模式只會建立例項(建立oracle例項的各種記憶體結構與服務程序,其中有5個程序必須啟動, dbwr、lgwr、smon、pmon、ckpt),並不載入資料庫,也不會開啟任何資料檔案。

在nomount模式下,只能訪問那些與sga區相關的資料字典檢視,包括vpar

amet

er、v

parameter、v

parame

ter、

vsga、vpro

cess

和v

process 和 v

proces

s和vsession等,這些檢視中的資訊都是從sga區中獲取的,與資料庫無關。非安裝啟動,這種方式啟動下可執行:重建控制檔案、重建資料庫、讀取init.ora檔案,啟動instance,即啟動sga和後台程序,這種啟動只需要init.ora檔案。

模式用途:

(1)建立新資料庫;

(2)重建控制檔案。

這種模式將啟動例項,載入資料庫並保持資料庫關閉狀態。資料庫啟動到mount狀態有兩種方式,一是可以直接啟動資料庫到mount,二是如果資料庫已經啟動到nomount狀態,使用alter database mount把資料庫切換到mount狀態;

在mount模式下,只能訪問那些與控制檔案相關的資料字典檢視,包括vthr

ead、

vthread、v

thread

、vcontrolfile、vdat

abas

e、

vdatabase、v

databa

se、v

datafile 和 v$logfile等,這些檢視都是從控制檔案中獲取的。

模式用途:

(1)重新命名資料檔案;

(2)新增、刪除或重新命名重做日誌檔案;

(3)執行資料庫完全恢復操作;

(4)改變資料庫的歸檔模式。

此時我們可以檢視資料字典,因為控制檔案已經開啟,但是不能訪問資料庫的資料檔案(表,檢視),因為資料檔案沒有開啟。

這種模式將啟動例項,載入並開啟資料庫,這是常規的啟動模式,使用者想要對資料庫進行多種操作就必須使用open模式啟動資料庫,啟動到open狀態,有兩種方式,一是直接啟動到open狀態(使用startup或者startup open),二是如果資料庫處於nomount或者mount狀態,可以通過alter database open切換到open狀態。

模式用途:平時不對資料庫做什麼維護,像只做應用開發,用這個模式就好了。

這種模式將終止例項並重啟資料庫,這是一種強制性啟動模式,只有在啟動或者關閉出現問題時才使用,並且有一定的風險,會丟失資料,造成意外的問題。

用途:在某些情況下,使用前面的各種模式都無法成功啟動資料庫時,可以嘗試強制啟動模式。

使用alter database語句,還可以在各啟動模式間切換。並且,還可以對資料庫設定不同的狀態用於不同的操作,如受/非受限抽狀態、唯讀。

使用alter database語句,在各啟動模式間切換。

-- 從nomount模式切換到mount模式(沒有從mount切換到nomount的):

alter database mount;

--資料庫狀態為關閉時,切換到open模式

alter database open;

--在open模式下,還可以選擇將資料庫設定為非受限狀態和受限狀態。在啟動open模式時,新增restrict關鍵字:startup restrict

設定或取消受限狀態:

alter system enable\disable restricted session;

--唯讀狀態

設定唯讀命令:alter database open

read only;

取消唯讀命令:alter database open

read

write

;

與啟動資料庫順序相反,關閉資料庫也分三個步驟:關閉資料庫(close 關閉資料檔案),解除安裝資料庫(關閉控制檔案 dismount),關閉oracle例項(shutdown)。

shutdown nomal
正常的關閉方式,如果對於關閉資料庫的時間沒有限制,通常採用這種方式,以normal方式關閉資料庫,oracle將執行如下操作:

阻止任何使用者建立新的連線;

等待當前所有正在連線的使用者主動斷開連線;

當前所有使用者的都斷開連線後,將立即關閉資料庫;

shutdown transactional
事務關閉方式,它的首要任務是保證當前所有活動的事務都可以被提交,並在盡可能短的時間內關閉資料庫。以事務方式關閉,oracle將執行如下操作:

阻止使用者建立新連線和開始新事務;

等待所有活動事務提交後,再斷開使用者連線;

當所有活動事務提交完畢,使用者斷開連線後,關閉資料庫;

shutdown immediate
立即關閉方式,可以較快且安全的關閉資料庫,是dba經常採用的關閉資料庫的方式,立即關閉方式,oracle執行如下操作:

阻止使用者建立新的連線和開始新的事務;

中斷當前事務,回滾未提交事務;

強制斷開所有使用者連線和執行檢查點把髒資料寫到資料檔案中;

關閉資料庫

shutdown abort
這是比較粗暴的一種關閉方式,當前面3種方式都無法關閉時,可以嘗試使用終止方式來關閉資料庫。但是以這種方式關閉資料庫將會丟失一部份資料資訊,當重新啟動例項並開啟資料庫時,後台程序smon會執行例項恢復操作。一般情況下,應當盡量避免使用這種方式來關閉資料庫。執行過程如下:

阻止任何使用者建立新的連線,同時阻止當前連線的使用者開始任何新的事務;

立即終止當前正在執行的sql語句;

任何未提交的事務均不被回退;

直接斷開所有使用者的連線,關閉、解除安裝資料庫,並終止例項。

一文帶你看懂資料庫的CRUD

ddl 運算元據庫 表 1.運算元據庫 crud c create 建立 建立資料庫 create database 資料庫名稱 建立資料庫,判斷不存在,再建立 create database if not exists 資料庫名稱 建立資料庫,並指定字符集 create database 資料庫名...

小白學資料 一文看懂NoSQL資料庫

如果你關注大資料科技動向,可能聽說過乙個叫nosql資料庫的名詞,這可能讓人有些雲裡霧裡。其實我們處在乙個激動人心的技術更迭時代,以甲骨文為代表的sql資料庫已經稱霸了企業市場30年,而近年來的nosql則是強有力的更新換代的競爭者。這篇文章就通過問答的方式來給小白解釋nosql資料庫系統是什麼,無...

一文看懂kylin

kylin到底解決了什麼關鍵問題 要徹底的解決掉資料查詢時間隨著資料量的增長而成線性增長的規律 kylin適合哪類資料的處理 通常查詢資料,一般是統計結果,如果是統計結果,必然會按照維度來進行聚合,kylin的工作原理是多維立方體分析,適合需要從多個維度來觀察資料的查詢。維度,看資料的角度,比如地區...