Oracle培訓(xùn)課件_第1頁
Oracle培訓(xùn)課件_第2頁
Oracle培訓(xùn)課件_第3頁
Oracle培訓(xùn)課件_第4頁
Oracle培訓(xùn)課件_第5頁
已閱讀5頁,還剩50頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、 二、二、Oracle Oracle 體系結(jié)構(gòu)體系結(jié)構(gòu) 五、五、Oracle SQLOracle SQL編寫規(guī)范編寫規(guī)范 四、典型案例分析暨優(yōu)化要點(diǎn)四、典型案例分析暨優(yōu)化要點(diǎn) 三、三、Oracle SQLOracle SQL優(yōu)化基礎(chǔ)優(yōu)化基礎(chǔ) 一、培訓(xùn)目的一、培訓(xùn)目的培訓(xùn)總目錄培訓(xùn)總目錄培訓(xùn)目的培訓(xùn)目的培訓(xùn)目標(biāo)培訓(xùn)內(nèi)容課堂交互 本次課程大約需要3個(gè)小時(shí),課后,我們會(huì)留半個(gè)小時(shí)與大家進(jìn)行探討,希望在 座各位在培訓(xùn)過程中記錄下自己的問題; Oracle 體系結(jié)構(gòu); Oracle SQL優(yōu)化及編寫規(guī)范; 了解Oracle 體系架構(gòu); 掌握Oracle SQL優(yōu)化基本方法; Oracle SQL優(yōu)化典型

2、案例分析; 二、二、Oracle Oracle 體系結(jié)構(gòu)體系結(jié)構(gòu) 五、五、Oracle SQL Oracle SQL 編寫規(guī)范編寫規(guī)范 四、典型案例分析暨優(yōu)化要點(diǎn)四、典型案例分析暨優(yōu)化要點(diǎn) 三、三、Oracle SQL Oracle SQL 優(yōu)化基礎(chǔ)優(yōu)化基礎(chǔ) 一、培訓(xùn)目的一、培訓(xùn)目的培訓(xùn)總目錄培訓(xùn)總目錄OracleOracle服務(wù)器架構(gòu)服務(wù)器架構(gòu)OracleOracle內(nèi)存體系架構(gòu)內(nèi)存體系架構(gòu)OracleOracle進(jìn)程體系架構(gòu)進(jìn)程體系架構(gòu) 用戶進(jìn)程用戶進(jìn)程:在數(shù)據(jù)庫用戶或批處理進(jìn)程連接到在數(shù)據(jù)庫用戶或批處理進(jìn)程連接到 Oracle DB 時(shí)啟動(dòng)時(shí)啟動(dòng) 服務(wù)器進(jìn)程服務(wù)器進(jìn)程:連接到連接到Ora

3、cle 實(shí)例,在用戶建立實(shí)例,在用戶建立 會(huì)話時(shí)啟動(dòng)會(huì)話時(shí)啟動(dòng) 后臺(tái)進(jìn)程后臺(tái)進(jìn)程:在在Oracle 實(shí)例啟動(dòng)時(shí)啟動(dòng)實(shí)例啟動(dòng)時(shí)啟動(dòng)OracleOracle存儲(chǔ)體系架構(gòu)存儲(chǔ)體系架構(gòu)OracleOracle高可用性高可用性_ _雙機(jī)熱備雙機(jī)熱備優(yōu)點(diǎn)優(yōu)點(diǎn) 管理簡單管理簡單 相對(duì)較為穩(wěn)定相對(duì)較為穩(wěn)定缺點(diǎn)缺點(diǎn) 切換間存在停頓切換間存在停頓 備機(jī)空閑備機(jī)空閑 無擴(kuò)展性無擴(kuò)展性O(shè)racleOracle高可用性高可用性_ _雙機(jī)熱備切換雙機(jī)熱備切換OracleOracle高可用性高可用性_RAC_RAC優(yōu)點(diǎn)優(yōu)點(diǎn) 良好的可伸縮性、可擴(kuò)展性良好的可伸縮性、可擴(kuò)展性 高可用性高可用性 新進(jìn)的新進(jìn)的Cache Fusi

