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