Oracle 原理: 11g的启动和关闭
1.Oracle 11g啟動中,讀取參數(shù)文件的順序。
9i之前,只有靜態(tài)參數(shù)文件pfile,9i開始有了動態(tài)參數(shù)文件spfile,優(yōu)先使用動態(tài)參數(shù)文件。查找參數(shù)文件路徑可以在sql_plus查看:?show param pfile;
11g啟動數(shù)據(jù)庫,Oracle先查找spfileSID.ora再找spfile.ora之后找initSID.ora、最后找init.ora。其中的SID是服務(wù)名,也叫Oracle系統(tǒng)標(biāo)識符。如果這四個(gè)文件都不存在則數(shù)據(jù)庫無法正常啟動。
?
2.Oracle 11g中的四種狀態(tài)。
? ?Oracle由數(shù)據(jù)庫和實(shí)例組成。Oracle有四種狀態(tài):ShutDown 狀態(tài),數(shù)據(jù)庫關(guān)閉狀態(tài);NoMount狀態(tài),實(shí)例啟動狀態(tài),先讀參數(shù)文件,分配了物理內(nèi)存,啟動了后臺進(jìn)程后狀態(tài);Mount狀態(tài),數(shù)據(jù)庫裝載完成,此狀態(tài)在nomount狀態(tài)之后還打開了控制文件,但用戶表無法讀取;Open 狀態(tài),數(shù)據(jù)庫被打開,可以讀用戶表了。
? shutdown immediate可以把數(shù)據(jù)庫關(guān)閉,變成shutdown狀態(tài),關(guān)閉狀態(tài)時(shí)可以執(zhí)行 startup nomount 來啟動實(shí)例;可以從上圖看出,關(guān)閉數(shù)據(jù)庫的順序開啟數(shù)據(jù)庫的順序剛好相反,先關(guān)閉數(shù)據(jù)庫 再卸載數(shù)據(jù)庫 再關(guān)閉實(shí)例。
?啟動實(shí)例時(shí),會分配好物理內(nèi)存和后臺進(jìn)程,由上圖可以看出,SGA在此時(shí)已經(jīng)分配完畢了,SGA包含了共享池,數(shù)據(jù)緩沖區(qū)、日志緩沖區(qū)等。而上面的例程指的就是實(shí)例,實(shí)例包含了SGA和后臺進(jìn)程。此時(shí)實(shí)例已經(jīng)啟動,可以查詢v$bgprocess,和v$instance 表。可以執(zhí)行 alter database mount;來裝載數(shù)據(jù)庫。
裝載數(shù)據(jù)庫完后,變成mount狀態(tài)。這個(gè)過程主要裝載的是控制文件,控制文件的內(nèi)容主要就是數(shù)據(jù)庫的物理結(jié)構(gòu)。可以查看v$controlfile來查看控制文件信息了還可以查看v$database、v$tablespace、v$datafile;但是,此狀態(tài)并沒有裝載數(shù)據(jù)文件,也就是查詢用戶表還無法做到。alter database open 打開數(shù)據(jù)庫。打開數(shù)據(jù)庫后就可以訪問用戶表了。
數(shù)據(jù)庫啟動命令:
startup [nomount|mount|open|force] [restrict] [pfile=filename];? 只寫一個(gè)startup就是直接開啟數(shù)據(jù)庫。
force 是強(qiáng)制的意思,startup force 不管數(shù)據(jù)庫在什么狀態(tài),都會強(qiáng)制重啟數(shù)據(jù)庫到OPEN狀態(tài)。?startup restrict 把數(shù)據(jù)庫變成open狀態(tài),但是只有RESTRICTED SESSION 的權(quán)限用戶才有資格登錄。
?pfile 是靜態(tài)參數(shù)文件: create pfile=‘[地址]’ from spfile;
可以到指定的路徑打開自己的pfile。前綴orcl的參數(shù)只對orcl實(shí)例起作用,前綴為*的參數(shù)對所有實(shí)例起作用。在這里面,可以看見JAVA池大小,SGA大小,數(shù)據(jù)塊大小為8192,數(shù)據(jù)庫恢復(fù)文件的位置,控制文件位置等參數(shù)信息。
數(shù)據(jù)庫關(guān)閉的方式有四種: shutdown Normal | TRANSACTIONAL | IMMEDIATE | ABORT ;
其中,normal 方式: 不允許新用戶進(jìn)行連接,等待已連接的所有用戶自行斷開連接后,再關(guān)閉數(shù)據(jù)庫。
transactional 方式: 不允許新用戶進(jìn)行連接,等待已連接的用戶做完自己的所有事務(wù)后,再關(guān)閉數(shù)據(jù)庫
Immediate 方式:不允許新用戶進(jìn)行連接,Oracle回滾正在連接的用戶的事務(wù),全回滾完后關(guān)閉數(shù)據(jù)庫
obort 方式: 直接收回內(nèi)存和后臺進(jìn)程。和直接關(guān)機(jī)一樣,此做法壞處多,不得已時(shí)不要用這個(gè),可能會造成內(nèi)存損壞。下次重啟時(shí)會Oracle會進(jìn)行比較漫長的數(shù)據(jù)庫恢復(fù)。這個(gè)方式屬于數(shù)據(jù)不正常關(guān)閉。
?
?
總結(jié)
以上是生活随笔為你收集整理的Oracle 原理: 11g的启动和关闭的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Oracle原理:11g的体系结构
- 下一篇: Oracle 原理:高水位线、PCTFR