oracle學(xué)習(xí)心得
oracle學(xué)習(xí)心得1
一個(gè)好的程序,必然聯(lián)系著一個(gè)龐大的數(shù)據(jù)庫(kù)網(wǎng)路...
今年我們學(xué)習(xí)了 oracle數(shù)據(jù)庫(kù)這門(mén)課程,起初的我,對(duì)這個(gè)字眼是要多陌生有多陌生,后來(lái)上課的時(shí)候聽(tīng)一會(huì)老師講課,偶爾再跟上上機(jī)課,漸漸的學(xué)會(huì)了不少東西,但我感覺(jué),我學(xué)到的仍是一些皮毛而已,懷著疑惑和求知的心態(tài),我在網(wǎng)上搜索了關(guān)于 oracle數(shù)據(jù)庫(kù)的一些知識(shí)。
1.ORACLE的特點(diǎn):
可移植性 ORACLE采用C語(yǔ)言開(kāi)發(fā)而成,故產(chǎn)品與硬件和操作系統(tǒng)具有很強(qiáng)的獨(dú)立性。從大型機(jī)到微機(jī)上都可運(yùn)行ORACLE的產(chǎn)品?稍赨NIX、DOS、Windows等操作系統(tǒng)上運(yùn)行?杉嫒菪 由于采用了國(guó)際標(biāo)準(zhǔn)的數(shù)據(jù)查詢(xún)語(yǔ)言SQL,與IBM的SQL/DS、DB2等均兼容。并提供讀取其它數(shù)據(jù)庫(kù)文件的間接方法。
可聯(lián)結(jié)性 對(duì)于不同通信協(xié)議,不同機(jī)型及不同操作系統(tǒng)組成的網(wǎng)絡(luò)也可以運(yùn)行ORAˉCLE數(shù)據(jù)庫(kù)產(chǎn)品。
2.ORACLE的總體結(jié)構(gòu)
(1)ORACLE的文件結(jié)構(gòu) 一個(gè)ORACLE數(shù)據(jù)庫(kù)系統(tǒng)包括以下5類(lèi)文件:ORACLE RDBMS的代碼文件。
數(shù)據(jù)文件 一個(gè)數(shù)據(jù)庫(kù)可有一個(gè)或多個(gè)數(shù)據(jù)文件,每個(gè)數(shù)據(jù)文件可以存有一個(gè)或多個(gè)表、視圖、索引等信息。
日志文件 須有兩個(gè)或兩個(gè)以上,用來(lái)記錄所有數(shù)據(jù)庫(kù)的變化,
用于數(shù)據(jù)庫(kù)的恢復(fù)。控制文件 可以有備份,采用多個(gè)備份控制文件是為了防止控制文件的損壞。參數(shù)文件 含有數(shù)據(jù)庫(kù)例程起時(shí)所需的配置參數(shù)。
。2)ORACLE的內(nèi)存結(jié)構(gòu) 一個(gè)ORACLE例程擁有一個(gè)系統(tǒng)全程區(qū)(SGA)和一組程序全程區(qū)(PGA)。
SGA(System Global Area)包括數(shù)據(jù)庫(kù)緩沖區(qū)、日志緩沖區(qū)及共享區(qū)域。
PGA(Program Global Area)是每一個(gè)Server進(jìn)程有一個(gè)。一個(gè)Server進(jìn)程起動(dòng)時(shí),就為其分配一個(gè)PGA區(qū),以存放數(shù)據(jù)及控制信息。
。3)ORACLE的進(jìn)程結(jié)構(gòu)ORACLE包括三類(lèi)進(jìn)程:
、儆脩(hù)進(jìn)程 用來(lái)執(zhí)行用戶(hù)應(yīng)用程序的。
②服務(wù)進(jìn)程 處理與之相連的一組用戶(hù)進(jìn)程的請(qǐng)求。
③后臺(tái)進(jìn)程 ORACLE為每一個(gè)數(shù)據(jù)庫(kù)例程創(chuàng)建一組后臺(tái)進(jìn)程,它為所有的用戶(hù)進(jìn)程服務(wù),其中包括:
DBWR(Database Writer)進(jìn)程,負(fù)責(zé)把已修改的數(shù)據(jù)塊從數(shù)據(jù)庫(kù)緩沖區(qū)寫(xiě)到數(shù)據(jù)庫(kù)中。LGWR(Log Writer)進(jìn)程,負(fù)責(zé)把日志從SGA中的緩沖區(qū)中寫(xiě)到日志文件中。
SMON(System Moniter)進(jìn)程,該進(jìn)程有規(guī)律地掃描SAG進(jìn)程信息,注銷(xiāo)失敗的數(shù)據(jù)庫(kù)例程,回收不再使用的內(nèi)存空間。PMON(Process Moniter)進(jìn)程,當(dāng)一用戶(hù)進(jìn)程異常結(jié)束時(shí),該進(jìn)程負(fù)責(zé)恢復(fù)未完成的事務(wù),注銷(xiāo)失敗的用戶(hù)進(jìn)程,釋放用戶(hù)進(jìn)程占用的資源。
ARCH(ARCHIVER)進(jìn)程。每當(dāng)聯(lián)機(jī)日志文件寫(xiě)滿(mǎn)時(shí),該進(jìn)程將其拷貝到歸檔存儲(chǔ)設(shè)備上。另外還包括分布式DB中事務(wù)恢復(fù)進(jìn)程RECO和對(duì)服務(wù)進(jìn)程與用戶(hù)進(jìn)程進(jìn)行匹配的Dnnn進(jìn)程等。
3.ORACLE的邏輯結(jié)構(gòu)
構(gòu)成ORACLE的數(shù)據(jù)庫(kù)的邏輯結(jié)構(gòu)包括:
(1)表空間
。2)5種類(lèi)型的段(segment)
、贁(shù)據(jù)段;②索引段;③回滾(rollbock)段;④臨時(shí)段;⑤自舉(bootstrap)段。
段的分配單位叫范圍(Extent)
表空間(Tablespace) 一個(gè)數(shù)據(jù)庫(kù)劃分成的若干邏輯部分稱(chēng)為表空間。一個(gè)數(shù)據(jù)庫(kù)可以有一個(gè)或多個(gè)表空間,初始的表空間命名為SYSTEM,每一個(gè)邏輯表空間對(duì)應(yīng)于一個(gè)或多個(gè)物理文件。DBA使用表空間做以下工作:
控制數(shù)據(jù)庫(kù)對(duì)象,如表、索引和臨時(shí)段的空間分配。為數(shù)據(jù)庫(kù)用戶(hù)設(shè)置空間配額。
利用個(gè)別表空間的在線(xiàn)或離線(xiàn),控制數(shù)據(jù)的可用性。后備或恢復(fù)數(shù)據(jù)。
通過(guò)分配空間,以改進(jìn)性能。
在每個(gè)數(shù)據(jù)庫(kù)中都存在SYSTEM表空間,它在建立數(shù)據(jù)庫(kù)時(shí)自動(dòng)建立。在該表空間中,包含數(shù)據(jù)庫(kù)的數(shù)據(jù)字典,其中存儲(chǔ)全部數(shù)據(jù)庫(kù)對(duì)象的名字和位置。
SYSTEM表空間總是在線(xiàn)的,像其它表空間一樣,可以通過(guò)增加新的數(shù)據(jù)庫(kù)文件來(lái)擴(kuò)大。一個(gè)表空間可包含許多表和索引。但一個(gè)表和索引不能跨越表空間,可跨越組成表空間的文件。在DB的打開(kāi)的情況下,DBA利用ALTER TABLESPACE語(yǔ)句,可以實(shí)施表空間的在線(xiàn)或離線(xiàn)。SYSTEM表空間必須在線(xiàn)。表空間離線(xiàn)有下列原因:
一般為了使部分?jǐn)?shù)據(jù)庫(kù)不能使用,而允許正常存取數(shù)據(jù)庫(kù)其余部分。執(zhí)行表空間離線(xiàn)備份。
一個(gè)離線(xiàn)的表空間,不能被應(yīng)用用戶(hù)讀或編輯。
可以增加數(shù)據(jù)文件擴(kuò)大已有的表空間,也可增加新的表空間使數(shù)據(jù)庫(kù)容量增大,或分配空間給某個(gè)應(yīng)用。使用ALFER TABLESPACE ADD FILE語(yǔ)句將另一個(gè)數(shù)據(jù)文件加入到已存在表空間中。使用CREATE TABLESPACE語(yǔ)句可建立一個(gè)新的表空間。段(segment) 表空間中的全部數(shù)據(jù)存儲(chǔ)在以段劃分的數(shù)據(jù)庫(kù)空間中。一個(gè)段是分配給數(shù)據(jù)庫(kù)用于數(shù)據(jù)存儲(chǔ)的范圍的集合。數(shù)據(jù)可以是表、索引或RDBMS所需要的臨時(shí)數(shù)據(jù)。段是表空間的下一個(gè)邏輯存儲(chǔ)的級(jí)別。一個(gè)段不能跨越一個(gè)表空間,但可跨越表空間內(nèi)的文件。一個(gè)數(shù)據(jù)庫(kù)最多需要五種段類(lèi)型:
數(shù)據(jù)段 一個(gè)包含一個(gè)表(或聚集)的全部數(shù)據(jù),一個(gè)表(或聚集)總有一個(gè)單個(gè)數(shù)據(jù)段。
索引段 一個(gè)索引段包含對(duì)一個(gè)表(或聚集)建立的一個(gè)索引的全部索引數(shù)據(jù)。一個(gè)表可以有一個(gè)、多個(gè)或者沒(méi)有索引段,取決于它所擁有的索引個(gè)數(shù)。一個(gè)聚集必須至少有一個(gè)索引段,即在聚集碼上
建立聚集索引。
回滾段 每個(gè)DB有一個(gè)或多個(gè)回滾段。一個(gè)回滾段是DB的一部分,它記錄在某一情況下被撤消的動(dòng)作;貪L段用于事務(wù)控制和恢復(fù)。
臨時(shí)段 在處理查詢(xún)時(shí),ORACLE需要臨時(shí)工作空間,用于存儲(chǔ)語(yǔ)句處理的中間結(jié)果,這個(gè)區(qū)稱(chēng)為臨時(shí)段。
自舉段 自舉段在SYSTEM表空間中,在數(shù)據(jù)庫(kù)建立時(shí)建立。它包括數(shù)據(jù)字典定義,在數(shù)據(jù)庫(kù)打開(kāi)時(shí)裝入。
4.用戶(hù)數(shù)據(jù)庫(kù)對(duì)象
由用戶(hù)建立的對(duì)象駐留在表空間中,含有真正的數(shù)據(jù)。數(shù)據(jù)庫(kù)對(duì)象有表、視圖、聚集、索引、偽列和序號(hào)生成器。
(1)聚集(Cluster) 聚集是存儲(chǔ)數(shù)據(jù)的一種可選擇的方法。聚集包括存儲(chǔ)在一起的一組表,它們共享公共列并經(jīng)常一起使用。由于內(nèi)容相關(guān)并且物理地存儲(chǔ)在一起,存取時(shí)間得到改進(jìn),存儲(chǔ)空間可以減少。聚集是一種優(yōu)化措施。
聚集對(duì)性能的改進(jìn),依賴(lài)于數(shù)據(jù)的分布和SQL操作的內(nèi)容。特別是使用聚集對(duì)連接非常有利?梢悦黠@地提高連接的速度。建立聚集命令的基本格式:
SQL>CREATE CLUSTER〈聚集名〉(列定義[,…]);利用聚集建立表命令基本格式:
SQL>CREATE TABLE〈新表名〉(列定義[,…]CLUSTER〈聚集名〉(聚集列);
oracle學(xué)習(xí)心得2
一、定位
oracle分兩大塊,一塊是開(kāi)發(fā),一塊是管理。開(kāi)發(fā)主要是寫(xiě)寫(xiě)存儲(chǔ)過(guò)程、觸發(fā)器什么的,還有就是用Oracle的Develop工具做form。有點(diǎn)類(lèi)似于程序員,需要有較強(qiáng)的邏輯思維和創(chuàng)造能力,個(gè)人覺(jué)得會(huì)比較辛苦,是青春飯;管理則需要對(duì)oracle數(shù)據(jù)庫(kù)的原理有深刻的認(rèn)識(shí),有全局操縱的能力和緊密的思維,責(zé)任較大,因?yàn)橐粋(gè)小的失誤就會(huì)down掉整個(gè)數(shù)據(jù)庫(kù),相對(duì)前者來(lái)說(shuō),后者更看重經(jīng)驗(yàn)。
因?yàn)閿?shù)據(jù)庫(kù)管理的'責(zé)任重大,很少公司愿意請(qǐng)一個(gè)剛剛接觸oracle的人去管理數(shù)據(jù)庫(kù)。對(duì)于剛剛畢業(yè)的年輕人來(lái)說(shuō),可以先選擇做開(kāi)發(fā),有一定經(jīng)驗(yàn)后轉(zhuǎn)型,去做數(shù)據(jù)庫(kù)的管理。當(dāng)然,這個(gè)還是要看人個(gè)的實(shí)際情況來(lái)定。
二、學(xué)習(xí)方法
我的方法很簡(jiǎn)單,就是:看書(shū)、思考、寫(xiě)筆記、做實(shí)驗(yàn)、再思考、再寫(xiě)筆記
看完理論的東西,自己靜下心來(lái)想想,多問(wèn)自己幾個(gè)為什么,然后把所學(xué)和所想的知識(shí)點(diǎn)做個(gè)筆記;在想不通或有疑問(wèn)的時(shí)候,就做做實(shí)驗(yàn),想想怎么會(huì)這樣,同樣的,把實(shí)驗(yàn)的結(jié)果記下來(lái)。思考和做實(shí)驗(yàn)是為了深入的了解這個(gè)知識(shí)點(diǎn)。而做筆記的過(guò)程,也是理清自己思路的過(guò)程。
學(xué)習(xí)的過(guò)程是使一個(gè)問(wèn)題由模糊到清晰,再由清晰到模糊的過(guò)程。而每次的改變都代表著你又學(xué)到了一個(gè)新的知識(shí)點(diǎn)。
學(xué)習(xí)的過(guò)程也是從點(diǎn)到線(xiàn),從線(xiàn)到網(wǎng),從網(wǎng)到面的過(guò)程。當(dāng)點(diǎn)變成線(xiàn)的時(shí)候,你會(huì)有總豁然開(kāi)朗的感覺(jué)。當(dāng)網(wǎng)到面的時(shí)候,你就是高手了
很多網(wǎng)友,特別是初學(xué)的人,一碰到問(wèn)題就拿到論壇上來(lái)問(wèn),在問(wèn)前,你有沒(méi)有查過(guò)書(shū),自己有沒(méi)有研究過(guò),有沒(méi)有搜索一下論壇?這就叫思維惰性,沒(méi)有鉆研的學(xué)習(xí)態(tài)度,不管學(xué)什么東西,都不會(huì)成功的。
三、oracle的體系
oracle的體系很龐大,要學(xué)習(xí)它,首先要了解oracle的框架。在這里,簡(jiǎn)要的講一下oracle的架構(gòu),讓初學(xué)者對(duì)oracle有一個(gè)整體的認(rèn)識(shí)。
1、物理結(jié)構(gòu)(由控制文件、數(shù)據(jù)文件、重做日志文件、參數(shù)文件、歸檔文件、密碼文件組成)
控制文件:包含維護(hù)和驗(yàn)證數(shù)據(jù)庫(kù)完整性的必要信息、例如,控制文件用于識(shí)別數(shù)據(jù)文件和重做日志文件,一個(gè)數(shù)據(jù)庫(kù)至少需要一個(gè)控制文件
數(shù)據(jù)文件:存儲(chǔ)數(shù)據(jù)的文件
重做日志文件:含對(duì)數(shù)據(jù)庫(kù)所做的更改記錄,這樣萬(wàn)一出現(xiàn)故障可以啟用數(shù)據(jù)恢復(fù)。一個(gè)數(shù)據(jù)庫(kù)至少需要兩個(gè)重做日志文件
參數(shù)文件:定義Oracle例程的特性,例如它包含調(diào)整SGA中一些內(nèi)存結(jié)構(gòu)大小的參數(shù)
歸檔文件:是重做日志文件的脫機(jī)副本,這些副本可能對(duì)于從介質(zhì)失敗中進(jìn)行恢復(fù)很必要。密碼文件:認(rèn)證哪些用戶(hù)有權(quán)限啟動(dòng)和關(guān)閉Oracle例程
2、邏輯結(jié)構(gòu)(表空間、段、區(qū)、塊)
表空間:是數(shù)據(jù)庫(kù)中的基本邏輯結(jié)構(gòu),一系列數(shù)據(jù)文件的集合。段:是對(duì)象在數(shù)據(jù)庫(kù)中占用的空間區(qū):是為數(shù)據(jù)一次性預(yù)留的一個(gè)較大的存儲(chǔ)空間塊:ORACLE最基本的存儲(chǔ)單位,在建立數(shù)據(jù)庫(kù)的時(shí)候指定
3、內(nèi)存分配(SGA和PGA)
SGA:是用于存儲(chǔ)數(shù)據(jù)庫(kù)信息的內(nèi)存區(qū),該信息為數(shù)據(jù)庫(kù)進(jìn)程所共享。它包含Oracle服務(wù)器的數(shù)據(jù)和控制信息,它是在Oracle服務(wù)器所駐留的計(jì)算機(jī)的實(shí)際內(nèi)存中得以分配,如果實(shí)際內(nèi)存不夠再往虛擬內(nèi)存中寫(xiě)。
PGA:包含單個(gè)服務(wù)器進(jìn)程或單個(gè)后臺(tái)進(jìn)程的數(shù)據(jù)和控制信息,與幾個(gè)進(jìn)程共享的SGA正相反PGA是只被一個(gè)進(jìn)程使用的區(qū)域,PGA在創(chuàng)建進(jìn)程時(shí)分配在終止進(jìn)程時(shí)回收
4、后臺(tái)進(jìn)程(數(shù)據(jù)寫(xiě)進(jìn)程、日志寫(xiě)進(jìn)程、系統(tǒng)監(jiān)控、進(jìn)程監(jiān)控、檢查點(diǎn)進(jìn)程、歸檔進(jìn)程、服務(wù)進(jìn)程、用戶(hù)進(jìn)程)
數(shù)據(jù)寫(xiě)進(jìn)程:負(fù)責(zé)將更改的數(shù)據(jù)從數(shù)據(jù)庫(kù)緩沖區(qū)高速緩存寫(xiě)入數(shù)據(jù)文件日志寫(xiě)進(jìn)程:將重做日志緩沖區(qū)中的更改寫(xiě)入在線(xiàn)重做日志文件
系統(tǒng)監(jiān)控:檢查數(shù)據(jù)庫(kù)的一致性如有必要還會(huì)在數(shù)據(jù)庫(kù)打開(kāi)時(shí)啟動(dòng)數(shù)據(jù)庫(kù)的恢復(fù)進(jìn)程監(jiān)控:負(fù)責(zé)在一個(gè)Oracle進(jìn)程失敗時(shí)清理資源
檢查點(diǎn)進(jìn)程:負(fù)責(zé)在每當(dāng)緩沖區(qū)高速緩存中的更改永久地記錄在數(shù)據(jù)庫(kù)中時(shí),更新控制文件和數(shù)據(jù)文件中的數(shù)據(jù)庫(kù)狀態(tài)信息。
歸檔進(jìn)程:在每次日志切換時(shí)把已滿(mǎn)的日志組進(jìn)行備份或歸檔服務(wù)進(jìn)程:用戶(hù)進(jìn)程服務(wù)。
用戶(hù)進(jìn)程:在客戶(hù)端,負(fù)責(zé)將用戶(hù)的SQL語(yǔ)句傳遞給服務(wù)進(jìn)程,并從服務(wù)器段拿回查詢(xún)數(shù)據(jù)。
5、oracle例程:Oracle例程由SGA內(nèi)存結(jié)構(gòu)和用于管理數(shù)據(jù)庫(kù)的后臺(tái)進(jìn)程組成。例程一次只能打開(kāi)和使用一個(gè)數(shù)據(jù)庫(kù)。
6、SCN(SystemChangeNumber):系統(tǒng)改變號(hào),一個(gè)由系統(tǒng)內(nèi)部維護(hù)的序列號(hào)。當(dāng)系統(tǒng)需要更新的時(shí)候自動(dòng)增加,他是系統(tǒng)中維持?jǐn)?shù)據(jù)的一致性和順序恢復(fù)的重要標(biāo)志。
四、深入學(xué)習(xí)管理:可以考OCP證書(shū),對(duì)oracle先有一個(gè)系統(tǒng)的學(xué)習(xí),然后看OracleConcepts、oracleonlinedocument,對(duì)oracle的原理會(huì)有更深入的了解,同時(shí)可以開(kāi)始進(jìn)行一些專(zhuān)題的研究如:RMAN、RAS、STATSPACT、DATAGUARD、TUNING、BACKUP&RECOVER等等。
開(kāi)發(fā):對(duì)于想做Oracle開(kāi)發(fā)的,在了解完Oracle基本的體系結(jié)構(gòu)之后,可以重點(diǎn)關(guān)注PL/SQL及Oracle的開(kāi)發(fā)工具這一部分。PL/SQL主要是包括怎么寫(xiě)SQL語(yǔ)句,怎么使用Oracle本身的函數(shù),怎么寫(xiě)存儲(chǔ)過(guò)程、存儲(chǔ)函數(shù)、觸發(fā)器等。Oracle的開(kāi)發(fā)工具主要就是Oracle自己的DeveloperSuite(OracleFormsDeveloperandReportsDeveloper這些),學(xué)會(huì)如何熟練使用這些工具。
【oracle學(xué)習(xí)心得】相關(guān)文章:
Oracle面試試題06-22
Oracle DBA面試試題06-17
Oracle面試試題題庫(kù)06-17
Oracle面試題庫(kù)06-19
oracle論文的參考文獻(xiàn)11-24
某公司的Oracle面試題大全06-22
英語(yǔ)的學(xué)習(xí)心得04-27