<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Decode360's Blog

    業精于勤而荒于嬉 QQ:150355677 MSN:decode360@hotmail.com

      BlogJava :: 首頁 :: 新隨筆 :: 聯系 ::  :: 管理 ::
      397 隨筆 :: 33 文章 :: 29 評論 :: 0 Trackbacks
    Undo TableSpace ②.回滾段研究
    ?
    ??? 回滾段一直是我看了頭大的一個東西,倒不是說這個東西的創建、管理有多復雜,而是在于如果你的系統需要涉及到回滾段的手動創建的時候,這個性能問題就已經夠不好了,到時候就要做很多的調優、調statspack、查SQL等等。不過現在已經很少有人再去設這個東西了,Oracle的高版本會自動管理,也許只是需要估算一下需要的大小。
    ?
    一、管理回滾段的準則
    ?
    ??? 1、使用多回滾段
    ?
    ??? 多個回滾段來減少競爭。當數據庫被創建時,會產生一個SYSTEM回滾段,但是不用于一般用途,所以在non-SYSTEM表空間中至少要創建一個額外的回滾段。而當額外表空間和回滾段創建時,必須在SYSTEM表空間中創建第二個回滾段,一般這些額外的回滾段被創建,應該激活新的回滾段,并使第二個回滾段不可用。
    ?
    ??? 注:雖然Oracle試圖將SYSTEM回滾段只用于特殊系統事務,但當non-SYSTEM有太多事務時,還是會占用SYSTEM回滾段的資源。所以需要事先計劃好回滾段的數目以避免這種情況的發生。
    ?
    ??? 啟動實例時有兩個選項來激活多回滾段:
    ?
    ??? * 使用公共回滾段,并指明初始化參數TRANSACTIONSTRANSACTION_PER_ROLLBACK_SEGMENT
    ??? * 使用私有或共有回滾段,并以初始化參數ROLLBACK_SEGMENTS指定它們的名稱
    ?
    ??? 注:修改MAX_ROLLBACK_SEGMENTS設定打開回滾段的最大個數,需比ROLLBACK_SEGMENTS數值大。
    ?
    ??? 2、選擇公共/私有回滾段
    ?
    ??? 在Oracle RAC中私有段允許一個實例獲得特定的回滾段,而公共回滾段則可以在各個實例間共享。
    ?
    ??? 如果沒有使用RAC特性,私有回滾段和公共回滾段功能相似。
    ?
    ??? 3、指定回滾段為自動獲得
    ?
    ??? 只要使用公共回滾段,即指定:
    ??? 預期并發事務數目:TRANSACTIONS
    ??? 預期每個回滾段需要處理的事務數目:TRANSACTIONS_PER_ROLLBACK_SEGMENT
    ?
    ??? 則一個實例至少會獲得n個回滾段 n = TRANSACTIONS / TRANSACTIONS_PER_ROLLBACK_SEGMENT
    ?
    ??? 另:若使用私有回滾段則無所謂分配。
    ?
    ??? 4、近似回滾段大小
    ?
    ??? 一般情況下,回滾段后能夠順利地處理任何大小的事務,但是當一個事務非常簡短或者時間十分長的極端情況下,需要適當調整合適的大小。對于簡短的事務來說,采用小回滾段時,可根據LRU算法盡可能得緩存在SGA中,而當事務很大時,可能不斷出現“snapshot too old”錯誤提示,這是因為讀一致性所需要的回滾段入口被回滾段四周的其他更新入口所重寫所導致。
    ?
    ??? 當一個混個事務不是很普遍時,每個回滾段應該是數據庫中最大表大小的10%左右。另外一般應該為回滾段設置一個高的MAXEXTENTS,允許一個回滾段在它需要時分配到后來的盤區。
    ?
    ??? 5、創建使用多個相同大小盤區的回滾段
    ?
    ??? s = T / n
    ?
    ??? s = 計算出的每個盤區初始分配的大小
    ??? T = 回滾段總的初始大小
    ??? n = 初始分配的盤區數
    ?
    ??? 計算出s后,創建回滾段并將存儲參數INITIAL和NEXT指定為s,講MINEXTENTS指定為n
    ??? 不能為回滾段指定PCTINCREASE,默認為0
    ?
    ??? 通常每個回滾段有10-20個相同大小的盤區,將觀察到最優的回滾I/O性能。
    ?
    ??? 6、設置一個最佳的盤區數
    ?
    ??? 監控 V$ROLLNAMEV$ROLLSTAT 視圖,用于決定OPTIMAL的合適值。
    ??? 具體OPTIMAL的大小,大致與回滾段的大小確定方法一致。
    ?
    ??? 7、將回滾段放入一個獨立的表空間
    ?
    ??? 將回滾段與其他類型的數據分開存儲有以下好處:
    ?
    ??? ① 專門的回滾段表空間可以一直保持聯機,以最大化回滾段的混合存儲容量。
    ??? ② 有活動回滾段的表空間不能脫機,單獨存放后可以保證其他表空間可以脫機而不涉及回滾段
    ??? ③ 表空間包含頻繁得分配和回收區的回滾段,則空閑盤區可能會有更過碎片
    ?
    ?
    二、創建回滾段
    ?
    ??? 1、創建語句
    ?
    ??? CREATE ROLLBACK SEGMENT rbs_02 TABLESPACE rbsspace;
    ?
    ??? 注:這不是RAC環境,無需指定PRIVATE|PUBLIC,默認為PRIVATE
    ?
    ??? 2、使新的回滾段聯機
    ?
    ??? 回滾段初始創建的時候是脫機的,必須要進行聯機處理,有兩種方法:
    ?
    ??? ① 即ALTER ROLLBACK SEGMENT ... (詳細見后文)
    ??? ② 修改ROLLBACK_SEGMENTS參數,在啟動時自動獲得,例如:
    ??????? ROLLBACK_SEGMENTS = (rbs_01, rbs_02)
    ?
    ??? 3、創建回滾段時設置存儲參數
    ?
    ??? CREATE ROLLBACK SEGMENT rbs_01
    ??? TABLESPACE rbsspace
    ??? STORAGE (
    ??? INITIAL 100K --初始盤區值
    ??? NEXT 100K --增量盤區值
    ??? OPTIMAL 4M --最佳大小
    ??? MINEXTENTS 20 --最小盤區數
    ??? MAXEXTENTS 100 ); --最大盤區數(包括初始盤區)
    ?
    ??? Oracle建議:
    ?
    ??? ① 將INITIAL和NEXT設置為相同的值,以確保所有盤區均相同大小
    ??? ② 創建一個較多的初始盤區,動態盤區的可能性降至最低 (例如20)
    ??? ③ 避免MAXEXTENTS = UNLIMITED
    ?
    ?
    三、修改回滾段
    ?
    ??? 1、改變回滾段的存儲參數
    ?
    ??? ALTER ROLLBACK SEGMENT rbs_01
    ??? STORAGE (MAXEXTENTS 120);
    ?
    ??? 2、手動縮小一個回滾段
    ?
    ??? ALTER ROLLBACK SEGMENT rbs1 SHRINK TO 100K;
    ?
    ??? 3、改變回滾段ONLINE|OFFLINE狀態
    ?
    ??? ① 手動使回滾段聯機
    ??? ALTER ROLLBACK SEGMENT user_rs_2 ONLINE;
    ?
    ??? ② 自動使回滾段聯機
    ??? TRANSACTIONS + TRANSACTIONS_PER_ROLLBACK_SEGMENT (公共)
    ??? ROLLBACK_SEGMENTS (私有)
    ?
    ??? ③ 使回滾段脫機
    ??? ALTER ROLLBACK SEGMENT user_rs_2 OFFLINE;
    ?
    ??? 當前有事務運行的回滾段,會進入PENDING OFFLINE狀態,具體可查詢DBA_ROLLBACK_SEGS、V$ROLLSTAT視圖。
    ?
    ?
    四、將事務指定到回滾段
    ?
    ??? 需要指定回滾段給事務的原因是:
    ?
    ??? ① 可以預計一項事務所產生的回滾段信息數量,這樣可以減少動態分配的額外開銷
    ??? ② 已知沒有長時間的查詢,因此可以指定給較小的回滾段
    ??? ③ 一些被事務修改的表正在被長時間執行查詢,可以分配交大的回滾段
    ?
    ??? SET TRANSACION USE ROLLBACK SEGMENT large_rs1;
    ??? --如果需要指定,則該語句必須放在事務的第一句
    ?
    ?
    五、取消回滾段
    ?
    ??? 待取消的回滾段必須是OFFLINE狀態,其他任何狀態均不可被取消。(INVALID已經被取消)
    ?
    ??? DROP ROLLBACK SEGMENT rbs1;
    ?
    ??? 注1:如果回滾段是在ROLLBACK_SEGMENTS中指定的,被取消后必須在該參數中刪去,否則再次啟動數據庫時報錯。
    ??? 注2:回滾段取消后狀態變為INVALID
    ?
    ?
    六、查看回滾段信息
    ?
    ??? DBA_ROLLBACK_SEGS:回滾段基礎信息,包括名稱和表空間等
    ??? DBA_SEGMENTS:將一個段標識為回滾段,并包括額外段信息
    ??? V$ROLLNAME:列出所有聯機的回滾段
    ??? V$ROLLSTAT:包括回滾段統計信息
    ??? V$TRANSACTION:包括撤銷段信息
    ?
    ??? V$ROLLSTAT可用于監控回滾段的統計信息,具體如下:
    ?
    ??? USN??????? 回滾段編號(與V$ROLLNAME對應名稱)
    ??? WRITES???? 寫入該回滾段的入口字節數
    ??? XACTS????? 活動的事務數
    ??? GETS?????? 回滾段頭部請求數
    ??? WAITS????? 導致等待的回滾段頭部請求數
    ??? OPTSIZE??? 該回滾段的最佳參數值
    ??? HWMSIZE??? 該回滾段大小在使用期間打到的最高峰(字節)
    ??? SHRINKS??? 為保持最佳狀態所需要的縮減數
    ??? WRAPS????? 一個回滾段入口從一個盤區到另一個盤區的次數
    ??? EXTENDS??? 該回滾段必須獲得新盤區的次數
    ??? AVESHRINK? 一次壓縮期間所釋放的平均字節數
    ??? AVEACTIVE? 該回滾段中活動盤區的平均字節數,超時測算
    ?
    ??? 注:該表信息在系統啟動時被重置
    ?
    ??? 對于V$ROLLSTATSHRINKS AVESHRINK狀況的評價
    ?
    ??? SHRINKS? AVESHRINK? 分析和建議
    ????? 低?????? 低?????? 若AVEACTIVE與OPTSIZE值接近,則設置正確, 否則OPTIMAL值太大
    ????? 低?????? 高?????? 最好的設置,正確的OPTIMAL
    ????? 高?????? 低?????? OPTIMAL太小,太多的壓縮在執行
    ????? 高?????? 高?????? 定期長時間運行的事務可能生成這些統計信息,講OPTIMAL設高
    ?
    ?
    ?
    posted on 2009-02-07 23:41 decode360 閱讀(242) 評論(0)  編輯  收藏 所屬分類: 08.DBA
    主站蜘蛛池模板: 亚洲精品中文字幕乱码| 国产成人无码免费看视频软件| 精品国产综合成人亚洲区| 美女一级毛片免费观看| 亚洲国产精品无码久久久秋霞2 | 久久免费看黄a级毛片 | 久久国产乱子伦精品免费不卡| 老司机亚洲精品影视www| 一级女人18片毛片免费视频| 国产免费人人看大香伊| 亚洲卡一卡二卡乱码新区| 在线a亚洲v天堂网2018| 最好2018中文免费视频| 亚洲精品成人片在线观看| 免费A级毛片无码A∨免费| 美女被暴羞羞免费视频| 亚洲成人福利在线观看| 国产亚洲精品免费视频播放| 一个人免费高清在线观看| 成人免费一区二区三区| 亚洲中文字幕乱码AV波多JI| 亚洲2022国产成人精品无码区 | 日韩毛片免费在线观看| 日韩内射激情视频在线播放免费| 亚洲精品色在线网站| 亚洲?V无码乱码国产精品| 91香蕉成人免费网站| 亚洲人成图片网站| 亚洲AV无码一区二区乱孑伦AS| 最近免费最新高清中文字幕韩国| 亚洲无砖砖区免费| 亚洲欧洲日产国码av系列天堂| 免费人成视频在线观看网站| 羞羞视频免费网站日本| 亚洲精品久久无码| 亚洲资源最新版在线观看| 免费在线观看黄网| 午夜视频免费观看| 久久久久久精品免费免费自慰| 苍井空亚洲精品AA片在线播放 | 青青青国产在线观看免费|