4、on技術(shù)技術(shù) 負(fù)載均衡負(fù)載均衡缺點(diǎn)缺點(diǎn) 管理復(fù)雜管理復(fù)雜 對(duì)網(wǎng)絡(luò)要求高對(duì)網(wǎng)絡(luò)要求高OracleOracle高可用性高可用性_RAC_RAC將應(yīng)用和用戶自動(dòng)而透明地重新連接到將應(yīng)用和用戶自動(dòng)而透明地重新連接到另一個(gè)系統(tǒng)另一個(gè)系統(tǒng)登錄的上下文可被保持登錄的上下文可被保持應(yīng)用查詢不會(huì)中斷應(yīng)用查詢不會(huì)中斷當(dāng)集群內(nèi)節(jié)點(diǎn)當(dāng)集群內(nèi)節(jié)點(diǎn) A A 失失敗敗, , 用戶被轉(zhuǎn)移用戶被轉(zhuǎn)移OracleOracle RACRAC負(fù)載均衡負(fù)載均衡 數(shù)據(jù)庫啟動(dòng)時(shí),向監(jiān)聽進(jìn)程注冊(cè)數(shù)據(jù)庫啟動(dòng)時(shí),向監(jiān)聽進(jìn)程注冊(cè) 節(jié)點(diǎn)向監(jiān)聽進(jìn)程報(bào)告節(jié)點(diǎn)向監(jiān)聽進(jìn)程報(bào)告CPU 的使用情況的使用情況 當(dāng)建立連接時(shí),監(jiān)聽進(jìn)程選擇最空閑的節(jié)點(diǎn)當(dāng)建立連接時(shí),

5、監(jiān)聽進(jìn)程選擇最空閑的節(jié)點(diǎn) 處理請(qǐng)求處理請(qǐng)求 二、二、Oracle Oracle 體系結(jié)構(gòu)體系結(jié)構(gòu) 五、五、Oracle SQL Oracle SQL 編寫規(guī)范編寫規(guī)范 四、典型案例分析暨優(yōu)化要點(diǎn)四、典型案例分析暨優(yōu)化要點(diǎn) 三、三、Oracle SQL Oracle SQL 優(yōu)化基礎(chǔ)優(yōu)化基礎(chǔ) 一、培訓(xùn)目的一、培訓(xùn)目的培訓(xùn)總目錄培訓(xùn)總目錄性能優(yōu)化概述性能優(yōu)化概述14 誰來調(diào)整系統(tǒng)誰來調(diào)整系統(tǒng) 應(yīng)用設(shè)計(jì)人員、應(yīng)用開發(fā)人員應(yīng)用設(shè)計(jì)人員、應(yīng)用開發(fā)人員 數(shù)據(jù)庫管理人員數(shù)據(jù)庫管理人員 什么時(shí)候調(diào)整什么時(shí)候調(diào)整 系統(tǒng)設(shè)計(jì)、系統(tǒng)開發(fā)過程系統(tǒng)設(shè)計(jì)、系統(tǒng)開發(fā)過程 系統(tǒng)運(yùn)行過程系統(tǒng)運(yùn)行過程 應(yīng)用系統(tǒng)類型應(yīng)用系統(tǒng)類型1

