資源描述:
《oracle開發(fā)分享》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、1Oracle概念31.1.Oracle服務(wù)器概述31.1.1.應(yīng)用體系結(jié)構(gòu)31.1.2.進(jìn)程體系結(jié)構(gòu)51.1.3.內(nèi)存體系結(jié)構(gòu)81.1.4.邏輯結(jié)構(gòu)111.2.基本的索引原理141.2.1.衡量索引指標(biāo)之一:選擇性141.2.2.衡量索引指標(biāo)之二:集群因子141.2.3.B樹索引151.2.4.二元高度161.2.5.基本的索引概念171.3.選擇訪問路徑191.4.表的連接191.4.1.連接類型介紹191.5.組合索引232.SQL性能規(guī)則與建議232.1.綁定變量,共享SQL語句232.2.避免不匹配的數(shù)據(jù)類型比較(隱式數(shù)據(jù)類型轉(zhuǎn)
2、換)242.3.OR查詢與NO_EXPAND提示242.4.在select和where中使用索引242.5.在內(nèi)存中緩存表242.6.Append提示改善insert性能242.7.分布式查詢242.8.用exist代替distinct252.9.避免在索引列上使用計(jì)算262.10.用>=替代>262.11.用TRUNCATE替代DELETE刪除全表262.12.大事務(wù)多使用COMMIT262.13.避免在索引列上使用ISNULL和ISNOTNULL262.14.用Where子句替換HAVING子句:272.15.使用WITHAS語句減少
3、訪問基表的次數(shù)272.16.hint的使用282.17.基于規(guī)則優(yōu)化器的默認(rèn)選擇323.SQL調(diào)試323.1.通過V$SQLAREA查找有問題的查詢333.2.實(shí)時(shí)查詢最耗CPU資源的SQL語句333.3.怎樣看懂Oracle的執(zhí)行計(jì)劃333.4.Oracle優(yōu)化器介紹334.SQL性能監(jiān)控344.1.常用視圖介紹344.1.1.v$sqlarea344.1.2.v$sql364.1.3.v$sqltext364.1.4.v$session364.1.5.v$Lock414.1.6.v$locked_object414.2.鎖查詢424.
4、2.1.Oracle的TM鎖類型424.2.2.鎖查詢424.2.3.解鎖434.3.查看表空間大小434.4.查看表大小43orderby3desc435oracleSQL開發(fā)工具介紹43PL/SQLdeveloper431Oracle概念1.1.Oracle服務(wù)器概述數(shù)據(jù)庫是一個(gè)數(shù)據(jù)的集合,不僅是指物理上的數(shù)據(jù),也指物理、存儲(chǔ)及進(jìn)程對(duì)象的一個(gè)集合。下面主要從應(yīng)用結(jié)構(gòu),進(jìn)程結(jié)構(gòu),內(nèi)存結(jié)構(gòu),邏輯結(jié)構(gòu)等幾個(gè)方面對(duì)其進(jìn)行描述:1.1.1.應(yīng)用體系結(jié)構(gòu)在一個(gè)Oracle數(shù)據(jù)庫系統(tǒng)中,數(shù)據(jù)庫應(yīng)用程序與數(shù)據(jù)庫被分為兩部分:前端(front-end)
5、或稱為客戶端(client);后臺(tái)(back-end)或稱為服務(wù)端(server)——這就是客戶端/服務(wù)器體系結(jié)構(gòu)(client/serverarchitecture)名字的由來??蛻舳诉\(yùn)行數(shù)據(jù)庫應(yīng)用程序,此程序能夠從數(shù)據(jù)庫獲取數(shù)據(jù),并通過鍵盤,鼠標(biāo),顯示器之類的設(shè)備和用戶交互。服務(wù)端運(yùn)行Oracle數(shù)據(jù)庫程序,這些程序能實(shí)現(xiàn)多用戶并發(fā)、共享地訪問數(shù)據(jù)庫。目前的應(yīng)用結(jié)構(gòu)有:客戶端/服務(wù)器體系結(jié)構(gòu)和多層體系結(jié)構(gòu)。圖1-1客戶端/服務(wù)器體系結(jié)構(gòu)及分布式處理圖1-2多層體系結(jié)構(gòu)示例1.1.1.進(jìn)程體系結(jié)構(gòu)1.1.1.1.進(jìn)程的種類l執(zhí)行應(yīng)用程序
6、或Oracle工具代碼的用戶進(jìn)程(userprocess)l執(zhí)行Oracle數(shù)據(jù)庫服務(wù)器代碼的Oracle進(jìn)程(Oracleprocess)。其中包括服務(wù)進(jìn)程(serverprocess)和后臺(tái)進(jìn)程(backgroundprocess)圖1-3顯示了一個(gè)運(yùn)行在專用服務(wù)器模式下的Oracle實(shí)例。每個(gè)連接到系統(tǒng)的用戶擁有一個(gè)獨(dú)立的用戶進(jìn)程,同時(shí)系統(tǒng)中還存在多個(gè)運(yùn)行Oracle模塊的后臺(tái)進(jìn)程圖1-3中間為SGA。其上為用戶進(jìn)程,及表示各進(jìn)程與SGA交換數(shù)據(jù)的雙向箭頭。其下為Oracle進(jìn)程(后臺(tái)進(jìn)程),例如RECO,PMON,SMON,DBW
7、n,LGWR和ARC0。在各Oracle進(jìn)程與SGA間也有表示數(shù)據(jù)交換的雙向箭頭。1.1.1.1.連接與會(huì)話連接(connection)與會(huì)話(session)這兩個(gè)概念均與用戶進(jìn)程(userprocess)緊密相關(guān),但二者又具有不同的含義。連接是用戶進(jìn)程和Oracle實(shí)例間的通信通道(communicationpathway)。這個(gè)通信通道是通過進(jìn)程間的通信機(jī)制(interprocesscommunicationmechanisms)或網(wǎng)絡(luò)軟件(networksoftware)建立的。會(huì)話是用戶通過用戶進(jìn)程與Oracle實(shí)例建立的連接[
8、此處連接與上文中的連接含義不同,主要指用戶和數(shù)據(jù)庫間的聯(lián)系]。例如,當(dāng)用戶啟動(dòng)SQL*Plus時(shí)必須提供有效的用戶名和密碼,之后Oracle為此用戶建立一個(gè)會(huì)話。從用戶開始連接到用戶斷開連接(