oracle查詢(xún)表建表語(yǔ)句 oracle解析規(guī)則?
oracle解析規(guī)則?SQL的處理過(guò)程描述如下:1.檢查是否有打開(kāi)的光標(biāo)。如果有,直接通過(guò)光標(biāo)鏈接到位于PGA中的私有SQL區(qū)(private SQL AREA),轉(zhuǎn)到步驟11。否則,執(zhí)行步驟2。2.
oracle解析規(guī)則?
SQL的處理過(guò)程描述如下:
1.檢查是否有打開(kāi)的光標(biāo)。如果有,直接通過(guò)光標(biāo)鏈接到位于PGA中的私有SQL區(qū)(private SQL AREA),轉(zhuǎn)到步驟11。否則,執(zhí)行步驟2。
2.檢查是否設(shè)置了初始化參數(shù)SESSION_CACHED_CURSORS。如果設(shè)置了,還可以通過(guò)光標(biāo)指向位于PGA中的私有SQL區(qū)域,轉(zhuǎn)到步驟11。否則,轉(zhuǎn)到步驟3。
3.檢查保持光標(biāo)和釋放光標(biāo)的設(shè)置。如果RELEASE_CURSORno(缺省no)和HOLD_CURSORyes(缺省no),當(dāng)ORACLE執(zhí)行完SQL語(yǔ)句后,為私有SQL區(qū)分配的內(nèi)存空間被保留,游標(biāo)和私有SQL區(qū)之間的鏈接也被保留,預(yù)編譯器將不再使用它。同樣,可以通過(guò)這個(gè)指針直接在private SQL區(qū)域獲取語(yǔ)句,并轉(zhuǎn)到步驟11。
以上三種情況,實(shí)際上沒(méi)有parse,語(yǔ)句直接從位于PGA的私有SQL區(qū)域獲取,直接執(zhí)行。這是快速解析。
當(dāng)這三個(gè)條件都不存在時(shí),oracle執(zhí)行第4步。
4.創(chuàng)建一個(gè)光標(biāo)。
5.語(yǔ)法檢查:檢查語(yǔ)法書(shū)寫(xiě)是否正確,是否符合SQL參考手冊(cè)中給出的SQL語(yǔ)法。
6.語(yǔ)義分析:查找數(shù)據(jù)字典,檢查表和列是否正確,獲取所需對(duì)象的解析鎖,使這些對(duì)象的定義在句子解析過(guò)程中不會(huì)改變,驗(yàn)證是否滿(mǎn)足訪問(wèn)所涉及的schema對(duì)象所需的權(quán)限。
7.將語(yǔ)句轉(zhuǎn)換成ASCII等價(jià)的數(shù)字代碼,然后通過(guò)哈希算法得到哈希值。
8.檢查庫(kù)緩存中是否存在具有相同哈希值的語(yǔ)句。如果是,請(qǐng)轉(zhuǎn)到步驟11。否則,轉(zhuǎn)到步驟9。這是軟解析。
9.選擇執(zhí)行計(jì)劃。從可用的執(zhí)行計(jì)劃中選擇一個(gè)最佳執(zhí)行計(jì)劃,包括與存儲(chǔ)的大綱或?qū)嶓w化視圖相關(guān)的決策。
10.生成語(yǔ)句的編譯代碼(p代碼)。
11.執(zhí)行語(yǔ)句。
當(dāng)一個(gè)會(huì)話執(zhí)行一個(gè)語(yǔ)句時(shí),該語(yǔ)句的解析結(jié)果將被保存在庫(kù)緩存中,并且在PGA 的私有sql區(qū)域。銅Rsor總是通過(guò)一個(gè)鏈接直接鏈接到私有sql區(qū)域。如果在private中沒(méi)有找到這個(gè)副本,您需要解析SQL,然后匹配庫(kù)緩存中的哈希值。所以一般來(lái)說(shuō),您可以使用cursor而不進(jìn)行任何解析,因?yàn)槟苯訌漠?dāng)前的私有sql區(qū)域獲得了與語(yǔ)句相關(guān)的信息,包括執(zhí)行計(jì)劃。一旦需要在庫(kù)緩存中進(jìn)行匹配,就必須進(jìn)行解析。
Softppars
什么是oracle實(shí)例,寫(xiě)出在oracle如何查找實(shí)例名的sql語(yǔ)句?
oracle分為oracle實(shí)例和Oracle數(shù)據(jù)庫(kù)文件。
1.實(shí)例是指內(nèi)存結(jié)構(gòu),包括Sga、SGA和后臺(tái)進(jìn)程,都命名為實(shí)例名。
2.數(shù)據(jù)文件是用于存儲(chǔ)數(shù)據(jù)的文件。
在關(guān)閉狀態(tài)下,數(shù)據(jù)庫(kù)文件存在于磁盤(pán)上,用戶(hù)要讀寫(xiě)記錄需要打開(kāi)數(shù)據(jù)庫(kù),也就是打開(kāi)或建立實(shí)例的過(guò)程,也就是在內(nèi)存中劃出一塊內(nèi)存,建立各種后臺(tái)進(jìn)程。然后用戶(hù)通過(guò)一個(gè)進(jìn)程操作內(nèi)存,另一個(gè)進(jìn)程將內(nèi)存寫(xiě)入數(shù)據(jù)庫(kù)文件。用戶(hù)不能直接操作數(shù)據(jù)庫(kù)文件。
在單實(shí)例狀態(tài)下,一般實(shí)例名和數(shù)據(jù)庫(kù)名可以相同,也可以不同。但是我們要注意區(qū)分這兩個(gè)概念。
一般不建議修改數(shù)據(jù)庫(kù)名,但是有官方的方法可以修改。