6、5 聯(lián)機(jī)事務(wù)處理(聯(lián)機(jī)事務(wù)處理(OLTPOLTP) 高吞吐量高吞吐量 增、刪、改多增、刪、改多 決策支持(決策支持(DSSDSS) 數(shù)據(jù)量大數(shù)據(jù)量大 主要用于查詢主要用于查詢 SQLSQL語句處理過程語句處理過程16 查詢語句處理查詢語句處理 DMLDML語句處理語句處理 (insertinsert、deletedelete、updateupdate) DDLDDL語句處理語句處理 (createcreate、dropdrop、alteralter)SQLSQL語句處理各個(gè)階段語句處理各個(gè)階段17SQLSQL語句處理必經(jīng)階段語句處理必經(jīng)階段18 第第1 1步步: Create a Cursor

7、 : Create a Cursor 創(chuàng)建游標(biāo)創(chuàng)建游標(biāo) 第第2 2步步: Parse the Statement : Parse the Statement 分析語句分析語句 第第5 5步步: Bind Any Variables : Bind Any Variables 綁定變量綁定變量 第第7 7步步: Run the Statement : Run the Statement 運(yùn)行語句運(yùn)行語句 第第9 9步步: Close the Cursor : Close the Cursor 關(guān)閉游標(biāo)關(guān)閉游標(biāo)SQLSQL語句處理可選階段語句處理可選階段19 并行功能并行功能 第第6 6步:步:Pa

8、rallelize the Statement Parallelize the Statement 并行執(zhí)行語并行執(zhí)行語句句 查詢語句查詢語句 第第3 3步:步:Describe Results of a Query Describe Results of a Query 描述查描述查詢的結(jié)果集詢的結(jié)果集 第第4 4步:步:Define Output of a QueryDefine Output of a Query 定義查詢的定義查詢的輸出數(shù)據(jù)輸出數(shù)據(jù) 第第8 8步:步:Fetch Rows of a QueryFetch Rows of a Query 取查詢出來的行取查詢出來的行DDL

9、DDL語句處理過程語句處理過程20 不同于不同于DMLDML語句和查詢語句的執(zhí)行語句和查詢語句的執(zhí)行 DDLDDL成功后需要對(duì)數(shù)據(jù)字典表進(jìn)行修改成功后需要對(duì)數(shù)據(jù)字典表進(jìn)行修改 分析階段還包括分析、查找數(shù)據(jù)字典分析階段還包括分析、查找數(shù)據(jù)字典 信息和執(zhí)行信息和執(zhí)行OracleOracle優(yōu)化器優(yōu)化器21 優(yōu)化優(yōu)化: : 選擇最有效的執(zhí)行計(jì)劃來執(zhí)行選擇最有效的執(zhí)行計(jì)劃來執(zhí)行 SQL SQL語句的過程語句的過程 優(yōu)化器優(yōu)化器: : 選擇執(zhí)行計(jì)劃的數(shù)據(jù)庫引擎選擇執(zhí)行計(jì)劃的數(shù)據(jù)庫引擎 基于規(guī)則(基于規(guī)則(RBORBO) 基于代價(jià)(基于代價(jià)(CBOCBO) OracleOracle統(tǒng)計(jì)信息統(tǒng)計(jì)信息22 影

10、響影響CBOCBO執(zhí)行計(jì)劃最關(guān)鍵的因素執(zhí)行計(jì)劃最關(guān)鍵的因素 分析的方法分析的方法 analyzeanalyze命令命令 dbms_statdbms_stat包包 分析的頻率分析的頻率 Oracle 10gOracle 10g自動(dòng)分析自動(dòng)分析共享共享SQLSQL語句語句23 儲(chǔ)存于共享池(儲(chǔ)存于共享池(shared_poolshared_pool) 判斷判斷SQLSQL語句是否與共享池中某一語句是否與共享池中某一SQLSQL相相同的步驟(同的步驟(CURSOR_SHARINGCURSOR_SHARING) 對(duì)所發(fā)出語句的文本串進(jìn)行對(duì)所發(fā)出語句的文本串進(jìn)行hashedhashed 將所發(fā)出語句的文

11、本串進(jìn)行比較將所發(fā)出語句的文本串進(jìn)行比較 將將SQLSQL中涉及的對(duì)象進(jìn)行比較中涉及的對(duì)象進(jìn)行比較基本概念基本概念24 ROWIDROWID 偽列,唯一。定位數(shù)據(jù)的最快方法偽列,唯一。定位數(shù)據(jù)的最快方法 索引創(chuàng)建時(shí)會(huì)記錄索引創(chuàng)建時(shí)會(huì)記錄ROWIDROWID值值 Driving TableDriving Table(驅(qū)動(dòng)表)(驅(qū)動(dòng)表): : 外層表,用于嵌套以及外層表,用于嵌套以及hashhash連接中連接中 可選擇性可選擇性: : “唯一鍵的數(shù)量唯一鍵的數(shù)量/ /表中的行數(shù)表中的行數(shù)”的比值的比值Oracle SQL Oracle SQL 執(zhí)行計(jì)劃執(zhí)行計(jì)劃25 SQLSQL語句語句: :SEL

12、ECT SELECT enameename, job, , job, salsal, , dnamedname FROM FROM empemp, , deptdept WHERE WHERE emp.deptnoemp.deptno = = dept.deptnodept.deptno AND NOT EXISTS AND NOT EXISTS ( SELECT ( SELECT * * FROM FROM salgradesalgrade WHERE WHERE emp.salemp.sal BETWEEN BETWEEN losallosal AND AND hisalhisal );

13、);Oracle SQL Oracle SQL 執(zhí)行計(jì)劃圖執(zhí)行計(jì)劃圖26Oracle SQL Oracle SQL 執(zhí)行計(jì)劃圖執(zhí)行計(jì)劃圖27訪問路徑訪問路徑28 全表掃描(全表掃描(FTSFTS) 通過通過rowidrowid的表存?。ǖ谋泶嫒。═able Access by rowidTable Access by rowid) 索引掃描(索引掃描(Index ScanIndex Scan) 索引唯一掃描索引唯一掃描(index unique scan)(index unique scan) 索引范圍掃描索引范圍掃描(index range scan)(index range scan) 索

14、引全掃描索引全掃描(index full scan)(index full scan) 索引快速掃描索引快速掃描(index fast full scan)(index fast full scan)表連接表連接29 表連接表連接JOIN:JOIN: 將兩個(gè)表結(jié)合在一起,一次只能連接將兩個(gè)表結(jié)合在一起,一次只能連接2 2個(gè)表,個(gè)表, 表連接也可以被稱為表關(guān)聯(lián)表連接也可以被稱為表關(guān)聯(lián) 排序排序合并連接(合并連接(Sort Merge JoinSort Merge Join) 嵌套循環(huán)(嵌套循環(huán)(Nested LoopsNested Loops) 哈希連接(哈希連接(Hash JoinHash J

15、oin)排序排序- -合并連接圖合并連接圖30嵌套循環(huán)連接圖嵌套循環(huán)連接圖31連接適用情況連接適用情況32 排序排序合并連接合并連接 非等值連接、關(guān)聯(lián)列都有索引非等值連接、關(guān)聯(lián)列都有索引 嵌套連接嵌套連接 驅(qū)動(dòng)表較小驅(qū)動(dòng)表較小 哈希連接哈希連接 等值連接等值連接生成執(zhí)行計(jì)劃生成執(zhí)行計(jì)劃33 sql set autotrace onsql set autotrace on sql explain plan for select sql explain plan for select 用用dbms_systemdbms_system存儲(chǔ)過程生成執(zhí)行計(jì)劃存儲(chǔ)過程生成執(zhí)行計(jì)劃 用用PL/SQL DEV

16、ELOPERPL/SQL DEVELOPER(F5F5)干預(yù)執(zhí)行計(jì)劃干預(yù)執(zhí)行計(jì)劃_ _訪問路徑訪問路徑34 FULL FULL / /* *+ FULL ( table ) + FULL ( table ) * */ / 指定該表使用指定該表使用FTSFTS INDEX INDEX / /* *+ INDEX ( table index) + INDEX ( table index) * */ / 使用該表上指定的索引對(duì)表進(jìn)行索引掃描使用該表上指定的索引對(duì)表進(jìn)行索引掃描 INDEX_FFS / INDEX_FFS /* *+ INDEX_FFS ( table index) + INDEX_F

17、FS ( table index) * */ / 使用快速全索引掃描使用快速全索引掃描 NO_INDEX / NO_INDEX /* *+ NO_INDEX ( table index) + NO_INDEX ( table index) * */ / 不使用該表上指定的索引進(jìn)行存取,仍然可以使用不使用該表上指定的索引進(jìn)行存取,仍然可以使用 其它的索引進(jìn)行索引掃描其它的索引進(jìn)行索引掃描干預(yù)執(zhí)行計(jì)劃干預(yù)執(zhí)行計(jì)劃_ _表連接表連接35 USE_NL / USE_NL /* *+ USE_NL ( tab ,tab, . ) + USE_NL ( tab ,tab, . ) * */ / 使用嵌套連

18、接使用嵌套連接 USE_MERGE / USE_MERGE /* *+ USE_MERGE ( tab ,tab,.) + USE_MERGE ( tab ,tab,.) * */ / 使用排序使用排序- - -合并連接合并連接 USE_HASH / USE_HASH /* *+ USE_HASH ( tab ,tab, .) + USE_HASH ( tab ,tab, .) * */ / 使用使用HASHHASH連接連接 二、二、Oracle Oracle 體系結(jié)構(gòu)體系結(jié)構(gòu) 五、五、Oracle SQL Oracle SQL 編寫規(guī)范編寫規(guī)范 四、典型案例分析暨優(yōu)化要點(diǎn)四、典型案例分析暨優(yōu)

19、化要點(diǎn) 三、三、Oracle SQL Oracle SQL 優(yōu)化基礎(chǔ)優(yōu)化基礎(chǔ) 一、培訓(xùn)目的一、培訓(xùn)目的培訓(xùn)總目錄培訓(xùn)總目錄典型案例典型案例_1_137 系統(tǒng)名稱:綜合集中維護(hù)支撐系統(tǒng)系統(tǒng)名稱:綜合集中維護(hù)支撐系統(tǒng) 故障現(xiàn)象:壓力測(cè)試系統(tǒng)故障現(xiàn)象:壓力測(cè)試系統(tǒng)CPUCPU資源資源100%100% 故障分析:故障分析: 數(shù)據(jù)庫實(shí)際的數(shù)據(jù)量僅為數(shù)據(jù)庫實(shí)際的數(shù)據(jù)量僅為6GB6GB左右。但是每左右。但是每天卻產(chǎn)生大概天卻產(chǎn)生大概150GB150GB左右的左右的REDO LOGREDO LOG 使用使用LOGMNRLOGMNR分析分析ORACLEORACLE日志,發(fā)現(xiàn)基本上日志,發(fā)現(xiàn)基本上都為都為JMSS

20、TOREJMSSTORE表的增、刪操作。該表為表的增、刪操作。該表為WEBLOGICWEBLOGIC的消息表的消息表(CLOBCLOB字段)字段)。典型案例典型案例_1_138 系統(tǒng)名稱:綜合集中維護(hù)支撐系統(tǒng)系統(tǒng)名稱:綜合集中維護(hù)支撐系統(tǒng) 故障處理:故障處理: 運(yùn)行相關(guān)查詢業(yè)務(wù),在數(shù)據(jù)庫中查詢運(yùn)行相關(guān)查詢業(yè)務(wù),在數(shù)據(jù)庫中查詢v$sqlareav$sqlarea,JMSSTOREJMSSTORE表相關(guān)操作的頻率表相關(guān)操作的頻率 對(duì)應(yīng)用進(jìn)行跟蹤調(diào)試,查找每筆查詢業(yè)務(wù)對(duì)應(yīng)用進(jìn)行跟蹤調(diào)試,查找每筆查詢業(yè)務(wù)所運(yùn)行的所運(yùn)行的SQLSQL 最終定位問題產(chǎn)生原因:應(yīng)用程序在每筆最終定位問題產(chǎn)生原因:應(yīng)用程序在

21、每筆查詢后面都附帶了消息傳輸(查詢后面都附帶了消息傳輸(1010次)次) 將該將該SQLSQL屏蔽,問題得到解決屏蔽,問題得到解決典型案例典型案例_2_239 系統(tǒng)名稱:系統(tǒng)名稱:OAOA系統(tǒng)系統(tǒng) 故障現(xiàn)象:故障現(xiàn)象:SQLSQL語句執(zhí)行速度慢(語句執(zhí)行速度慢(5S5S)select distinct select distinct b.fd_workflowname,a.fd_fileid,a.fd_c_filetitle,a.fd_c_enddateb.fd_workflowname,a.fd_fileid,a.fd_c_filetitle,a.fd_c_enddatefrom from

22、tb_model_workflowtb_model_workflow b,tb_documentb,tb_document c,tb_engine_filecommonc,tb_engine_filecommon a,tb_engine_filetachea,tb_engine_filetache g gwhere where a.fd_c_workflowida.fd_c_workflowid= =b.fd_workflowidb.fd_workflowid and and g.fd_fileidg.fd_fileid= =a.fd_fileida.fd_fileid and and a.f

23、d_c_fileno=c.ida.fd_c_fileno=c.idand and a.fd_c_isenda.fd_c_isend=1and =1and b.fd_workflowtypeb.fd_workflowtype=1 and (=1 and (c.security_level_codec.security_level_code=1 =1 or(or(c.security_level_codec.security_level_code=2 and =2 and g.fd_ft_staffidg.fd_ft_staffid=2)or =2)or ( (c.security_level_c

24、odec.security_level_code=3 and =3 and g.fd_ft_staffidg.fd_ft_staffid=2)=2)and and a.fd_c_enddatea.fd_c_enddate=(sysdate-30)and =(sysdate-30)and a.fd_c_enddatea.fd_c_enddate=(sysdate+1)=(sysdate+1)and (and (pany_pany_id=1 or =1 or c.send_companyc.send_company=1) =1) order by order by a.fd_c_enddatea.

25、fd_c_enddate descdesc; ;典型案例典型案例_2_240 系統(tǒng)名稱:系統(tǒng)名稱:OAOA系統(tǒng)系統(tǒng) 故障處理:故障處理: 查看該查看該sqlsql的執(zhí)行計(jì)劃的執(zhí)行計(jì)劃 tb_engine_filecommontb_engine_filecommon表為表為FTSFTS(full full table scantable scan),而且),而且costcost大大典型案例典型案例_2_241 系統(tǒng)名稱:系統(tǒng)名稱:OAOA系統(tǒng)系統(tǒng) 故障處理:故障處理: 查詢?cè)摫聿樵冊(cè)摫韋d_c_enddatefd_c_enddate的可選擇性的可選擇性,發(fā)現(xiàn)發(fā)現(xiàn)很高,因此對(duì)該字段建索引,很高,因

26、此對(duì)該字段建索引,執(zhí)行計(jì)劃變?yōu)閳?zhí)行計(jì)劃變?yōu)槿缦?,?zhí)行時(shí)間縮短為如下,執(zhí)行時(shí)間縮短為0.3S0.3S左右左右典型案例典型案例_3_342 系統(tǒng)名稱:商務(wù)領(lǐng)航系統(tǒng)系統(tǒng)名稱:商務(wù)領(lǐng)航系統(tǒng) 故障現(xiàn)象:出賬速度慢故障現(xiàn)象:出賬速度慢 故障處理:故障處理: 查找查找V$SESSIONV$SESSION中正在長時(shí)間運(yùn)行的中正在長時(shí)間運(yùn)行的SQLSQLupdate update zjxc.BIZ_CUST_BALANCEzjxc.BIZ_CUST_BALANCE t set t set t.warefeet.warefee = 0 where = 0 where t.cusidt.cusid in in (s

27、elect (select b.cusidb.cusid from _cusid_temp_0401 b) and from _cusid_temp_0401 b) and t.year_montht.year_month = 201003; = 201003; 表表biz_cusid_temp_0401biz_cusid_temp_0401為為FTSFTS,但,但cusidcusid字段建有索引字段建有索引典型案例典型案例_3_343 系統(tǒng)名稱:商務(wù)領(lǐng)航系統(tǒng)系統(tǒng)名稱:商務(wù)領(lǐng)航系統(tǒng) 故障處理:故障處理: 改寫上述改寫上述SQLSQL語句語句update upda

28、te _cust__cust_balance t set t set t.warefeet.warefee = 0 where = 0 where exists (select 1 from _cusid_temp_0401 b exists (select 1 from _cusid_temp_0401 b where where t.cusidt.cusid= =b.cusidb.cusid and and t.year_montht.year_month = 201003) ; = 201003) ; 表表bi

29、z_cusid_temp_0401biz_cusid_temp_0401的訪問從的訪問從FTSFTS改變改變?yōu)樗饕ㄒ粧呙铻樗饕ㄒ粧呙?SQL SQL執(zhí)行時(shí)間縮短為執(zhí)行時(shí)間縮短為1212秒秒典型案例典型案例_4_444 系統(tǒng)名稱:系統(tǒng)名稱:CRMCRM系統(tǒng)系統(tǒng) 故障現(xiàn)象:過多的故障現(xiàn)象:過多的latch freelatch free鎖影響性能鎖影響性能 故障處理:故障處理: 查找查找latch freelatch free對(duì)應(yīng)的相關(guān)語句,都為對(duì)應(yīng)的相關(guān)語句,都為SELECT COL_VALUE FROM PUB_COLUMN_REFERENCE WHERE REFER_ID = :B1SEL

30、ECT COL_VALUE FROM PUB_COLUMN_REFERENCE WHERE REFER_ID = :B1 而該而該SQLSQL語句都為函數(shù)語句都為函數(shù)GET_COLUMN_VALUEGET_COLUMN_VALUE調(diào)用所產(chǎn)生調(diào)用所產(chǎn)生 查詢調(diào)用該函數(shù)的相關(guān)可疑查詢調(diào)用該函數(shù)的相關(guān)可疑SQLSQL語句語句典型案例典型案例_4_445 系統(tǒng)名稱:系統(tǒng)名稱:CRMCRM系統(tǒng)系統(tǒng) 故障處理:故障處理: 定位定位SQLSQL有相關(guān)子查詢調(diào)用了該函數(shù)有相關(guān)子查詢調(diào)用了該函數(shù) 對(duì)該對(duì)該SQLSQL進(jìn)行進(jìn)行tracetrace跟蹤,發(fā)現(xiàn)該跟蹤,發(fā)現(xiàn)該SQLSQL每執(zhí)行每執(zhí)行一次,將會(huì)調(diào)用該函數(shù)

31、一次,將會(huì)調(diào)用該函數(shù)3835538355次,也就是說次,也就是說latch freelatch free相應(yīng)的相應(yīng)的SQLSQL將被執(zhí)行將被執(zhí)行3835538355次次 修改相關(guān)應(yīng)用(修改相關(guān)應(yīng)用(cachecache相關(guān)刷新機(jī)制)相關(guān)刷新機(jī)制)Oracle SQLOracle SQL優(yōu)化要點(diǎn)優(yōu)化要點(diǎn)46 使用執(zhí)行計(jì)劃來分析使用執(zhí)行計(jì)劃來分析SQLSQL性能進(jìn)而進(jìn)行優(yōu)化性能進(jìn)而進(jìn)行優(yōu)化 使用使用HINTSHINTS來干預(yù)執(zhí)行計(jì)劃來干預(yù)執(zhí)行計(jì)劃 最大限度地避免全表掃描(最大限度地避免全表掃描(FTSFTS) 減少子查詢的使用減少子查詢的使用 規(guī)范規(guī)范SQLSQL語句的編寫,使得語句的編寫,使得S

32、QLSQL語句能夠被共享語句能夠被共享 減少減少SQLSQL解析的次數(shù):使用綁定變量解析的次數(shù):使用綁定變量Oracle SQLOracle SQL優(yōu)化要點(diǎn)優(yōu)化要點(diǎn)47 用索引提高效率用索引提高效率 避免在索引列上使用計(jì)算避免在索引列上使用計(jì)算 避免在索引列上使用函數(shù)轉(zhuǎn)換避免在索引列上使用函數(shù)轉(zhuǎn)換 避免改變索引列的類型避免改變索引列的類型 避免在索引列上使用避免在索引列上使用IS NULLIS NULL和和IS NOT IS NOT NULLNULL 避免在索引列上使用避免在索引列上使用like%AAAlike%AAAOracle SQLOracle SQL優(yōu)化要點(diǎn)優(yōu)化要點(diǎn)48 盡量避免盡量避

33、免SQLSQL語句不必要的排序操作語句不必要的排序操作 UNIONUNION操作要用操作要用UNION ALLUNION ALL來代替來代替 ORDER BY ORDER BY 中的字段最好建立索引中的字段最好建立索引 盡量避免使用盡量避免使用DISTINCTDISTINCT語句語句 盡量避免使用盡量避免使用(NOT) IN(NOT) IN,而使用(,而使用(NOTNOT) EXISTSEXISTS來代替來代替 對(duì)表超過對(duì)表超過10%10%以上的以上的deletedelete、updateupdate操作要重操作要重建索引。建索引。 五、五、Oracle SQL Oracle SQL 編寫規(guī)范

34、編寫規(guī)范 二、二、Oracle Oracle 體系結(jié)構(gòu)體系結(jié)構(gòu) 四、典型案例分析暨優(yōu)化要點(diǎn)四、典型案例分析暨優(yōu)化要點(diǎn) 三、三、Oracle SQL Oracle SQL 優(yōu)化基礎(chǔ)優(yōu)化基礎(chǔ) 一、培訓(xùn)目的一、培訓(xùn)目的培訓(xùn)總目錄培訓(xùn)總目錄SQLSQL編寫規(guī)范編寫規(guī)范_ _書寫格式書寫格式50 縮進(jìn)縮進(jìn) 對(duì)于存儲(chǔ)過程文件,縮進(jìn)為對(duì)于存儲(chǔ)過程文件,縮進(jìn)為8 8個(gè)空格個(gè)空格 對(duì)于對(duì)于Java SourceJava Source里的里的SQLSQL字符串,不可有字符串,不可有縮進(jìn),即每一行字符串不以空格開頭縮進(jìn),即每一行字符串不以空格開頭 空格空格 SQL SQL內(nèi)算數(shù)運(yùn)算符、邏輯運(yùn)算符連接的兩個(gè)內(nèi)算數(shù)運(yùn)算符、邏輯運(yùn)算符連接的兩個(gè)元素之間必須用空格分隔元素之間必須用空格分隔 逗號(hào)之后必須接一個(gè)空格逗號(hào)之后必須接一個(gè)空格 關(guān)鍵字、保留字和左括號(hào)間必有一個(gè)空格關(guān)鍵字、保留字和左括號(hào)間必有一個(gè)空格SQLSQL編寫規(guī)范編寫規(guī)范_ _書寫格式書寫格式51 換行換行_1_1 Select/From/Where/O

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論