qileilove

          blog已經(jīng)轉(zhuǎn)移至github,大家請訪問 http://qaseven.github.io/

          Oracle數(shù)據(jù)庫的DML命令的處理過程詳解

            Oracle數(shù)據(jù)庫的DML命令的處理過程是本文我們主要要介紹的內(nèi)容,從Oracle 9i起,有兩種undo的管理方式:自動Undo管理(Automatic Undo Management,簡稱AUM)和手工Undo管理(Manual Undo Management,簡稱MUM)。Oracle 9i之前只能使用MUM,而且在MUM中,undo segment又叫做rollback segment。從Oracle 9i起,Oracle就建議使用AUM,而不應(yīng)再使用MUM了。

            DML語句與undo

            當(dāng)我們發(fā)出一條DML(比如update tab set col1='A' where col1='B')語句時,其執(zhí)行過程可大致概括為以下幾步。

            1、在shared pool里進(jìn)行解析,從而生成執(zhí)行計劃。

            2、假設(shè)根據(jù)執(zhí)行計劃,得出col1='B'的記錄存放在10號數(shù)據(jù)文件的54號數(shù)據(jù)塊里。

            3、服務(wù)器進(jìn)程在buffer cache里找一個可用的undo數(shù)據(jù)塊,如果沒有發(fā)現(xiàn),則到undo表空間里找一個可用的undo塊,并調(diào)入buffer cache。假設(shè)獲得的undo數(shù)據(jù)塊號為24號,位于11號undo數(shù)據(jù)文件里。

            4、將改變前的值,也就是A放入11號undo數(shù)據(jù)塊。

            5、由于undo數(shù)據(jù)塊發(fā)生了變化,于是產(chǎn)生重做記錄,假設(shè)重做記錄號為120。

            行號 事務(wù)id file# block# row column value

            120 T1 24 11 10 col1 A

            6、在buffer cache里找到54號數(shù)據(jù)塊。如果沒有發(fā)現(xiàn),則從10號數(shù)據(jù)文件里調(diào)入。

            7、將改變后的值,也就是B放入54號數(shù)據(jù)塊。

            8、由于數(shù)據(jù)塊發(fā)生了變化,于是產(chǎn)生重做記錄,假設(shè)重做記錄號為121。

            行號 事務(wù)id file# block# row column value

            121 T1 10 54 10 col1 B

            9、控制權(quán)返回給用戶,如果在SQL*Plus里執(zhí)行DML,則表現(xiàn)為光標(biāo)返回。

            10、當(dāng)用戶發(fā)出commit命令時,觸發(fā)LGWR進(jìn)程,將120與121這兩個重做記錄寫入聯(lián)機(jī)日志文件,并將54號數(shù)據(jù)塊和11號undo數(shù)據(jù)塊頭部所記錄的事務(wù)狀態(tài)標(biāo)記設(shè)置為已提交。然后控制權(quán)返回給用戶,如果在SQL*Plus里執(zhí)行DML操作,則表現(xiàn)為光標(biāo)返回。

            11、這個時候,54號數(shù)據(jù)塊以及11號undo塊并不一定被DBWn寫入數(shù)據(jù)文件。只有在臟數(shù)據(jù)塊的數(shù)量達(dá)到一定程度才會被寫入。

            事務(wù)只要被提交或回滾,那么該事務(wù)所使用的undo塊就可以被覆蓋。對于上面的例子來說,當(dāng)?shù)?0步,用戶發(fā)出commit命令以后,11號undo塊里的數(shù)據(jù)就可以被其他事務(wù)所覆蓋。

            關(guān)于Oracle數(shù)據(jù)庫的DML命令的處理過程的相關(guān)知識就介紹到這里了,希望本次的介紹能夠?qū)δ兴斋@!

          posted on 2012-05-14 09:57 順其自然EVO 閱讀(186) 評論(0)  編輯  收藏 所屬分類: 數(shù)據(jù)庫

          <2012年5月>
          293012345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          導(dǎo)航

          統(tǒng)計

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 潮州市| 罗平县| 枞阳县| 镇雄县| 夏河县| 抚顺市| 温州市| 山东省| 株洲市| 沅陵县| 平江县| 郓城县| 辛集市| 灵武市| 应城市| 来宾市| 成都市| 临武县| 大悟县| 灌南县| 教育| 德江县| 湘潭县| 二连浩特市| 县级市| 金溪县| 宜兰市| 长汀县| 独山县| 金湖县| 仁寿县| 呼图壁县| 来安县| 沾化县| 六盘水市| 都安| 元江| 泾阳县| 廊坊市| 秦皇岛市| 延寿县|