色综合图-色综合图片-色综合图片二区150p-色综合图区-玖玖国产精品视频-玖玖香蕉视频

您的位置:首頁技術文章
文章詳情頁

Oracle數據操作和控制語言詳解(二)

瀏覽:110日期:2023-11-17 17:20:45
事務控制事務控制包括協調對相同數據的多個同步的訪問。當一個用戶改變了另一個用戶正在使用的數據時,Oracle使用事務控制誰可以操作數據。事務事務表示工作的一個基本單元,是一系列作為一個單元被成功或不成功操作的SQL語句。 在SQL和PL/SQL中有很多語句讓程序員控制事務。程序員可以: 1、顯式開始一個事物,選擇語句級一致性或事務級一致性 2、設置撤銷回滾點,并回滾到回滾點3、完成事務永遠改變數據或者放棄修改。事務控制語句 語句 用途 Commit 完成事務,數據修改成功并對其他用戶開放 Rollback 撤銷事務,撤銷所有操作 rollback to savepoint 撤銷在設置的回滾點以后的操作 set transaction 響應事務或語句的一致性;非凡對于事務使用回滾段例: BEGINUPDATE checkingSET balance=balance-5000WHERE account='Kieesha';INSERT INTO checking_log(action_date,action,amount)VALUES (SYSDATE,'Transfer to brokerage',-5000);UPDATE brokerageSET cash_balance=cash_balance+5000WHERE account='Kiesha';INSERT INTO brokerage_log(action_date,action,amount)VALUES (SYSDATE,'Tracfer from checking',5000)COMMITEXCEPTIONWHEN OTHERSROLLBACKENDSavepoint 和 部分回滾(Partial Rollback)在SQL和PL/SQL中Savepoint是在一事務范圍內的中間標志。經常用于將一個長的事務劃分為小的部分。保留點Savepoint可標志長事務中的任何點,答應可回滾該點之后的操作。在應用程序中經常使用Savepoint;例如一過程包含幾個函數,在每個函數前可建立一個保留點,假如函數失敗,很輕易返回到每一個函數開始的情況。在回滾到一個Savepoint之后,該Savepoint之后所獲得的數據封鎖被釋放。為了實現部分回滾可以用帶TO Savepoint子句的ROLLBACK語句將事務回滾到指定的位置。例 BEGIN INSERT INTO ATM_LOG(who,when,what,where)VALUES ('Kiesha',SYSDATE,'Withdrawal of $100','ATM54')SAVEPOINT ATM_LOGGED;UPDATE checkingSET balance=balance-100RETURN balance INTO new_balance;IF new_balance<0THENROLLBACK TO ATM_LOGGED;COMMITRAISE insufficient_funda;END IFEND 要害字SAVEPOINT是可選的,所以下面兩個語句是等價的: ROLLBACK TO ATM_LOGGED;ROLLBACK TO SAVEPOINT ATM_LOGGED;一致性和事務一致性是事物控制的要害慨念。把握了oracle 的一致性模型,能使您更好的,更恰當的使用事務控制。oracle通過一致性保證數據只有在事務全部完成后才能被用戶看見和使用。這項技術對多用戶數據庫有巨大的作用。oracle經常使用語句級(state-level)一致性,保證數據在語句的生命期之間是可見的但不能被改變。事務由多個語句組成,當使用事務時,事物級(transaction-level)一致性在整個事務生命期中保證數據對所有語句都是可見的。oracle通過SCN(syatem change number)實施一致性。一個SCN是一個面向時間的數據庫內部鍵。SCN只會增加不會減少,SCN表示了時間上的一個點,每個數據塊都有一個SCN,通過比較這個點實施操作。事務級一致性SET TRANSACTION 的一個作用是確保事務級一致或語句級一致中有一個實施。ORACLE使用這些術語: ISOLATION LEVEL READ COMMIT 表示語句級一致 ISOLATION LEVEL SERIALIZABLE 表示事務級一致。例: SET TRANSACTION ISOLATION LEVEL READ COMMIT;SET TRANSACTION ISOLATION LEVEL READ COMMIT下面的語句也能確保事務級一致: SET TRANSCATION READ ONLY任何企圖在只讀(READ ONLY)事務中修改數據的操作都會拋出一個異常。但是,READ ONLY事務只能在下列語句中使用: SELECT(沒有FOR UPDATE子句)LOCK TABLESET ROLEALTER SYSTEMALTER ALARM即使沒有改變任何數據,READ ONLY事務依然必須使用一個COMMIT或ROLLBACK以結束整個事務。SET TRANSCTION的另外一個應用是在回滾時直接使用回滾段(ROLLBACK SEGMENT)。回滾段是ORACLE的一個非凡的數據對象,回滾段的頭部包含正在使用該回滾段事務的信息。當用戶回滾事務(ROLLBACK)時,ORACLE將會利用回滾段中的數據前影像來將修改的數據恢復到原來的值。oracle用round-robin給事務隨機分配回滾段。一個大的事務可以分配任何回滾段,這也許會導致回滾段的大小變得很大。因此要避免讓大的事務隨機分配回滾段。事務以SET TRANSACTION開始,象下面這樣: SET TRANSACTION USE ROLLBACK SEGMENT rb_large;rb_large是一個大的回滾段的名稱,現在就給一個大的事務分配了一個大的回滾段,其他的小的回滾段將不由動態空間治理,這樣就更有效率。 下面我們看一個例子.我們有一個回滾段表空間大小是2G,在高峰時期需要10個回滾段以滿足用戶的需要,這些高峰在線用戶只有小的事務。一周我們連續運行了4個大的事務,這些事務需要刪除和加載數據,每一個撤銷需要1G,回滾段的大小如下: rb_large(initial 100M minextenta 2)rb1 (initial 1M next minextents 5) rb2 (initial 1M next minextents 5)rb3 (initial 1M next minextents 5)rb4 (initial 1M next minextents 5)rb5 (initial 1M next minextents 5)rb6 (initial 1M next minextents 5)rb7 (initial 1M next minextents 5)rb8 (initial 1M next minextents 5)rb9 (initial 1M next minextents 5)rb10 (initial 1M next minextents 5) 所有的都非常恰當的安排在2G的表空間中,假如我們缺省的round-robin給事務分配回滾段,4個大事務將有4個獨立的回滾段,每個回滾段的大小將是1G,假如這樣我們的2G表空間就不夠,而數據庫治理員就不得不在夜晚2點起來工作,每個事務都由以下面的語句開始: SET TRANSACTION USE ROLLBACK SEGMENT rb_large 現在 4個事務重用相同的表空間,保正4個回滾段的表空間在2G以內。數據庫治理員可以睡到天亮。
標簽: Oracle 數據庫
主站蜘蛛池模板: 日本在线看小视频网址 | 羞羞一区二区三区四区片 | 91国在线啪精品一区 | 91香蕉成人免费网站 | 免费看一区二区三区 | 国产一久久香蕉国产线看观看 | 亚洲图片一区二区三区 | a级免费网站| 香蕉亚洲精品一区二区 | 亚洲成人黄色在线 | 日本免费特黄aa毛片 | 免费高清一级欧美片在线观看 | 中文字幕视频免费在线观看 | 国产三级国产精品国产国在线观看 | 国产www| 亚洲精选在线 | 国产亚洲精品高清在线 | 97国内免费久久久久久久久久 | 国语精品视频在线观看不卡 | 国产一区二区日韩欧美在线 | 理论片黄色 | 欧美在线视频一区 | 精品久久国产老人久久综合 | 草草视频在线观看最新 | 国产成人精品高清在线 | 毛片免费观看的视频在线 | 欧美视频一二三区 | 精品国产一区二区三区国产馆 | 91日本在线精品高清观看 | 欧美xxxxx毛片 | 天天精品在线 | 久久精品视频在线观看榴莲视频 | 亚洲精品视频免费观看 | 成年女人毛片免费视频 | 久草最新视频 | 成人毛片在线播放 | 99久久精品免费视频 | 色偷偷亚洲精品一区 | 日本免费一区二区三区视频 | 日本在线观看不卡 | 国产网址在线观看 |