與 Oracle DB 交互
以下的演示樣例從最主要的層面描寫敘述 Oracle DB 操作。該演示樣例說明了一種 Oracle DB 配置,在該配置中,用戶和關(guān)聯(lián)server進(jìn)程執(zhí)行于通過網(wǎng)絡(luò)連接的不同計(jì)算機(jī)上。
1.?在安裝了 Oracle DB 的節(jié)點(diǎn)(通常稱為“主機(jī)”或“數(shù)據(jù)庫server”)上啟動(dòng)了一個(gè)實(shí)例。
2.?用戶啟動(dòng)一個(gè)應(yīng)用程序,該應(yīng)用程序衍生了一個(gè)用戶進(jìn)程。該應(yīng)用程序嘗試建立一個(gè)與server的連接(此連接可能是本地連接、客戶機(jī)/server連接或來自中間層的三層連接)。
3.?server執(zhí)行具有對(duì)應(yīng) Oracle Net Services 處理程序的監(jiān)聽程序。監(jiān)聽程序檢測(cè)到應(yīng)用程序發(fā)出的連接請(qǐng)求,并創(chuàng)建一個(gè)代表用戶進(jìn)程的專用server進(jìn)程。
4.?用戶執(zhí)行一條 DML 類型的 SQL 語句并提交事務(wù)處理。比如,用戶更改表中的客戶地址并提交更改。
5.?server進(jìn)程接收該語句,并檢查共享池(一個(gè) SGA 組件)中是否有包括同樣 SQL 語句的共享 SQL 區(qū)域。假設(shè)找到共享 SQL 區(qū)域,server進(jìn)程將檢查用戶對(duì)于所請(qǐng)求數(shù)據(jù)的訪問權(quán)限,而且使用現(xiàn)有的共享 SQL 區(qū)域處理該語句。假設(shè)未找到共享 SQL 區(qū)域,則為該語句分配一個(gè)新的共享 SQL 區(qū)域,以便對(duì)該語句進(jìn)行語法分析和處理。
6. server進(jìn)程從實(shí)際數(shù)據(jù)文件(表)或數(shù)據(jù)庫緩沖區(qū)快速緩存中存儲(chǔ)的值中檢索不論什么必需的數(shù)據(jù)值。
7. server進(jìn)程改動(dòng) SGA 中的數(shù)據(jù)。由于提交了事務(wù)處理,所以日志寫進(jìn)程 (LGWR) 會(huì)馬上將該事務(wù)處理記錄到重做日志文件里。數(shù)據(jù)庫寫進(jìn)程 (DBWn) 會(huì)待運(yùn)行效率高時(shí)將改動(dòng)后的塊永久寫入磁盤。?
8. 假設(shè)事務(wù)處理成功,server進(jìn)程將通過網(wǎng)絡(luò)向應(yīng)用程序發(fā)送一條消息。假設(shè)事務(wù)處理不成功,則傳送一條錯(cuò)誤消息。
9. 在整個(gè)過程中,其他后臺(tái)進(jìn)程同一時(shí)候在執(zhí)行,用于監(jiān)視是否有須要干預(yù)的情況。此外,數(shù)據(jù)庫server管理其他用戶的事務(wù)處理,并防止在請(qǐng)求同樣數(shù)據(jù)的事務(wù)處理之間發(fā)生爭(zhēng)用。
?
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
