Oracle Undo表空間

          Posted on 2008-06-03 11:56 sdl 閱讀(2075) 評論(2)  編輯  收藏 所屬分類: Oracle
              在開發(fā)過程中遇到這樣一個問題:
              2008-06-02 16:29:23,262 WARN [org.hibernate.util.JDBCExceptionReporter] SQL Error: 30036, SQLState: 99999
          2008-06-02 16:29:23,263 ERROR [org.hibernate.util.JDBCExceptionReporter] ORA-30036: unable to extend segment by 1024 in undo tablespace 'UNDOTBS2'
          后來查資料才發(fā)現(xiàn)是Undo表空間的問題。查看了一下Undo表空間剩的空間已經(jīng)很少了。這種問題解決方法如下:

              


          UNDO表空間用于存放UNDO數(shù)據(jù),當執(zhí)行DML操作(INSERT,UPDATE和DELETE)時,oracle會將這些操作執(zhí)行前的舊數(shù)據(jù)寫入到UNDO段,在oracle9i之前,管理UNDO數(shù)據(jù)時使用(Rollback Segment)完成的.從oracle9i開始,管理UNDO數(shù)據(jù)不僅可以使用回滾段,還可以使用UNDO表空間.因為規(guī)劃和管理回滾段比較復雜,所有oracle database 10g已經(jīng)完全丟棄用回滾段.并且使用UNDO表空間來管理UNDO數(shù)據(jù).

          1:查看所有的Undo表空間

          SELECT * FROM dba_tablespaces where contents='UNDO'


          2:Undo大小計算公式:

          SELECT ((UR * (UPS * DBS)) + (DBS * 24))/1048576 AS "MB"
          FROM (SELECT value AS UR
          FROM v$parameter
          WHERE name = 'undo_retention'),
          (SELECT (SUM(undoblks)/SUM
          (((end_time-begin_time)*86400))) AS UPS
          FROM v$undostat),
          (SELECT value AS DBS
          FROM v$parameter
          WHERE name = 'db_block_size');
          3:修改Undo表空間大小

           先刪除原來的表空間:
           drop tablespace UNDOTBS2 including contents and datafiles
           再建立一個和原來名稱一樣的表空間
           create undo tablespace UNDOTBS2 datafile '/home/oracle/oradata/depsight/undotbs2.dbf' size 50m

          Feedback

          # re: Oracle Undo表空間  回復  更多評論   

          2008-11-05 23:04 by rrr
          兄弟,不對吧,UNDO段是循環(huán)使用的,Undo表空間剩的空間已經(jīng)很少時,oracle可以循環(huán)使用的,出現(xiàn)以上的原因是UNDO表空間太小吧

          # re: Oracle Undo表空間[未登錄]  回復  更多評論   

          2009-10-10 13:47 by dd
          暈,不懂就不要寫

          posts - 12, comments - 2, trackbacks - 0, articles - 0

          Copyright © sdl

          主站蜘蛛池模板: 汉源县| 阿荣旗| 乡城县| 淮南市| 商水县| 遂昌县| 阜平县| 禄丰县| 涟水县| 永德县| 锦州市| 三台县| 房山区| 长岭县| 保康县| 右玉县| 镇平县| 汶川县| 铜梁县| 安康市| 大埔区| 枣强县| 九台市| 德化县| 长兴县| 泰来县| 绥芬河市| 新沂市| 句容市| 新河县| 平乡县| 龙州县| 绥芬河市| 清水县| 洛阳市| 辉县市| 九龙县| 石林| 石台县| 汉阴县| 花莲县|