文章詳情頁(yè)
Oracle 認(rèn)證學(xué)習(xí)筆記
瀏覽:35日期:2023-11-14 19:30:51
這是我一位朋友最近研究Oracle的心得,我把它偷了出來(lái),和大家共同分享Oracle 9i DBA 認(rèn)證教程學(xué)習(xí)筆記 第一章 Oracle 數(shù)據(jù)庫(kù)體系結(jié)構(gòu)基礎(chǔ) 1、Oracle 數(shù)據(jù)庫(kù)系統(tǒng):為具有治理Oracle數(shù)據(jù)庫(kù)功能的計(jì)算機(jī)系統(tǒng)。 2、系統(tǒng)全局區(qū)(System Global Area):在數(shù)據(jù)庫(kù)服務(wù)器上啟動(dòng)一數(shù)據(jù)庫(kù)時(shí)的一塊共享內(nèi)存區(qū)(簡(jiǎn)稱SGA)。它被看作是Oracle數(shù)據(jù)庫(kù)的一個(gè)大緩沖池,這里的數(shù)據(jù)可以被Oracle的各個(gè)進(jìn)程共用。 3、實(shí)例(Instance):SGA和Oracle進(jìn)程的結(jié)合稱為一個(gè)Oracle實(shí)例。一個(gè)Oracle實(shí)例(Instance)只能與一個(gè)運(yùn)行的Oracle數(shù)據(jù)庫(kù)相聯(lián)系。 1.1 Oracle存儲(chǔ)器結(jié)構(gòu) Oracle使用共享內(nèi)存區(qū)和后臺(tái)進(jìn)程來(lái)治理其內(nèi)存和文件結(jié)構(gòu)。 1.1.1 系統(tǒng)全局區(qū)(SGA) 一、系統(tǒng)全局區(qū)的大小可以通過(guò)如下語(yǔ)句查詢: SQL> SELECT * FROM V$SGA; NAME VALUE -------------------- ---------- Fixed Size 453492 Variable Size 109051904 Database Buffers 25165824 Redo Buffers 667648 更具體的信息可以參考V$SGASTAT、V$BUFFER_POOL 二、系統(tǒng)全局區(qū)主要包括以下幾部分: 1、數(shù)據(jù)塊緩存區(qū) 內(nèi)存中用來(lái)存儲(chǔ)頻繁訪問(wèn)的數(shù)據(jù)的區(qū)域。數(shù)據(jù)庫(kù)的任何修改都在該緩沖里完成,并由DBWR進(jìn)程將修改后的數(shù)據(jù)寫(xiě)入磁盤(pán)。數(shù)據(jù)塊緩存區(qū)的大小由數(shù)據(jù)庫(kù)服務(wù)器init.ora文件中的DB_BLOCK_BUFFERS參數(shù)決定(用數(shù)據(jù)塊的個(gè)數(shù)表示)。通常,數(shù)據(jù)塊緩存區(qū)只是數(shù)據(jù)庫(kù)大小的1%-2%,Oracle使用最近最少使用(LRU,Least Recently Used)算法來(lái)治理可用空間。塊緩沖區(qū)高速緩存又可以細(xì)分為以下三個(gè)部分(Default pool、Keep pool、Recycle pool)。假如不是人為設(shè)置初始化參數(shù)(init.ora),ORACLE將默認(rèn)為Default pool。 由于操作系統(tǒng)尋址能力的限制,不通過(guò)非凡設(shè)置,在32位的系統(tǒng)上,塊緩沖區(qū)高速緩存最大可以達(dá)到1.7G,在64位系統(tǒng)上,塊緩沖區(qū)高速緩存最大可以達(dá)到10G。 2、數(shù)據(jù)字典緩存區(qū) 數(shù)據(jù)庫(kù)表和視圖的集合,包含關(guān)于數(shù)據(jù)庫(kù)、數(shù)據(jù)庫(kù)結(jié)構(gòu)、權(quán)限和用戶的元數(shù)據(jù)。字典緩存區(qū)的大小由數(shù)據(jù)庫(kù)內(nèi)部治理。字典緩存區(qū)是SQL共享池的一部分,共享池的大小由數(shù)據(jù)庫(kù)文件init.ora中的SHARED_POOL_SIZE參數(shù)來(lái)設(shè)置。 3、重做日志緩沖區(qū) 重做日志文件的緩沖區(qū),對(duì)數(shù)據(jù)庫(kù)的任何修改都按順序被記錄在該緩沖,然后由LGWR進(jìn)程將它寫(xiě)入磁盤(pán)。這些修改信息可能是DML語(yǔ)句,如(Insert,Update,Delete),或DDL語(yǔ)句,如(Create,Alter,Drop等)。重做日志緩沖區(qū)的大小(以字節(jié)為單位)由init.ora文件中的LOG_BUFFER參數(shù)決定。 重做日志緩沖區(qū)的存在是因?yàn)閮?nèi)存到內(nèi)存的操作比較內(nèi)存到硬盤(pán)的速度快很多,所以重作日志緩沖區(qū)可以加快數(shù)據(jù)庫(kù)的操作速度,但是考慮的數(shù)據(jù)庫(kù)的一致性與可恢復(fù)性,數(shù)據(jù)在重做日志緩沖區(qū)中的滯留時(shí)間不會(huì)很長(zhǎng)。所以重作日志緩沖區(qū)一般都很小,大于3M之后的重作日志緩沖區(qū)已經(jīng)沒(méi)有太大的實(shí)際意義。 4、SQL共享池 共享SQL區(qū)保留了數(shù)據(jù)庫(kù)用戶執(zhí)行的SQL語(yǔ)句的解釋版本和這些語(yǔ)句的執(zhí)行計(jì)劃。目的是那些語(yǔ)句被再次使用時(shí)提高進(jìn)程的速度。假如SQL共享池太小,語(yǔ)句將被連續(xù)不斷地再裝入到庫(kù)緩存區(qū),從而影響操縱性能。SQL共享池的大小由init.ora文件的參數(shù)SHARED_POOL_SIZE決定。共享池有可分為以下兩部分: 1、SQL語(yǔ)句緩沖(Library Cache):主要對(duì)SQL語(yǔ)句的解析(Parse)產(chǎn)生執(zhí)行計(jì)劃。 2、數(shù)據(jù)字典緩沖區(qū)(Data Dictionary Cache) 5、大池 大池是SGA中的可選內(nèi)存區(qū),對(duì)于諸如Oracle備份和恢復(fù)等大型命令的SQL語(yǔ)句,利用大池就可以防止這些SQL大型命令把條目重寫(xiě)入SQL共享池中,從而減少再裝入到庫(kù)緩存區(qū)中的語(yǔ)句數(shù)量,防止與其它應(yīng)用程序?qū)?kù)緩存去的爭(zhēng)用。大池沒(méi)有LRU清單。Oracle9i已不用這個(gè)參數(shù)。作為L(zhǎng)argePool的一種選擇的方案,可以用init.ora文件的SHARED_POOL_RESERVED_SIZE參數(shù)為SQL大型語(yǔ)句保留一部分SQL共享池。 6、Java池 為Java命令提供語(yǔ)法分析。Java池的大小通過(guò)init.ora文件的JAVA_POOL_SIZE參數(shù)設(shè)置,默認(rèn)為10M。 7、多緩沖池 可以在SGA中創(chuàng)建多個(gè)緩沖池,能夠用多個(gè)緩沖池把大數(shù)據(jù)集與其它的應(yīng)用程序分開(kāi),以減少它們爭(zhēng)奪數(shù)據(jù)塊緩存區(qū)內(nèi)相同資源的可能性。創(chuàng)建緩沖池時(shí),需要規(guī)定保存區(qū)(keeparea)的大小和再循環(huán)區(qū)(recyclearea)的大小。 可以通過(guò)BUFFER_POOL_KEEP參數(shù)來(lái)規(guī)定保存區(qū)的大小。保存和再循環(huán)緩沖池的容量減少了數(shù)據(jù)塊緩沖區(qū)的可用空間(通過(guò)DB_BLOCK_BUFFERS參數(shù)設(shè)置)。 1.1.2 程序全局區(qū)(PGA) 是內(nèi)存中的一個(gè)區(qū)域,該區(qū)保存一個(gè)進(jìn)程的數(shù)據(jù)和進(jìn)程信息,該區(qū)域不是共享的。SORT_AREA_SIZE(排序區(qū)的最大尺寸)和SORT_AREA_RETAINED_SIZE(排序操作完成之后排序區(qū)被減少后的尺寸)參數(shù)對(duì)于PGA的大小由重要影響。 在大型企業(yè)環(huán)境治理中治理SORT_AREA_SIZE可能具有挑戰(zhàn)性。原則是使性能最佳而盡量少用系統(tǒng)資源。Oracle9i提供自動(dòng)方法治理PGA內(nèi)存。兩個(gè)用于自動(dòng)治理PGA內(nèi)存的主要初始化參數(shù)是PGA_AGGREGATE_TARGET(指定可由所有服務(wù)器進(jìn)程使用的內(nèi)存總量)和WORKAREA_SIZE_POLICY(值是MANUAL或AUTO)。 1.2后臺(tái)進(jìn)程 后臺(tái)進(jìn)程是維護(hù)數(shù)據(jù)庫(kù)的物理結(jié)構(gòu)和存儲(chǔ)結(jié)構(gòu)之間的關(guān)系。可以設(shè)置init.ora文件的BACKGROUND_DUMP_DEST參數(shù)來(lái)規(guī)定后臺(tái)進(jìn)程跟蹤文件的位置。在排除數(shù)據(jù)故障時(shí),跟蹤文件顯得非常重要,主要紀(jì)錄數(shù)據(jù)庫(kù)的警告日志。 這里給出每一個(gè)進(jìn)程功能的簡(jiǎn)介: 1、數(shù)據(jù)庫(kù)書(shū)寫(xiě)器進(jìn)程Database Writer(DBWR) 負(fù)責(zé)將修改過(guò)的數(shù)據(jù)塊寫(xiě)回到數(shù)據(jù)庫(kù)文件。多個(gè)DBWR進(jìn)程有助于在進(jìn)行大的操作期間減少DBWR中的沖突,DBWR進(jìn)程的數(shù)量由數(shù)據(jù)庫(kù)的init.ora文件中的DB_WRITER_PROCESSES參數(shù)決定。 2、日志書(shū)寫(xiě)器進(jìn)程Log Writer(LGWR) 負(fù)責(zé)將聯(lián)機(jī)redo日志緩沖區(qū)的內(nèi)容分批寫(xiě)到聯(lián)機(jī)redo日志文件。重做日志緩沖區(qū)條目總是包含著數(shù)據(jù)庫(kù)的最新?tīng)顟B(tài),這是因?yàn)镈BWR進(jìn)程可以一直等待到把數(shù)據(jù)塊緩沖區(qū)中的修改數(shù)據(jù)塊寫(xiě)入到數(shù)據(jù)文件中。對(duì)于Oracle9i,可以創(chuàng)建多個(gè)LGWR/IO從進(jìn)程以改善向聯(lián)機(jī)重做日志文件寫(xiě)入性能,其個(gè)數(shù)由數(shù)據(jù)庫(kù)的init.ora文件的LGWR_IO_SLAVES參數(shù)決定。 3、歸檔進(jìn)程Archive(ARCH) 負(fù)責(zé)把寫(xiě)滿的redo文件復(fù)制到歸檔日志目標(biāo)中。Oracle最多答應(yīng)有10個(gè)歸檔進(jìn)程。LOG_ARCHIVE_MAX_PROCESSES參數(shù)用來(lái)設(shè)置答應(yīng)的最大數(shù)。 4、檢查點(diǎn)進(jìn)程Checkpoint(CKPT) 用來(lái)減少執(zhí)行實(shí)例恢復(fù)所需的時(shí)間。可以用數(shù)據(jù)庫(kù)實(shí)例的init.ora文件中LOG_CHECKPIOINT_INTERVAL、LOG_CHECKPOINT_TIMEOUT、FAST_START_IO_TARGET 的參數(shù)來(lái)設(shè)置一個(gè)頻繁出現(xiàn)的檢查點(diǎn)。 5、系統(tǒng)監(jiān)視器進(jìn)程System Monitor(SMON) 執(zhí)行崩潰恢復(fù)、清除臨時(shí)段和組合自由空間。 6、進(jìn)程監(jiān)視器Process Monitor(PMON) 負(fù)責(zé)清除失敗用戶的進(jìn)程,釋放用戶當(dāng)時(shí)正在使用的資源。當(dāng)進(jìn)程失敗時(shí),PMON執(zhí)行以下操作: 1.釋放任何進(jìn)程包括的鎖; 2.回滾那些已經(jīng)啟動(dòng)但未提交的事務(wù); 3.從活動(dòng)進(jìn)程的列表中刪除進(jìn)程ID。 7、恢復(fù)進(jìn)程Recover(RECO) 用于解決分布式數(shù)據(jù)庫(kù)中的故障問(wèn)題。只有在平臺(tái)支持Distributed Option(分布式選項(xiàng))且init.ora文件中的DISTRIBUTED_TRANSACTIONS參數(shù)大于零時(shí)才創(chuàng)建這個(gè)進(jìn)程。 8、作業(yè)隊(duì)列進(jìn)程Snapshot(SNP0) Oracle的快照刷新及內(nèi)容及內(nèi)部作業(yè)對(duì)列調(diào)度依靠于他們執(zhí)行的作業(yè)隊(duì)列進(jìn)程。為一實(shí)例所創(chuàng)建的SNP進(jìn)程個(gè)數(shù)由數(shù)據(jù)庫(kù)的init.ora文件中的JOB_QUEUE_PROCESSES參數(shù)決定,最多為36個(gè)。 9、作業(yè)監(jiān)視器進(jìn)程Queue Monitor(QMNO) 和Oracle的優(yōu)先隊(duì)列選項(xiàng)一起使用。最多可以有10個(gè)隊(duì)列監(jiān)視器進(jìn)程,并且它們使用AQ_TM_PROCESSED初始化參數(shù)配置。 1.3 Oracle物理存儲(chǔ)結(jié)構(gòu) 數(shù)據(jù)庫(kù)相關(guān)的文件有:重做日志文件、控制文件、跟蹤文件及警告日志。 1.3.1數(shù)據(jù)字典的內(nèi)容及用法 數(shù)據(jù)字典是DBA在執(zhí)行Create Database命令之后應(yīng)建立的第二組數(shù)據(jù)庫(kù)對(duì)象。使用Oracle數(shù)據(jù)字典,可以對(duì)數(shù)據(jù)庫(kù)中的每個(gè)對(duì)象以某種方式進(jìn)行跟蹤。Oracle通常利用catalog.sql和catproc.sql腳本建立數(shù)據(jù)字典,而不需要DBA干預(yù)。假如手工建立數(shù)據(jù)庫(kù),則要確保在建立數(shù)據(jù)庫(kù)不久后就運(yùn)行這些腳本。 1、 構(gòu)造數(shù)據(jù)字典視圖 catalog.sql是用來(lái)建立組成數(shù)據(jù)字典的各個(gè)對(duì)象。Catporc.sql為PL/SQL建立過(guò)程選項(xiàng)和實(shí)用程序。必須以sys as sysdba用戶才能運(yùn)行這些腳本。 2、 主要的數(shù)據(jù)字典 Oracle數(shù)據(jù)字典主要由兩部分組成—基表和用戶可訪問(wèn)的視圖。 3、 識(shí)別數(shù)據(jù)字典視圖的范圍 i. USER:答應(yīng)你看到你所擁有的相關(guān)數(shù)據(jù)庫(kù)對(duì)象。 ii. ALL:答應(yīng)你看到你可以訪問(wèn)的相關(guān)數(shù)據(jù)庫(kù)對(duì)象。 iii. DBA:答應(yīng)你看到整個(gè)數(shù)據(jù)庫(kù)中所有的相關(guān)對(duì)象。 4、 動(dòng)態(tài)性能視圖 V$DATABASE 存放數(shù)據(jù)庫(kù)的常規(guī)信息 V$SYSSTAT 存放數(shù)據(jù)庫(kù)性能的大部分信息 V$SESSION 存放用戶會(huì)話信息 V$LOG、V$LOGFILE 存放聯(lián)機(jī)重做日志信息 V$DATAFILE 存放數(shù)據(jù)文件信息 V$CONTROLFILE 存放數(shù)據(jù)庫(kù)控制文件信息 1.3.2控制文件 控制文件是數(shù)據(jù)庫(kù)啟動(dòng)可操作成功必需的一種二進(jìn)制文件,它通常記錄數(shù)據(jù)庫(kù)的所有物理組件,如數(shù)據(jù)文件的位置、重做日志、數(shù)據(jù)庫(kù)名等數(shù)據(jù)庫(kù)信息。通過(guò)CONTORL_FILES參數(shù)設(shè)置控制文件名。通過(guò)V$CONTROLFILE、V$CONTROLFILE_RECORD_SECTION視圖得到控制文件的各部分信息。 1.3.3數(shù)據(jù)文件 表空間是數(shù)據(jù)庫(kù)的邏輯劃分,每個(gè)數(shù)據(jù)庫(kù)至少有一個(gè)表空間(稱作SYSTEM表空間)。每個(gè)表空間由同一磁盤(pán)上的一個(gè)或多個(gè)文件組成,這些文件叫數(shù)據(jù)文件(datafile)。一個(gè)數(shù)據(jù)文件只能屬于一個(gè)表空間,而一個(gè)表空間可以跨越多個(gè)數(shù)據(jù)文件。數(shù)據(jù)庫(kù)文件列表可以查詢V$DATAFILE和DBA_DATA_FILE的視圖。 1.3.4日志文件 日志文件有時(shí)也叫做redo日志文件,是任何數(shù)據(jù)庫(kù)的重要組成部分。 它們的存在確保在系統(tǒng)崩潰、驅(qū)動(dòng)錯(cuò)誤或任何其它意外情況中斷了正常操作的事件發(fā)生時(shí)數(shù)據(jù)庫(kù)能夠恢復(fù)。有兩種redo日志文件:聯(lián)機(jī)redo日志文件和歸檔redo日志文件。數(shù)據(jù)庫(kù)先寫(xiě)日志,然后提交數(shù)據(jù)。可以通過(guò)V$LOGFILE視圖查看日志文件信息。通過(guò)ARCHIVE LOG LIST命令查看歸檔日志文件信息。 待續(xù)...
標(biāo)簽:
Oracle
數(shù)據(jù)庫(kù)
排行榜
