Oracle相關(guān)記錄(by 陶世磊)2018-03-21 參考網(wǎng)絡(luò)資源整理
簡介
Oracle Server 是由實(shí)例(instance)和數(shù)據(jù)庫(database)組成。實(shí)例(instance)是由共享內(nèi)存(SGA)和后臺進(jìn)程組成质蕉。數(shù)據(jù)庫(dababase)是存儲在磁盤的一系列文件挠轴。
詳述
SGA主要由Share Pool(共享池传睹,又分Library Cache和Data Dictionary Cache,前者臨時存儲最近執(zhí)行過的語句代碼等岸晦,后者臨時存儲數(shù)據(jù)位置欧啤、表定義及用戶權(quán)限等)睛藻、
Database Buffer Cache(數(shù)據(jù)緩沖區(qū),臨時存儲讀過的數(shù)據(jù)塊)邢隧、Redo Log Buffer(重做日志緩沖區(qū)店印,臨時存儲數(shù)據(jù)庫修改操作)、Large Pool(大池倒慧,分擔(dān)Share Pool部
分工作供共享服務(wù)器進(jìn)程使用按摘,如備份恢復(fù)、大型I/O操作纫谅、并行查詢等)和Java Pool(Java池炫贤,分析Java語句)。
后臺進(jìn)程是數(shù)據(jù)庫和操作系統(tǒng)進(jìn)行交互的通道付秕,后臺進(jìn)程的命名由ORACLE_SID決定照激,ORACLE根據(jù)ORACLE_SID來尋找參數(shù)文件啟動實(shí)
例。是Oracle數(shù)據(jù)庫為保持最佳性能和協(xié)調(diào)多用戶請求而設(shè)置的盹牧,主要有DBWR(將Database Buffer Cache數(shù)據(jù)寫入Data Files)俩垃、LGWR(將Redo Log Buffer數(shù)據(jù)寫入Redo Log Files)、
CKPT(協(xié)調(diào)數(shù)據(jù)文件汰寓、控制文件和重做日志口柳,將System Change Number即SCN寫入到控制文件和數(shù)據(jù)文件頭部,促使DBWR有滑、LGWR執(zhí)行)跃闹、SMON(System Monitor,3方面作用:instance recovery實(shí)
例故障數(shù)據(jù)恢復(fù)毛好、合并空閑碎片空間望艺、回收臨時段)、PMON(用戶例程意外終止時處理事務(wù)肌访,如回退事務(wù)找默、釋放鎖及其他資源等)、ARCH(將Redo Log Files寫入Archive Log Files)吼驶、CJQ0(job queue coordinator)惩激、RVWR(recover writer,為flashback database提供日志記錄)等進(jìn)程蟹演。
數(shù)據(jù)庫(database)是指存儲在磁盤上的一組物理文件风钻,如數(shù)據(jù)文件(Data files,用于存儲數(shù)據(jù))酒请、控制文件(Control files骡技,存儲數(shù)據(jù)文件、重做日志文件羞反、歸檔日志文件位置及維護(hù)數(shù)據(jù)庫完整性所需信息)
和重做日志文件(Redo Log files布朦,存儲修改數(shù)據(jù)的所有操作記錄以備故障后恢復(fù))囤萤,這三個是啟動數(shù)據(jù)庫必須的文件;
另外還有參數(shù)文件(Parameter file喝滞,設(shè)置內(nèi)存后臺進(jìn)程的啟動等)阁将、歸檔日志文件(Archived Log files,歸檔記錄寫滿的重做日志文件的內(nèi)容)和口令文件(Password file右遭,驗(yàn)證用戶名密碼)做盅,這三個是非必須的文件店枣。
數(shù)據(jù)庫啟動三種狀態(tài)
數(shù)據(jù)庫啟動的三種方式(三個階段):
- nomount : 需要參數(shù)文件
- mount : 需要控制文件
- open:需要全部的數(shù)據(jù)文件和日志文件馍资,并且保證所有的數(shù)據(jù)文件和日志文件與控制文件里面記錄的位置保持一致倦沧。
一般的啟動順序是:nomount-->mount-->open
啟動詳解
nomount狀態(tài):啟動實(shí)例喳整。
Reading the initialization file from $ORACLE_HOME/dbs in the following order:
從環(huán)境變量下dbs目錄按如下順序讀取初始化文件:
-first spfileSID.ora
首先,讀取spfile+實(shí)例名.ora
-if not found then, spfile.ora
若未發(fā)現(xiàn)文件則讀取spfile.ora
-if not found then, initSID.ora
若未發(fā)現(xiàn)文件則讀取init+實(shí)例名.ora
Specifying the PFILE parameter with STARTUP overrides the default behavior.
指定pfile參數(shù)文件啟動以替代默認(rèn)啟動方式
- Allocating the SGA
分配SGA
- Starting the background processes
啟動后臺進(jìn)程
- Opening the alertSID.log file and the trace files
啟動預(yù)警日志文件(記錄實(shí)例生命周期內(nèi)事件每篷,如系統(tǒng)內(nèi)部錯誤篇裁、數(shù)據(jù)塊損壞菲饼、系統(tǒng)參數(shù)修改等)和追蹤文件(記錄SQL操作及時間消耗等)
The database must be named with the DB_NAME parameter either in the initialization Parameter file or in the STARTUP command.
數(shù)據(jù)庫必須用初始參數(shù)文件或啟動命令中的DB_NAME參數(shù)命名让腹。
mount狀態(tài):關(guān)聯(lián)實(shí)例與數(shù)據(jù)庫远剩,讀取控制文件并獲取數(shù)據(jù)文件和重做日志文件名稱狀態(tài)。
Mounting a database includes the following tasks:
裝載數(shù)據(jù)庫包括以下任務(wù):
- Associating a database with a previously started instance
將先前啟動的實(shí)例與數(shù)據(jù)庫相關(guān)聯(lián)
- Locating and opening the control files specified in the parameter file
從參數(shù)文件中找到控制文件位置并打開
- Reading the control files to obtain the names and status of the data files and online redo log files.However,no checks are performed to verify the existence of the data files and online redo log files at this time.
從控制文件中讀取數(shù)據(jù)文件及重做日志文件名稱與狀態(tài)骇窍,但是瓜晤,此時并不檢查數(shù)據(jù)文件與重做日志文件的存在性。
open狀態(tài):
opening the database includes the following tasks:
打開數(shù)據(jù)庫包含以下任務(wù):
opening the online data log files
打開數(shù)據(jù)文件
opening the onling redo log files
打開重做日志文件
If any of the datafiles or noline redo log files are not present when you attempt to open the database ,the oracle server returns an error.
若在打開數(shù)據(jù)庫時數(shù)據(jù)文件或重做日志文件任何一個不存在腹纳,則Oracle服務(wù)器返回一個錯誤痢掠。
During this final stage,the oracle server verfies that all the data files and online redo log files can be opened and checks the consistency of the database. If necessary,the SMON background process initiates instance recovery.
在最后階段,Oracle數(shù)據(jù)庫驗(yàn)證數(shù)據(jù)文件和重做日志文件可否打開并檢驗(yàn)數(shù)據(jù)庫的一致性嘲恍,若不一致足画,SMON后臺進(jìn)程將啟動實(shí)例恢復(fù)。
shutdown或startup狀態(tài)可執(zhí)行的操作:
shutdown有四個參數(shù):normal佃牛、transactional淹辞、immediate、abort吁脱,不帶參數(shù)默認(rèn)為normal桑涎。
shutdown normal:不斷開現(xiàn)在連接用戶,阻止任何用戶建立新的連接兼贡,包括管理員在內(nèi)。已經(jīng)連接的用戶能夠繼續(xù)他們當(dāng)前的工作娃胆,如遞交新的更新事務(wù)遍希,直到此用戶自行斷開連接。這樣需要等待的時間長里烦,可以查出現(xiàn)連用戶凿蒜,再通知其自行斷開禁谦。所有的用戶都斷開連接,數(shù)據(jù)庫才進(jìn)行關(guān)閉操作废封,即關(guān)閉數(shù)據(jù)庫州泊、卸載數(shù)據(jù)庫、終止例程漂洋。在這種情況下關(guān)閉的數(shù)據(jù)庫在重新啟動后遥皂,不會出現(xiàn)問題。啟動時不需要實(shí)例恢復(fù)刽漂。
shutdown transactional:阻止任何用戶建立新連接演训,等待所有當(dāng)前連接用戶的未遞交的活動事務(wù)提交完畢,然后立即斷開用戶的連接贝咙。所有的用戶都斷開連接則立即關(guān)閉數(shù)據(jù)庫样悟,進(jìn)行關(guān)閉數(shù)據(jù)庫、卸載數(shù)據(jù)庫庭猩、終止進(jìn)程等操作窟她。這種方式,用戶有可能正在算賬蔼水,做復(fù)雜報(bào)表震糖!一次數(shù)據(jù)庫操作做不完的,在剛做了一次數(shù)據(jù)庫操作后徙缴,將被斷開试伙,這樣對用戶有一定影響,啟動時不需要實(shí)例恢復(fù)于样。
shutdown immediate:阻止任何用戶新的連接疏叨,同時限制當(dāng)前連接用戶開始新的事務(wù)。如果已連接用戶有未完成的事務(wù)穿剖,則數(shù)據(jù)庫系統(tǒng)不會等待他們完成蚤蔓,而是直接把當(dāng)前未遞交的事務(wù)回退。數(shù)據(jù)庫系統(tǒng)不再等待用戶主動斷開連接糊余,當(dāng)未遞交的事務(wù)回退成功后秀又,系統(tǒng)會直接關(guān)閉、卸載數(shù)據(jù)庫贬芥,并終止數(shù)據(jù)庫進(jìn)程吐辙,啟動時不需要實(shí)例恢復(fù)。
shutdown abort:當(dāng)數(shù)據(jù)庫出現(xiàn)故障時蘸劈,可能以上三種方式都無法正常關(guān)閉數(shù)據(jù)庫昏苏,則使用這種方法。強(qiáng)制結(jié)束當(dāng)前正在執(zhí)行的SQL語句,任何未遞交的事務(wù)都不被回退贤惯!這種方法基本上不會對控制文件或者參數(shù)文件造成破壞洼专,這比強(qiáng)制關(guān)機(jī)要好一點(diǎn)(在無法正常關(guān)閉數(shù)據(jù)庫的時候),啟動時自動進(jìn)行實(shí)例恢復(fù)孵构。
startup有7個參數(shù):nomount屁商、mount、open颈墅、pfile蜡镶、force、restrict和
startup nomount:通過參數(shù)文件精盅,分配sga帽哑,啟動數(shù)據(jù)庫后臺進(jìn)程,不打開控制文件和數(shù)據(jù)文件叹俏,不能訪問數(shù)據(jù)庫妻枕。
startup mount:僅給dba進(jìn)行管理操作,不允許數(shù)據(jù)庫用戶訪問粘驰。僅當(dāng)前實(shí)例的控制文件被打開屡谐,數(shù)據(jù)文件未打開,在這個模式下可以進(jìn)行如下操作:重命名數(shù)據(jù)文件蝌数、添加取消或重命名重做日志文件愕掏、設(shè)置歸檔模式、設(shè)置閃回顶伞、執(zhí)行完整的數(shù)據(jù)庫恢復(fù)操作等饵撑。
startup open:startup的默認(rèn)參數(shù)就是open,打開數(shù)據(jù)庫唆貌,允許數(shù)據(jù)庫的訪問滑潘,當(dāng)前實(shí)例控制文件中所描述的所有文件都已經(jīng)打開。
startup pfile=FILENAME:以FILENAME為初始化文件啟動數(shù)據(jù)庫锨咙,不是采用默認(rèn)初始化文件语卤。
startup force:中止當(dāng)前數(shù)據(jù)庫的運(yùn)行,并開始重新正常的啟動數(shù)據(jù)庫酪刀。
startup restrict:只允許具有restricted session權(quán)限的用戶訪問數(shù)據(jù)庫粹舵,該模式下登陸者可做如下操作:執(zhí)行數(shù)據(jù)庫數(shù)據(jù)的導(dǎo)出或?qū)搿?zhí)行數(shù)據(jù)裝載操作用SQL*Loader骂倘、暫時阻止一般的用戶使用數(shù)據(jù)眼滤、在某個移植過程和升級操作過程中restricted session登陸后可使用ALTER SYSTEM 語句來禁止RESTRICTED SESSION特性ALTER SYSTEM DISABLE RESTRICTED SESSION;如果是在非受限模式下打開的數(shù)據(jù)庫历涝,后來發(fā)現(xiàn)需要限制訪問柠偶,此時可以使用帶ENABLE RESTRICTED SESSION 子句的ALTER SYSTEM 語句來完成情妖。
查看相關(guān)信息
下面介紹一下如何查看數(shù)據(jù)庫相關(guān)的配置睬关,狀態(tài)等
- 看當(dāng)前數(shù)據(jù)庫的狀態(tài):select status from V$instance;
- 查看參數(shù)文件的位置:show parameter spfile;
- 查看控制文件的位置:show parameter control;
- 查看數(shù)據(jù)文件的位置:select file_name from dba_data_files;
- 啟動數(shù)據(jù)庫到nomount狀態(tài):SQL>startup nomount;
- 啟動數(shù)據(jù)庫到mount狀態(tài):SQL>startup mount;
- 啟動數(shù)據(jù)庫到opent狀態(tài):SQL>startup;