Oracle Undo表空間

          Posted on 2008-06-03 11:56 sdl 閱讀(2076) 評論(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ù),當(dāng)執(zhí)行DML操作(INSERT,UPDATE和DELETE)時,oracle會將這些操作執(zhí)行前的舊數(shù)據(jù)寫入到UNDO段,在oracle9i之前,管理UNDO數(shù)據(jù)時使用(Rollback Segment)完成的.從oracle9i開始,管理UNDO數(shù)據(jù)不僅可以使用回滾段,還可以使用UNDO表空間.因為規(guī)劃和管理回滾段比較復(fù)雜,所有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表空間  回復(fù)  更多評論   

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

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

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

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

          Copyright © sdl

          主站蜘蛛池模板: 偏关县| 莱州市| 揭东县| 延寿县| 闵行区| 新营市| 昌宁县| 海宁市| 子长县| 明星| 苏尼特左旗| 霍州市| 台安县| 北宁市| 开鲁县| 屏南县| 海兴县| 霍州市| 皋兰县| 南雄市| 漳州市| 吉林省| 尼木县| 昭通市| 潜山县| 禄劝| 揭东县| 新河县| 中超| 海阳市| 富蕴县| 紫金县| 成安县| 开平市| 当雄县| 西盟| 青阳县| 剑河县| 湟中县| 东城区| 武清区|