Welcome 微信登录

首页 / 数据库 / MySQL / 自动undo管理下如何添加和删除回滚段

以sys DBA帐户登陆数据库如下:
SQL*Plus: Release 10.2.0.1.0 - Production on 星期二 3月 11 08:46:26 2008Copyright (c) 1982, 2005, Oracle.  All rights reserved.连接到:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining optionsSQL> select segment_name as seg,tablespace_name as tab from dba_rollback_segs;    SEG                            TAB
    ------------------------------ ------------------------------
    SYSTEM                         SYSTEM
    _SYSSMU1$                      UNDOTBS1
    _SYSSMU2$                      UNDOTBS1
    _SYSSMU3$                      UNDOTBS1
    _SYSSMU4$                      UNDOTBS1
    _SYSSMU5$                      UNDOTBS1
    _SYSSMU6$                      UNDOTBS1
    _SYSSMU7$                      UNDOTBS1
    _SYSSMU8$                      UNDOTBS1
    _SYSSMU9$                      UNDOTBS1
    _SYSSMU10$                     UNDOTBS1
   
    已选择11行。
   
SQL> select segment_name as seg,owner,status from dba_rollback_segs;SEG                            OWNER  STATUS
------------------------------ ------ ----------------
SYSTEM                         SYS    ONLINE
_SYSSMU1$                      PUBLIC ONLINE
_SYSSMU2$                      PUBLIC ONLINE
_SYSSMU3$                      PUBLIC ONLINE
_SYSSMU4$                      PUBLIC ONLINE
_SYSSMU5$                      PUBLIC ONLINE
_SYSSMU6$                      PUBLIC ONLINE
_SYSSMU7$                      PUBLIC ONLINE
_SYSSMU8$                      PUBLIC ONLINE
_SYSSMU9$                      PUBLIC ONLINE
_SYSSMU10$                     PUBLIC ONLINE已选择11行。SQL> SQL> select * from v$waitstat where class="undo header";CLASS                   COUNT       TIME
------------------ ---------- ----------
undo header               129          4SQL> select usn,extents,waits from v$rollstat;       USN    EXTENTS      WAITS
---------- ---------- ----------
         0          6          0
         1          3          6
         2          3          8
         3          3          3
         4          5          5
         5          3          7
         6          3          3
         7          4          8
         8          3          3
         9         21          6
        10          4          4已选择11行。SQL>
SQL> select s.usn,n.name,s.extents as ext,s.optsize as opt,s.hwmsize as hw,s.status as st
  2   from v$rollstat s, v$rollname n where s.usn=n.usn;       USN NAME                                  EXT        OPT         HW
---------- ------------------------------ ---------- ---------- ----------
ST
---------------
         0 SYSTEM                                  6                385024
ONLINE         1 _SYSSMU1$                               3              16900096
ONLINE         2 _SYSSMU2$                               3               8511488
ONLINE
       USN NAME                                  EXT        OPT         HW
---------- ------------------------------ ---------- ---------- ----------
ST
---------------
         3 _SYSSMU3$                               3               5365760
ONLINE         4 _SYSSMU4$                               5               8511488
ONLINE         5 _SYSSMU5$                               3              23257088
ONLINE
       USN NAME                                  EXT        OPT         HW
---------- ------------------------------ ---------- ---------- ----------
ST
---------------
         6 _SYSSMU6$                               3               4317184
ONLINE         7 _SYSSMU7$                               4              18997248
ONLINE         8 _SYSSMU8$                               3               6414336
ONLINE
       USN NAME                                  EXT        OPT         HW
---------- ------------------------------ ---------- ---------- ----------
ST
---------------
         9 _SYSSMU9$                              21              20045824
ONLINE        10 _SYSSMU10$                              4              12705792
ONLINE
已选择11行。SQL>   通过以上查询,知道数据库的回滚段争用情况比较严重。各位帮忙分析下,是不是需要增加回滚段的数量,
或者扩大回滚段的大小来解决回滚段争用的情况。 
我尝试在自动管理的模式下,建立普通表空间RBS.然后执行如下命令:
SQL> CREATE PUBLIC ROLLBACK SEGMENT R03                                      
      2  TABLESPACE RBS                                                          
      3   STORAGE    (                                                           
      4   INITIAL          200K                                                  
      5   NEXT             200K                                                  
      6   MINEXTENTS       20                                                    
      7  );                                                                      
                                                                                 
    回退段已创建。                                                               
                                                                                 
SQL> ALTER ROLLBACK SEGMENT R03 ONLINE;                                      
                                                                                 
    回退段已变更。                                                               
SQL> select segment_name as seg,tablespace_name as tab from dba_rollback_segs;
                                                                                 
    SEG                            TAB                                           
    ------------------------------ ------------------------------                
    SYSTEM                         SYSTEM                                        
    _SYSSMU1$                      UNDOTBS1                                      
    _SYSSMU2$                      UNDOTBS1                                      
    _SYSSMU3$                      UNDOTBS1                                      
    _SYSSMU4$                      UNDOTBS1                                      
    _SYSSMU5$                      UNDOTBS1                                      
    _SYSSMU6$                      UNDOTBS1                                      
    _SYSSMU7$                      UNDOTBS1                                      
    _SYSSMU8$                      UNDOTBS1                                      
    _SYSSMU9$                      UNDOTBS1                                      
    _SYSSMU10$                     UNDOTBS1                                                                                                                        
    已选择11行。        
SQL> 由于Oracle用的是默认回滚段自动管理,这个时候是看不到的,需要修改到MANUAL模式下才可创建。
请问怎样在不改变回滚段自动管理的模式下,增加回滚段来解决回滚段的争用问题。
在某些场景里,如undo header竞争,增加回滚段可缓解竞争。
首先设置隐含参数_smu_debug_mode为4,进入debug模式。
alter system set "_smu_debug_mode" = 4 scope = both;
接着就可以创建新的回滚段,需要指定undo表空间否则无法将其ONLINE。
create public rollback segment "_SYSSMU11$" tablespace undotbs1;
alter rollback segment "_SYSSMU11$" online;
默认情况下在undo表空间有10g回滚段
需要注意的是数据库重启后,超过10个回滚段的其他回滚段不会自动被系统online,少于10个回滚段系统也不会创建新的回滚段。RMAN恢复-数据文件与表空间的恢复实战Oracle 11g用户密码不区分大小写相关资讯      Oracle教程 
  • Oracle中纯数字的varchar2类型和  (07/29/2015 07:20:43)
  • Oracle教程:Oracle中查看DBLink密  (07/29/2015 07:16:55)
  • [Oracle] SQL*Loader 详细使用教程  (08/11/2013 21:30:36)
  • Oracle教程:Oracle中kill死锁进程  (07/29/2015 07:18:28)
  • Oracle教程:ORA-25153 临时表空间  (07/29/2015 07:13:37)
  • Oracle教程之管理安全和资源  (04/08/2013 11:39:32)
本文评论 查看全部评论 (0)
表情: 姓名: 字数