共計 2249 個字符,預(yù)計需要花費 6 分鐘才能閱讀完成。
行業(yè)資訊
數(shù)據(jù)庫
exclusive、startup nomount 和 mountopen 的區(qū)別是什么
今天就跟大家聊聊有關(guān) exclusive、startup nomount 和 mountopen 的區(qū)別是什么,可能很多人都不太了解,為了讓大家更加了解,丸趣 TV 小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。
看 oracle 入門書,其中一句話說,使用 startup nomount 命令啟動例程,不可以和 mount open 和 exclusive 一起使用,這個命令適用于建立數(shù)據(jù)庫或是維護數(shù)據(jù)庫時使用。
于是查了一下,為什么不能同時使用,以及他們之間的區(qū)別。
以下為轉(zhuǎn)載:
nomount:讀初始化參數(shù)文件,啟動實例。
mount: 打開控制文件
open: 打開數(shù)據(jù)文件,日志文件
簡單來說,nomount 是用來創(chuàng)建數(shù)據(jù)庫的狀態(tài),在此情況下可以執(zhí)行 create database….
mount 是用來維護數(shù)據(jù)庫的,比如數(shù)據(jù)庫出現(xiàn)了問題,數(shù)據(jù)文件被誤刪除,就無法 open,這時可在 mount 狀態(tài)下將數(shù)據(jù)文件從數(shù)據(jù)庫中去除。
open 是數(shù)據(jù)庫可以對全體用戶提供服務(wù)了。
詳細介紹:
1、startup nomount
非安裝啟動,這種方式啟動下可執(zhí)行: 重建控制文件、重建數(shù)據(jù)庫
讀取 init.ora 文件,啟動 instance,即啟動 SGA 和后臺進程,這種啟動只需要 init.ora 文件。
2、startup mount dbname
安裝啟動,這種方式啟動下可執(zhí)行:
數(shù)據(jù)庫日志歸檔、
數(shù)據(jù)庫介質(zhì)恢復(fù)、
使數(shù)據(jù)文件聯(lián)機或脫機,
重新定位數(shù)據(jù)文件、重做日志文件。
執(zhí)行“nomount”,然后打開控制文件,確認數(shù)據(jù)文件和聯(lián)機日志文件的位置,
但此時不對數(shù)據(jù)文件和日志文件進行校驗檢查。
3、startup open dbname
先執(zhí)行“nomount”,然后執(zhí)行“mount”,再打開包括 Redo log 文件在內(nèi)的所有數(shù)據(jù)庫文件,
這種方式下可訪問數(shù)據(jù)庫中的數(shù)據(jù)。
4、startup,等于以下三個命令
startup nomount
alter database mount
alter database open
數(shù)據(jù)庫啟動的三個臺階 nomount,mount,open 目的是明白細化啟動數(shù)據(jù)庫的三個步驟
啟動數(shù)據(jù)庫到 nomount 狀態(tài)的條件如下。如果你是非 windows OS 就沒有注冊表,而有環(huán)境變量服務(wù)中的 OracleService 必須啟動
服務(wù)的名稱和注冊表中的 oracle_sid 相匹配
存在正確的密碼文件和參數(shù)文件
有足夠的內(nèi)存
參數(shù)文件中描述的路徑必須存在
數(shù)據(jù)庫產(chǎn)品安裝正確
conn sys/oracle as sysdba
shtudown abort;
startup nomount;
select instance_name,status from v$instance;
啟動數(shù)據(jù)庫到第一個臺階 nomount 狀態(tài)做了如下的工作
1. 讀參數(shù)文件
2. 分配內(nèi)存
3. 啟動后臺進程
4. 初始化部分 v$ 視圖
將數(shù)據(jù)庫帶到 mount 狀態(tài)
select value from v$spparameter where name= control_files
alter database mount;
mount 數(shù)據(jù)庫的過程是讀參數(shù)文件中描述的控制文件,校驗控制文件的正確性,將控制文件的內(nèi)容讀入到內(nèi)存中,mounu 是掛接的意思,是操作系統(tǒng)中的概念。一旦 mount 之后,就是將一個沒有意義的實例和一個數(shù)據(jù)庫發(fā)生了聯(lián)系。因為實例是空殼。沒有任何數(shù)據(jù)庫和該實例發(fā)生關(guān)系,我們可以理解為實例是水泵,放到哪個水塘里就會抽取哪里的數(shù)據(jù),實例是通用的。mount 的意思是將一個通用的水泵放入到一個指定的水塘。mount 是讀控制文件,控制文件中有數(shù)據(jù)文件和日志文件的信息。
select instance_name,status from v$instance;
打開數(shù)據(jù)庫
alter database open;
讀控制文件中描述的數(shù)據(jù)文件
驗證文件的一致性,如果不一致,使用日志文件將數(shù)據(jù)庫文件恢復(fù)到一致的狀態(tài)。
數(shù)據(jù)庫 open 后,普通用戶才可以訪問數(shù)據(jù)庫
用戶的表才為可見
只讀方式 open 數(shù)據(jù)庫
startup mount;
alter database open read only;
select open_mode from v$database;
默認的 open 方式為 read write
想改 read only 為 read write 必須重新啟動數(shù)據(jù)庫
我們現(xiàn)在回想一下數(shù)據(jù)庫啟動的三個臺階,我們先讀的是參數(shù)文件,參數(shù)文件可以由我們來編寫。讀完參數(shù)文件后又讀了控制文件,控制文件中描述了數(shù)據(jù)文件和日志文件的信息,如果控制文件丟失了我們可以重新建立,最后是讀數(shù)據(jù)文件。數(shù)據(jù)文件里才存放了我們的數(shù)據(jù)。數(shù)據(jù)庫將啟動分為三個臺階,目的是我們可以準確的知道哪里有問題,迅速排除。有點象老拖木釬,大頭的在后面。由最開始的一個 1K 的參數(shù)文件,最后到幾個 T 的大型數(shù)據(jù)庫。當我們只打 startup 而不加任何參數(shù)的時候,默認是到 open,等于 startup open;
我們從屏幕顯示的結(jié)果可以清楚的看出,有三個臺階。
還有一個命令是 startup force 強制啟動數(shù)據(jù)庫,等于強制停止數(shù)據(jù)庫再啟動數(shù)據(jù)庫。
看完上述內(nèi)容,你們對 exclusive、startup nomount 和 mountopen 的區(qū)別是什么有進一步的了解嗎?如果還想了解更多知識或者相關(guān)內(nèi)容,請關(guān)注丸趣 TV 行業(yè)資訊頻道,感謝大家的支持。