版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、內(nèi)容概要,1. oracle的核心組件 2. 內(nèi)部主要的運行流程 3. 常用的Debug工具(時間、影響),Oracle結(jié)構(gòu)圖,Instance,SGA,Redo LogBuffer,Shared Pool,Data DictionaryCache,Library Cache,DBWR,SMON,PMON,CKPT,LGWR,Others,Userprocess,Serverprocess,PGA,Control files,Data files,Database,DatabaseBuffer Cache,Redo Log files,Java Pool,Large Pool,Paramete
2、r file,Archived Log files,OS,Net,DISK,RAM,Shared Pool,存些什么: 最近經(jīng)常使用的SQL語句 最近經(jīng)常使用的數(shù)據(jù)定義 結(jié)構(gòu): 庫告訴緩存 數(shù)據(jù)字典高速緩存,Library Cache, Stores information about the most recently used SQL and PL/SQL statements Enables the sharing of commonly used statements Is managed by a least recently used (LRU) algorithm Consist
3、s of two structures: Shared SQL area Shared PL/SQL area Size determined by the Shared Pool sizing,Data Dictionary Cache,A collection of the most recently used definitions in the database Includes information about database files, tables,indexes, columns, users, privileges, and other database objects
4、 Caching data dictionary information into memory improves response time on queries and DML,Sql語句的執(zhí)行過程,SQL語句有哪些? 查詢語句處理 DML語句處理(insert, update, delete) DDL 語句處理(create . , drop . , alter . , ) SQl語句執(zhí)行過程: parse-execute-fetch 具體些: Sqlasciihashsoft parseexecute hard parse. 再具體些: soft parse 可以直接使用其對應的執(zhí)行計
5、劃對數(shù)據(jù)進行存取 hard parse先會查找shared pool的空間是否足夠,如果不夠,利用LRU算法將最近最不常使用的sql換出內(nèi)存中,在進行相應的轉(zhuǎn)換。,硬解析執(zhí)行語法分析(很占資源),1.翻譯SQL語句,驗證它是合法的語句,即書寫正確 2.數(shù)據(jù)字典的查找,以驗證是否符合表和列的定義 3.在所要求的對象上獲取語法分析鎖,使得在語句的語法分析過程中不改變這些對象的定義 4.驗證為存取所涉及的模式對象所需的權限是否滿足 5.決定此語句最佳的執(zhí)行計劃 6.將它裝入共享SQL區(qū) 變量綁定可以消除以上這些過程!,Database Buffer Cache, Stores copies of d
6、ata blocks that have been retrieved from the data files Enables great performance gains when you obtain and update data Managed through an LRU algorithm,兩個鏈表,LRU LRU-MRU Dirty List 數(shù)據(jù)文件中所對應的塊與在寫鏈表里面對應的塊的內(nèi)容是不一致的,Redo Log Buffer, Records all changes made to the database data blocks Primary purpose is
7、recovery Changes recorded within are called redo entries Redo entries contain information to reconstruct or redo changes,交互的過程,Server Process用途,為用戶應用程序創(chuàng)建的服務進程(或用戶/服務進程合并后的服務進程部分)可以完成以下工作: 解析、運行應用程序提交的 SQL 語句 如果數(shù)據(jù)在 SGA 中不存在,則將所需的數(shù)據(jù)塊從磁盤上的數(shù)據(jù)文件讀入 SGA 的數(shù)據(jù)緩存區(qū)(shared database buffer) 以應用程序能理解的形式返回 SQL 語句的執(zhí)
8、行結(jié)果,常見后臺進程、作用、觸發(fā)條件,DBWn LGWn CKPT ARCn SMON PMON,常見后臺進程都做什么,數(shù)據(jù)寫入進程(database writer process,DBWn) DBWn的功能是將數(shù)據(jù)緩沖區(qū)的內(nèi)容寫入數(shù)據(jù)文件。DBWn 進程負責將數(shù)據(jù)緩存區(qū)(database buffer cache)內(nèi)修改過的緩沖區(qū)(即 dirty buffer)寫入磁盤。,DBWn的觸發(fā)時機,當滿足以下條件時,DBWn 進程會將臟緩沖區(qū)寫入磁盤: 如果服務進程(Server process)掃描了一定數(shù)量的緩沖區(qū)后仍不能找到可用緩沖區(qū),她將通知 DBWn 進程進行寫入。DBWn 在執(zhí)行其他操
9、作的同時,能夠異步地將臟緩沖區(qū)寫入磁盤。 DBWn 進程周期性地將臟緩沖區(qū)寫入磁盤,從而使檢查點(checkpoint)前移。檢查點是進行實例恢復(instance recovery)時應用重做日志的起始點的位置。此位置是由數(shù)據(jù)緩沖區(qū)內(nèi)時間最早的臟緩沖區(qū)決定的。,LGWR 進程,LGWR 進程每次將重做日志緩沖區(qū)中的一組連續(xù)的緩沖區(qū)寫入磁盤。 本質(zhì):先寫Redo保證可恢復然后返回,修改過的數(shù)據(jù)遲些被DBWn寫入數(shù)據(jù)文件,保證可靠性的同時提供高效性 LGWR 進程何時寫: 當用戶進程(user process)提交一個事務時的提交記錄(commit record) 每 3 秒寫入一次 當重做日志
10、緩沖區(qū)的使用容量超過總?cè)萘康?1/3 當 DBWn 進程向磁盤寫入臟緩沖區(qū)時(且相關的重做日志還沒有寫入磁盤),日志切換,歸檔圖,檢查點進程(CKPT),當一個檢查點(checkpoint)事件發(fā)生時,Oracle 需要更新所有數(shù)據(jù)文件的文件頭來記錄檢查點事件的詳細信息。這個工作是由 CKPT 進程完成的。但是將數(shù)據(jù)塊寫入數(shù)據(jù)文件的不是 CKPT 進程,而是 DBWn 進程。,檢查點進程觸發(fā)時機,檢查點何時觸發(fā) 1 At every log switch 2 When an instance has been shut down with the normal, transactional,
11、or immediate option 3 When forced by setting the FAST_START_MTTR_TARGET initialization parameter 4 When manually requested by the database administrator 5 When the ALTER TABLESPACE OFFLINE NORMAL|READ ONLY|BEGIN BACKUPcommand causes checkpointing on specific data files,歸檔進程(ARCn),歸檔進程(archiver proce
12、ss,ARCn)在發(fā)生日志切換(log switch)時將重做日志文件復制到指定的存儲設備中。只有當數(shù)據(jù)庫運行在 ARCHIVELOG 模式下,且自動歸檔功能被開啟時,系統(tǒng)才會啟動 ARCn 進程。,系統(tǒng)監(jiān)控進程(SMON),1.實例啟動時如有需要,系統(tǒng)監(jiān)控進程(system monitor process,SMON)將負責進行恢復(recovery)工作。 2.SMON 還負責清除系統(tǒng)中不再使用的臨時段(temporary segment)。 3.SMON 將定期地檢查系統(tǒng)中是否存在問題. 系統(tǒng)內(nèi)的其他進程需要服務時也能夠調(diào)用 SMON 進程。,進程監(jiān)控進程(PMON),當一個用戶進程(us
13、er process)失敗后,進程監(jiān)控進程(process monitor,PMON)將對其進行恢復。PMON 進程將清除相關的數(shù)據(jù)緩存區(qū)(database buffer cache)并釋放被此用戶進程使用的資源。例如,PMON 進程將重置活動事務表(active transaction table),釋放鎖,并從活動進程列表(list of active process)中刪除出錯進程的 ID。,常見的一些概念,控制文件的作用、內(nèi)容 檢查點的引入 undo和redo的區(qū)別 變量綁定的用途 commit有什么影響,控制文件的內(nèi)容及作用,控制文件的內(nèi)容 數(shù)據(jù)庫名 表空間信息 所有數(shù)據(jù)文件的名字和
14、位置 所有redo日志文件的名字和位置 當前的日志序列號 檢查點信息 關于redo日志和歸檔的當前狀態(tài)信息,控制文件的內(nèi)容及作用,控制文件的作用 包含維護和驗證數(shù)據(jù)庫完整性的必要信息、例如,控制文件用于識別數(shù)據(jù)文件和重做日志文件,一個數(shù)據(jù)庫至少需要一個控制文件 控制文件把Oracle引導到數(shù)據(jù)庫文件的其它部分。啟動一個實例時,Oracle 從參數(shù)文件中讀取控制文件的名字和位置。最終打開數(shù)據(jù)庫時,Oracle 從控制文件中讀取數(shù)據(jù)文件的列表并打開其中的每個文件,檢查點的含義,檢查點是一個數(shù)據(jù)庫事件,存在的意義在于減少崩潰恢復的時間,由CKPT后臺進程觸發(fā),檢查點發(fā)生時,CKPT會負責通知DBWR
15、將dirty buffer寫出到數(shù)據(jù)文件,CKPT另外一個職責是負責更新數(shù)據(jù)文件和控制文件中的檢查點信息。,undo和redo的區(qū)別,區(qū)別很明顯作用不一樣 Undo用于提供rollback的可能,提供讀一致性 Redo用于重演事務,為的是恢復 Undo是受Redo保護的,Undo(回滾),UPDATE emp SET sal=4000 WHERE empno=7788; 檢查empno=7788記錄在Buffer Cache中是否存在,如果不存在則讀入Buffer Cache中 在回滾表空間的相應回滾段事務表上分配事務槽,這個操作需要記錄Redo信息 在回滾段讀入或者在Buffer Cache
16、中創(chuàng)建sal=3000的前鏡像,這需要產(chǎn)生Redo信息并記入Redo Log Buffer中 修改Sal=4000,這是update的數(shù)據(jù)變更,記入Redo Log Buffer中 當用戶提交時,會在Redo Log Buffer中記錄提交信息,并在回滾段標記該事務為非激活狀態(tài)(Inactive),Commit之前數(shù)據(jù)庫做了什么?,COMMIT是一個非常快的操作,當我們發(fā)布commit命令時,真正困難的動作已經(jīng)完成,在數(shù)據(jù)庫中已經(jīng)執(zhí)行了數(shù)據(jù)更改,所以已經(jīng)完成了99%的任務,例如:下列操作已經(jīng)產(chǎn)生: 1.在SGA(Buffer Cache)中已經(jīng)生成了undo塊; 2.在SGA(Buffer C
17、ache)中已經(jīng)生成了產(chǎn)生改變的數(shù)據(jù)塊和索引塊;3.在REDO LOG BUFFER生成了前面兩項的redo信息;4.依賴于前三項產(chǎn)生的數(shù)據(jù)量大小以及操作需要的時間,buffer中的數(shù)據(jù)可能已經(jīng)有一部分輸出到了磁盤;5.所有需要的鎖已經(jīng)獲得;,Commit之后數(shù)據(jù)庫做了什么?,當執(zhí)行COMMIT命令時,只執(zhí)行如下操作: 1.為事務生成SCN:SCN是ORACLE數(shù)據(jù)庫的一種計時信息,用以保證事務的順序性,同時還用于失敗恢復和保證數(shù)據(jù)庫的讀一致性和檢查點,無論何時何人提交,SCN自動加1 2.將事務相關的未寫入redo log file中的redo信息從redo log buffer寫入到red
18、o log file,這才是真實的COMMIT,這步操作完成,說明我們已經(jīng)完成COMMIT,事務從V$TRANSACTION中移除; 3.V$LOCK中記錄的SESSION關于該事務的鎖會釋放,其他需要這些鎖的事務被喚醒; 4.執(zhí)行塊清理,清理塊頭保存的事務信息;,變量綁定(一次解析多次使用),硬解析 一個硬解析需要經(jīng)解析,制定執(zhí)行路徑,優(yōu)化訪問計劃等許 多的步驟.硬解釋不僅僅耗費大量的cpu,更重要的是會占 據(jù)重要的閂(latch)資源,嚴重的影響系統(tǒng)的規(guī)模的擴大 (即限制了系統(tǒng)的并發(fā)行), 而且引起的問題不能通過 增加內(nèi)存條和cpu的數(shù)量來解決。 軟解析 當一個sql語句提交后,oracl
19、e會首先檢查一下共享緩沖池 (shared pool)里有沒有與之完全相同的語句,如果有的 話只須執(zhí)行軟分析即可 ,也就是使用上次硬解析的結(jié)果直接執(zhí)行。,Oracle 性能因素,如何發(fā)現(xiàn)問題,操作系統(tǒng) IO 內(nèi)存 CPU 數(shù)據(jù)庫 statspack報告 統(tǒng)計信息 等待事件 應用級 Sql語句統(tǒng)計,使用的工具,操作系統(tǒng) top / sar / vmstat / iostat 數(shù)據(jù)庫 動態(tài)性能視圖 utlbstat.sql / utlestat.sql statspack AWR/ADDM 等待事件 OEM的tuning包和diagnostics包 自動性能優(yōu)化指導 應用級 autotrace S
20、ql trace 輔助性的相關文件 告警日志文件 后臺進程跟蹤文件 用戶進程跟蹤文件 第三方的一些工具,Unix系統(tǒng)性能監(jiān)控,CPU Top Sar RAM vmstat IO iostat,top,sar,原理 from /proc/ 使用: 1. rpm sysstat-7.0.2-1.el5.i386.rpm 2.crontab -e 0,10,20,30,40,50 * * * * /usr/lib/sa/sa1 3.sar f /var/log/sa/sa* 選項 4.能干什么?報告 io,cpu,ram,network interrupte,filesystem(file,inod
21、e),Sar(-bBcdqrRuvwWy),Statspack內(nèi)容,1、負載間檔(Loadprofile) 2、實例效率點擊率(Instanceefficiencyhitratios) 3、首要的5個等待事件(Top5waitevents) 4、等待事件(Waitevents) 5、閂鎖等待 6、首要的SQL(Topsql) 7、實例活動(Instanceactivity) 8、文件I/O(FileI/O) 9、內(nèi)存分配(Memoryallocation) 10、緩沖區(qū)等待(Bufferwaits ),Linux世界進入Oracle世界的入口,V$process 看哪個linux進程當前在執(zhí)行
22、什么SQL SQLselect /*+ ORDERED */ sql_text from v$sqltext a where( a.hash_value,a.address) in ( select decode(sql_hash_value,0,prev_hash_value,sql_hash_value), decode(sql_hash_value,0,prev_sql_addr,sql_address) from v$session b where b.paddr = (select addr from v$process c where c.spid = ,開發(fā)測試時常用的測試手段,
23、sql_trace 全局在 pfile/spfile 中使用 sql_trace=true導致所有進程的活動都被跟蹤,后臺進程和用戶SESSION ,導致嚴重的性能問題。慎重使用 當前SESSION alter session set sql_trace=true ;alter session set sql_trace=flase ;,autotrace,SET AUTOTRACE OFF - 不生成AUTOTRACE 報告,這是缺省模式 SET AUTOTRACE ON EXPLAIN - AUTOTRACE只顯示優(yōu)化器執(zhí)行路徑報告 SET AUTOTRACE ON STATISTICS
24、- 只顯示執(zhí)行統(tǒng)計信息 SET AUTOTRACE ON - 包含執(zhí)行計劃和統(tǒng)計信息 SET AUTOTRACE TRACEONLY - 同set autotrace on,但是不顯示查詢輸出,一個死鎖的例子,A session SQL update a set a1=3 where a1=2; 1 1 row updated SQL update b set b1=4 where b1=2; 3 卡住,執(zhí)行完4 拋錯 update b set b1=4 where b1=2 ORA-00060: deadlock detected while waiting for resource SQL rollback; 5 Rollback complete B session S
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025項目施工合同模板
- 2025房屋建筑合同模板 房屋建筑合同
- 2025專業(yè)版電子版權委托代理合同
- 二零二五年度XX房地產(chǎn)公司收取管理費合作協(xié)議3篇
- 二零二五年度股權代持與公司研發(fā)創(chuàng)新合作協(xié)議3篇
- 2025年度農(nóng)機設備委托管理與農(nóng)業(yè)人才培養(yǎng)協(xié)議3篇
- 二零二五年度特色農(nóng)產(chǎn)品電商平臺合作合同范本3篇
- 2025年度養(yǎng)老院老人外出看護責任約定協(xié)議3篇
- 2025年度全新二零二五年度離婚后子女心理輔導及關愛協(xié)議3篇
- 二零二五年度養(yǎng)殖場品牌授權與合作承包協(xié)議3篇
- JGJ46-2024 建筑與市政工程施工現(xiàn)場臨時用電安全技術標準
- 2023-2024-1習思想學習通超星期末考試答案章節(jié)答案2024年
- DB37∕T 5112-2018 村莊道路建設規(guī)范
- 說明書hid500系列變頻調(diào)速器使用說明書s1.1(1)
- 牽引供電系統(tǒng)遠動技術概述講解課件
- 義務教育《道德與法治》課程標準(2022年版)
- 乙肝五項詳解(課堂PPT)
- TD汽車維修公司管理制度和崗位職責匯編-30頁
- 數(shù)字化設計與制造PPT課件
- 個人信息查詢使用授權書
- 工作證明(通用)
評論
0/150
提交評論