设为首页 收藏本站
查看: 479|回复: 0

[经验分享] Oracle 手工清除回滚段的几种方法

[复制链接]
YunVN网友  发表于 2016-8-13 07:03:12 |阅读模式
  
  关于回滚段的问题,之前也小整理过一个,参考:
  Current online Redo 和 Undo 损坏的处理方法
  http://blog.csdn.net/tianlesoftware/article/details/6261475
  
  Roger同学昨天整理了一个更加详细的说明,转帖过来。 Roger 的原文链接如下: http://www.killdb.com/?p=196
  
  
  某些情况下,我们需要手动去清除一些有问题的回滚段,如果该回滚段中包含活动事务,那么使用正常的方式将无法drop,所以此时你dropundo tablespace 也将失败。
  
  可能就会遇到如下的错误:
  SQL> drop tablespace undotbs1 includingcontents and datafiles;
  drop tablespace undotbs1 including contentsand datafiles
  *
  ERROR at line 1:
  ORA-01561: failed to remove all objects inthe tablespace specified
  
方法一:用隐含参数
  SQL> show parameter undo
  NAME TYPE VALUE
  ----------------------------------------------- ------------------------------
  undo_management string AUTO
  undo_retention integer 900
  undo_tablespace string UNDOTBS1
  SQL> create undo tablespace undotbs2datafile '/oracle/product/oradata/roger/undotbs2.dbf'
  2 size 50m autoextend off;
  Tablespace created.
  SQL> create undo tablespace undotbs3datafile '/oracle/product/oradata/roger/undotbs3.dbf'
  2 size 50m autoextend off;
  Tablespace created.
  SQL>
  SQL> conn roger/roger
  Connected.
  SQL> create table ht_01 as select * fromdba_objects where rownum <10;
  Table created.
  SQL> delete from ht_01 where rownum<5;
  4 rows deleted.
  SQL> -----不提交
  SQL> selectowner,segment_name,SEGMENT_ID,FILE_ID,BLOCK_ID,STATUS
  2 ,tablespace_name from dba_rollback_segs;
  OWNERSEGMENT_NAME SEGMENT_ID FILE_IDBLOCK_ID STATUS TABLESPACE_NAME
  ------ -------------- ---------- -------------------- -------- ---------------
  SYSSYSTEM 0 1 9ONLINE SYSTEM
  PUBLIC _SYSSMU1$ 1 2 9ONLINE UNDOTBS1
  PUBLIC _SYSSMU2$ 2 2 25ONLINE UNDOTBS1
  PUBLIC _SYSSMU3$ 3 2 41ONLINE UNDOTBS1
  PUBLIC _SYSSMU4$ 4 2 57ONLINE UNDOTBS1
  PUBLIC _SYSSMU5$ 5 2 73ONLINE UNDOTBS1
  PUBLIC _SYSSMU6$ 6 2 89ONLINE UNDOTBS1
  PUBLIC _SYSSMU7$ 7 2105 ONLINEUNDOTBS1
  PUBLIC _SYSSMU8$ 8 2 121ONLINE UNDOTBS1
  PUBLIC _SYSSMU9$ 9 2 137ONLINE UNDOTBS1
  PUBLIC _SYSSMU10$ 10 2 153ONLINE UNDOTBS1
  PUBLIC _SYSSMU11$ 11 6 9OFFLINE UNDOTBS2
  PUBLIC _SYSSMU12$ 12 6 25OFFLINE UNDOTBS2
  PUBLIC _SYSSMU13$ 13 6 41OFFLINE UNDOTBS2
  PUBLIC _SYSSMU14$ 14 6 57OFFLINE UNDOTBS2
  PUBLIC _SYSSMU15$ 15 6 73OFFLINE UNDOTBS2
  PUBLIC _SYSSMU16$ 16 6 89OFFLINE UNDOTBS2
  PUBLIC _SYSSMU17$ 17 6 105OFFLINE UNDOTBS2
  PUBLIC _SYSSMU18$ 18 6 121OFFLINE UNDOTBS2
  PUBLIC _SYSSMU19$ 19 6 137OFFLINE UNDOTBS2
  PUBLIC _SYSSMU20$ 20 6 153OFFLINE UNDOTBS2
  PUBLIC _SYSSMU21$ 21 79 OFFLINE UNDOTBS3
  PUBLIC _SYSSMU22$ 22 7 25OFFLINE UNDOTBS3
  PUBLIC _SYSSMU23$ 23 7 41OFFLINE UNDOTBS3
  PUBLIC _SYSSMU24$ 24 7 57OFFLINE UNDOTBS3
  PUBLIC _SYSSMU25$ 25 7 73OFFLINE UNDOTBS3
  PUBLIC _SYSSMU26$ 26 7 89OFFLINE UNDOTBS3
  PUBLIC _SYSSMU27$ 27 7 105OFFLINE UNDOTBS3
  PUBLIC _SYSSMU28$ 28 7 121OFFLINE UNDOTBS3
  PUBLIC _SYSSMU29$ 29 7 137OFFLINE UNDOTBS3
  PUBLIC _SYSSMU30$ 30 7 153OFFLINE UNDOTBS3
  31 rows selected.
  SQL> selectxidusn,xidslot,xidsqn,ubablk,ubafil,ubarec from v$transaction;
  XIDUSNXIDSLOT XIDSQN UBABLKUBAFIL UBAREC
  ---------- ---------- ---------- -------------------- ----------
  9 13 299 439 2 47
  SQL> selectusn,name from v$rollname where usn=9;
  USN NAME
  ------------------------------------------------------------
  9 _SYSSMU9$
  --确定当前正在使用的回滚段
  SQL>
  SQL>c/file_name/file_name,tablespace_name
  1*select file_id,file_name,tablespace_name from dba_data_files order by 1
  SQL> /
  FILE_IDFILE_NAMETABLESPACE_NAME
  --------------------------------------------------------- ---------------
  1 /oracle/product/oradata/roger/system01.dbf SYSTEM
  2 /oracle/product/oradata/roger/undotbs01.dbf UNDOTBS1
  3 /oracle/product/oradata/roger/sysaux01.dbf SYSAUX
  4 /oracle/product/oradata/roger/users01.dbf USERS
  5 /oracle/product/oradata/roger/roger01.dbf ROGER
  6 /oracle/product/oradata/roger/undotbs2.dbf UNDOTBS2
  7 /oracle/product/oradata/roger/undotbs3.dbf UNDOTBS3
  
  7 rows selected.
  
  SQL>
  SQL> show parameter undo
  NAME TYPE VALUE
  ----------------------------------------------- -------------------
  undo_management string AUTO
  undo_retention integer 900
  undo_tablespace string UNDOTBS1
  SQL> alter system setundo_tablespace=undotbs2;
  System altered.
  SQL> alter database datafile 2 offline;
  Database altered.
  SQL>
  SQL> shutdown abort;
  ORACLE instance shut down.
  SQL>
  SQL>
  SQL> startup
  ORACLE instance started.
  Total System Global Area 167772160 bytes
  Fixed Size 1266392 bytes
  Variable Size 104860968 bytes
  Database Buffers 58720256 bytes
  Redo Buffers 2924544 bytes
  Database mounted.
  Database opened.
  SQL> drop tablespace undotbs1 includingcontents and datafiles;
  drop tablespace undotbs1 including contentsand datafiles
  *
  ERROR at line 1:
  ORA-01548: activerollback segment '_SYSSMU9$' found, terminate dropping tablespace
  SQL> ---我们看到报错了 意思是说该回滚段中还有活动事务
  SQL> conn roger/roger
  Connected.
  SQL> show parameter undo
  NAME TYPE VALUE
  ----------------------------------------------- ------------------------------
  _collect_undo_stats boolean TRUE
  _gc_dissolve_undo_affinity boolean FALSE
  _gc_initiate_undo_affinity boolean TRUE
  _gc_undo_affinity boolean TRUE
  _gc_undo_affinity_locks boolean TRUE
  _in_memory_undo booleanTRUE
  _kcl_undo_grouping integer 32
  _kcl_undo_locks integer 128
  _optimizer_undo_changes boolean FALSE
  _optimizer_undo_cost_change string 10.2.0.4
  _smon_undo_seg_rescan_limit integer 10
  _undo_autotune boolean TRUE
  _undo_debug_mode integer 0
  _undo_debug_usage integer 0
  _verify_undo_quota boolean FALSE
  undo_management string AUTO
  undo_retention integer 900
  undo_tablespace string UNDOTBS2
  SQL>
  SQL> alter system set"_smu_debug_mode" = 4;
  System altered.
  SQL> alter rollback segment"_SYSSMU9$" offline;
  alter rollback segment"_SYSSMU9$" offline
  *
  ERROR at line 1:
  ORA-01598: rollback segment '_SYSSMU9$' isnot online
  SQL> drop rollback segment"_SYSSMU9$";
  drop rollback segment "_SYSSMU9$"
  *
  ERROR at line 1:
  ORA-01545: rollback segment '_SYSSMU9$'specified not available
  SQL> selectowner,segment_name,SEGMENT_ID,FILE_ID,BLOCK_ID,STATUS
  2 from dba_rollback_segs wheresegment_name='_SYSSMU9$';
  OWNERSEGMENT_NAMESEGMENT_ID FILE_ID BLOCK_ID STATUS
  ------ -------------------- -------------------- ---------- ----------------
  PUBLIC _SYSSMU9$ 9 2 137 NEEDS RECOVERY
  SQL>
  
  用如下隐含参数:
  _offline_rollback_segments=(_SYSSMU9$)
  _corrupted_rollback_segments=(_SYSSMU9$)
  讲参数添加到pfile里,在启动
  
  SQL> startup mountpfile='/oracle/pfile.ora';
  ORACLE instance started.
  Total System Global Area 167772160 bytes
  Fixed Size 1266392 bytes
  Variable Size 104860968 bytes
  Database Buffers 58720256 bytes
  Redo Buffers 2924544 bytes
  Database mounted.
  SQL> alter database open;
  Database altered.
  SQL> selectowner,segment_name,SEGMENT_ID,FILE_ID,BLOCK_ID,STATUS
  2 from dba_rollback_segs wheresegment_name='_SYSSMU9$';
  OWNERSEGMENT_NAMESEGMENT_ID FILE_ID BLOCK_IDSTATUS
  ------ -------------------- -------------------- ---------- ----------------
  PUBLIC _SYSSMU9$ 9 2 137NEEDS RECOVERY
  SQL> drop rollbacksegment "_SYSSMU9$";
  Rollback segment dropped.
  SQL>
  SQL> drop tablespace undotbs1 includingcontents and datafiles;
  Tablespace dropped.
  SQL>
  SQL> select count(*) from ht_01;
  COUNT(*)
  ----------
  5 ---数据丢失
  
   这里可能有人会问上面的_undo_debug_mode参数为啥不管用?其实不是没效果,是针对这种情况下,没用而已,对于自动undo管理模式,可以使用该参数来手工删除某个回滚段,前提是该回滚段无活动事务。
  
方法二: 通过更改数据字典表 来删除回滚段和undotablespace
  SQL> show parameter undo
  NAME TYPE VALUE
  ----------------------------------------------- ------------------------------
  undo_management string AUTO
  undo_retention integer 900
  undo_tablespace string UNDOTBS3
  SQL> conn roger/roger
  Connected.
  SQL> select count(*) from ht_01;
  COUNT(*)
  ----------
  3
  SQL> delete from ht_01where rownum <2;
  1 row deleted.
  SQL> ---不提交
  SQL> selectxidusn,xidslot,xidsqn,ubablk,ubafil,ubarec from v$transaction;
  XIDUSN XIDSLOT XIDSQNUBABLK UBAFIL UBAREC
  ---------- ---------- ---------- -------------------- ----------
  2 5 310345 7 6
  SQL> select usn,name from v$rollname whereusn=2;
  USNNAME
  ------------------------------------------------------------
  2_SYSSMU2$
  SQL> alter system setundo_tablespace=undotbs4;
  System altered.
  SQL> alter database datafile 7 offline;
  Database altered.
  SQL>
  SQL> shutdown abort;
  ORACLE instance shut down.
  SQL> startup
  ORACLE instance started.
  Total System Global Area 167772160 bytes
  Fixed Size 1266392 bytes
  Variable Size 104860968 bytes
  Database Buffers 58720256 bytes
  Redo Buffers 2924544 bytes
  Database mounted.
  Database opened.
  SQL> drop tablespace undotbs3 includingcontents and datafiles;
  drop tablespace undotbs3 including contentsand datafiles
  *
  ERROR at line 1:
  ORA-01548: active rollback segment'_SYSSMU2$' found, terminate dropping tablespace
  
  SQL> select ts# fromts$ where name='UNDOTBS3';
  TS#
  ----------
  7
  SQL> select file#,block#,TYPE#,TS# fromseg$ where ts#=7;
  FILE# BLOCK# TYPE# TS#
  ---------- ---------- ---------- ----------
  7 9 10 7
  7 25 10 7
  7 41 10 7
  7 57 10 7
  7 7310 7
  7 89 10 7
  7 105 10 7
  7 121 10 7
  7 137 10 7
  7 153 10 7
  7 265 3 7
  7 281 10 7
  12 rows selected.
  SQL> selectowner,segment_name,SEGMENT_ID,FILE_ID,BLOCK_ID,STATUS
  2 from dba_rollback_segs wherefile_id=7;
  OWNERSEGMENT_NAME SEGMENT_ID FILE_IDBLOCK_ID STATUS
  ------ ------------- ---------- -------------------- ----------------
  PUBLIC _SYSSMU2$ 2 7 281NEEDS RECOVERY
  --这里281 不是offline
  PUBLIC _SYSSMU21$ 21 7 9OFFLINE
  PUBLIC _SYSSMU22$ 227 25OFFLINE
  PUBLIC _SYSSMU23$ 23 7 41OFFLINE
  PUBLIC _SYSSMU24$ 24 7 57OFFLINE
  PUBLIC _SYSSMU25$ 25 7 73OFFLINE
  PUBLIC _SYSSMU26$ 26 789 OFFLINE
  PUBLIC _SYSSMU27$ 27 7 105OFFLINE
  PUBLIC _SYSSMU28$ 28 7 121OFFLINE
  PUBLIC _SYSSMU29$ 29 7 137OFFLINE
  PUBLIC _SYSSMU30$ 30 7 153OFFLINE
  11 rows selected.
  SQL>
  SQL> update seg$set type# = 3 where ts#=7 and file#=7 and BLOCK#=281;
  1 row updated.
  SQL> commit;
  Commit complete.
  SQL> shutdown immediate;
  Database closed.
  Database dismounted.
  ORACLE instance shut down.
  SQL> startup
  ORACLE instance started.
  Total System Global Area 167772160 bytes
  Fixed Size 1266392 bytes
  Variable Size 104860968 bytes
  Database Buffers 58720256 bytes
  Redo Buffers 2924544 bytes
  Database mounted.
  Database opened.
  SQL> select US# ,NAME,FILE#,BLOCK# fromundo$ where file#=7;
  US# NAME FILE# BLOCK#
  ---------- --------------- ------- ----------
  1 _SYSSMU1$ 7 265
  2 _SYSSMU2$ 7 281
  21 _SYSSMU21$ 7 9
  22 _SYSSMU22$ 7 25
  23 _SYSSMU23$ 7 41
  24 _SYSSMU24$ 757
  25 _SYSSMU25$ 7 73
  26 _SYSSMU26$ 7 89
  27 _SYSSMU27$ 7 105
  28 _SYSSMU28$ 7 121
  29 _SYSSMU29$ 7 137
  30 _SYSSMU30$ 7 153
  
  12 rows selected.
  SQL>
  SQL> delete from undo$where ts#=7 and US#=2;
  1 row deleted.
  SQL> delete from seg$ where ts#=7 andfile#=7 and block#=281;
  1 row deleted.
  SQL>
  SQL> commit;
  Commit complete.
  SQL> drop rollback segment"_SYSSMU2$";
  drop rollback segment "_SYSSMU2$"
  *
  ERROR at line 1:
  ORA-01545: rollback segment '_SYSSMU2$'specified not available
  
  由于我们已经从几个数据字典表中将该段清除了,所以需要用包检查下
  SQL> execute hcheck.full
  PL/SQL procedure successfully completed.
  SQL> drop rollback segment"_SYSSMU2$";
  Rollback segment dropped.
  SQL>
  SQL> drop tablespace undotbs3 includingcontents and datafiles;
  drop tablespace undotbs3 including contentsand datafiles
  *
  ERROR at line 1:
  ORA-01561: failed to remove all objects inthe tablespace specified
  
  对于该错误,处理起来就非常容易了,如下:
  SQL> update seg$ set type# = 3 wherets#=7;
  11 rows updated.
  SQL> commit;
  Commit complete.
  SQL> shutdown immediate;
  Database closed.
  Database dismounted.
  ORACLE instance shut down.
  SQL> startup
  ORACLE instance started.
  Total System Global Area 167772160 bytes
  Fixed Size 1266392 bytes
  Variable Size 104860968 bytes
  Database Buffers 58720256 bytes
  Redo Buffers 2924544 bytes
  Database mounted.
  Database opened.
  SQL> drop tablespace undotbs3 includingcontents and datafiles;
  Tablespace dropped.
  SQL> ----Drop Tablespace 成功
  
  简单的总结下,其实我们只要通过如下步骤就能轻易的删除:
  1. 将回滚段更改为临时段
  2. 重启实例
  3. 从seg$中删除记录
  4. 从undo$中删除记录
  
  需要注意一下的是,如果不使用hcheck.full,那么直接drop tablespace可能遇到如下错误:
  SQL> drop tablespace undotbs2 includingcontents and datafiles;
  drop tablespace undotbs2 including contentsand datafiles
  *
  ERROR at line 1:
  ORA-00600: internal error code, arguments:[ktssdrp1], [5], [6], [25], [], [], [], []
  
方法三: 使用bbed 修改元数据
  SQL> purge recyclebin;
  Recyclebin purged.
  SQL> create table ht01 as selectowner,object_name,object_id
  2 from dba_objects whereobject_id <100;
  Table created.
  SQL> select count(*) from ht01;
  COUNT(*)
  ----------
  98
  SQL> delete from ht01where object_id <10;
  8 rows deleted.
  SQL> ----不提交
  SQL> show parameter undo
  NAME TYPE VALUE
  ----------------------------------------------- ------------------------------
  undo_management string AUTO
  undo_retention integer 900
  undo_tablespace stringUNDOTBS4
  SQL> selectowner,segment_name,SEGMENT_ID,FILE_ID,BLOCK_ID,STATUS
  2 from dba_rollback_segs wheretablespace_name='UNDOTBS4';
  OWNERSEGMENT_NAME SEGMENT_ID FILE_IDBLOCK_ID STATUS
  ------ ------------- ---------- -------------------- ----------------
  PUBLIC _SYSSMU1$ 1 2 169ONLINE
  PUBLIC _SYSSMU2$ 2 2 185ONLINE
  PUBLIC _SYSSMU3$ 3 2 9OFFLINE
  PUBLIC _SYSSMU4$ 4 225 OFFLINE
  PUBLIC _SYSSMU5$ 5 2 41OFFLINE
  PUBLIC _SYSSMU6$ 6 2 57OFFLINE
  PUBLIC _SYSSMU7$ 7 2 73OFFLINE
  PUBLIC _SYSSMU8$ 8 2 89OFFLINE
  PUBLIC _SYSSMU10$ 10 2 105OFFLINE
  PUBLIC _SYSSMU11$ 11 2 121OFFLINE
  PUBLIC _SYSSMU12$ 12 2 137OFFLINE
  PUBLIC _SYSSMU31$ 31 2153 OFFLINE
  12 rows selected.
  SQL> selectxidusn,xidslot,xidsqn,ubablk,ubafil,ubarec from v$transaction;
  XIDUSN XIDSLOT XIDSQNUBABLK UBAFIL UBAREC
  ---------- ---------- ---------- -------------------- ----------
  2 93 191 2 10
  SQL> select usn,name from v$rollnamewhere usn=2;
  USN NAME
  ------------------------------------------------------------
  2 _SYSSMU2$
  SQL> select file_id,file_name,statusfrom dba_data_files order by 1;
  FILE_ID FILE_NAME STATUS
  --------------------------------------------------------- ---------
  1 /oracle/product/oradata/roger/system01.dbf AVAILABLE
  2 /oracle/product/oradata/roger/undotbs4.dbf AVAILABLE
  3 /oracle/product/oradata/roger/sysaux01.dbf AVAILABLE
  4 /oracle/product/oradata/roger/users01.dbf AVAILABLE
  5 /oracle/product/oradata/roger/roger01.dbf AVAILABLE
  6 /oracle/product/oradata/roger/undotbs5.dbf AVAILABLE
  6 rows selected.
  SQL> alter system setundo_tablespace=undotbs5;
  System altered.
  SQL> alter database datafile 2 offline;
  Database altered.
  SQL>
  SQL> selectowner,SEGMENT_NAME,SEGMENT_TYPE,HEADER_FILE,HEADER_BLOCK
  2 from dba_segments wheresegment_name='_SYSSMU2$';
  OWNERSEGMENT_NAMESEGMENT_TYPE HEADER_FILEHEADER_BLOCK
  ----------- -------------------------------------- ----------- ------------
  SYS_SYSSMU2$ TYPE2 UNDO 2 185
  SQL>
  
  单纯的通过修改undo$的status$字典是无法drop的,如下:
  SQL> update undo$ set STATUS$=4 wherefile#=2 and block#=185;
  1 row updated.
  SQL> commit;
  Commit complete.
  SQL> select US#,NAME,FILE# ,BLOCK#,STATUS$ from undo$;
  US# NAMEFILE# BLOCK# STATUS$
  ---------- ---------------- ---------- ---------- ----------
  0 SYSTEM1 9 3
  1 _SYSSMU1$2 169 2
  2 _SYSSMU2$2 185 4
  3 _SYSSMU3$ 2 9 2
  4 _SYSSMU4$2 25 2
  5 _SYSSMU5$2 41 2
  6 _SYSSMU6$2 57 2
  7 _SYSSMU7$2 73 2
  8 _SYSSMU8$2 89 2
  9 _SYSSMU9$2 137 1
  10 _SYSSMU10$2 105 2
  11 _SYSSMU11$2 121 2
  12 _SYSSMU12$2 137 2
  13 _SYSSMU13$6 41 2
  14 _SYSSMU14$6 57 2
  15 _SYSSMU15$ 6 73 2
  16 _SYSSMU16$6 89 2
  17 _SYSSMU17$6 105 2
  18 _SYSSMU18$6 121 2
  19 _SYSSMU19$ 6137 2
  20 _SYSSMU20$6 153 2
  21 _SYSSMU21$6 9 3
  22 _SYSSMU22$6 25 3
  23 _SYSSMU23$6 413
  24 _SYSSMU24$6 57 3
  25 _SYSSMU25$6 73 3
  26 _SYSSMU26$6 89 3
  27 _SYSSMU27$6 105 3
  28 _SYSSMU28$6 121 3
  29 _SYSSMU29$6 137 3
  30 _SYSSMU30$6 153 3
  31 _SYSSMU31$2 153 2
  32 rows selected.
  SQL>
  SQL> drop rollback segment"_SYSSMU2$";
  drop rollback segment "_SYSSMU2$"
  *
  ERROR at line 1:
  ORA-01545: rollback segment '_SYSSMU2$'specified not available
  SQL> alter system set"_smu_debug_mode" = 4;
  System altered.
  SQL> drop rollback segment"_SYSSMU2$";
  drop rollback segment "_SYSSMU2$"
  *
  ERROR at line 1:
  ORA-01545: rollback segment '_SYSSMU2$'specified not available
  
  下面我们通过bbed来修改元数据,也就是直接修改回滚段的状态,将其修改为offline。
  SQL> selectdbms_rowid.rowid_relative_fno(rowid) file#,dbms_rowid.rowid_block_number(rowid)blk#
  2 from undo$ where file#=2 andblock#=185;
  FILE# BLK#
  ---------- ----------
  1 106
  SQL>
  
  BBED> set file 1 block106
  FILE# 1
  BLOCK# 106
  BBED> p kdbr
  sb2 kdbr[0] @86 8079
  sb2 kdbr[1] @88 5234
  sb2 kdbr[2] @904754
  sb2 kdbr[3] @92 6654
  sb2 kdbr[4] @94 7860
  sb2 kdbr[5] @96 7805
  sb2 kdbr[6] @98 6818
  sb2 kdbr[7] @100 5123
  sb2 kdbr[8] @102 5068
  sb2 kdbr[9] @104 5940
  sb2 kdbr[10] @106 7525
  sb2 kdbr[11] @108 5013
  sb2 kdbr[12] @110 4858
  sb2 kdbr[13] @112 6053
  sb2 kdbr[14] @114 7309
  sb2 kdbr[15] @1167255
  sb2 kdbr[16] @118 7201
  sb2 kdbr[17] @120 7146
  sb2 kdbr[18] @122 7091
  sb2 kdbr[19] @124 5885
  sb2 kdbr[20] @126 6981
  sb2 kdbr[21] @128 5290
  sb2 kdbr[22] @130 5780
  sb2 kdbr[23] @132 5726
  sb2 kdbr[24] @134 5672
  sb2 kdbr[25] @136 5618
  sb2 kdbr[26] @138 5564
  sb2 kdbr[27] @140 5509
  sb2 kdbr[28] @1425454
  sb2 kdbr[29] @144 5399
  sb2 kdbr[30] @146 5344
  sb2 kdbr[31] @148 4803
  BBED> p *kdbr[2]
  rowdata[0]
  ----------
  ub1 rowdata[0] @4822 0x2c
  BBED>
  BBED>
  BBED> x /1rnnnnnnnnnnnnnn
  rowdata[0] @4822
  ----------
  flag@4822:0x2c (KDRHFL, KDRHFF, KDRHFH)
  lock@4823:0x00
  cols@4824: 17
  col0[2] @4825: 2
  col1[9] @4828: -0
  col2[2] @4838: 1
  col3[2] @4841: 2
  col4[3] @4844: 185
  col5[1] @4848: 0
  col6[1] @4850: 0
  col7[1] @4852: 0
  col8[1] @4854: 0
  col9[1] @4856: 0
  col10[2] @4858: 4
  col11[2] @4861: 8
  col12[0] @4864: *NULL*
  col13[0] @4865: *NULL*
  col14[0] @4866: *NULL*
  col15[0] @4867: *NULL*
  col16[2] @4868: 1
  BBED> modify /x 02 offset 4860
  File: /oracle/product/oradata/roger/system01.dbf(1)
  Block: 106 Offsets: 4860 to 5371 Dba:0x0040006a
  ------------------------------------------------------------------------
  0202c109 ffffffff 02c1022c 001102c1 200a5f535953534d 55333124 02c10202
  c10303c2 023604c3 53491901 8002c103 02c102018002c103 02c109ff ffffff02
  c1022c00 1102c10d 0a5f5359 53534d55 31322402c10202c1 0303c202 2604c353
  49250180 02c10302 c1020180 02c10302 c109ffffffff02c1 022c0011 02c1200a
  5f535953 534d5533 312402c1 0202c103 03c2023601800180 01800180 018002c1
  0402c109 ffffffff 02c1022c 001102c1 0d0a5f535953534d 55313224 02c10202
  c10303c2 02260180 01800180 01800180 02c10402c109ffff ffff02c1 022c0011
  02c10c0a 5f535953 534d5531 312402c1 0202c10303c20216 04c35349 1b018002
  c10802c1 04018002 c10302c1 09ffffff ff02c1022c001102 c109095f 53595353
  4d553824 02c10202 c10302c1 5a04c353 491d018003c20345 03c2033e 018002c1
  0302c109 ffffffff 02c1022c 001102c1 08095f535953534d 55372402 c10202c1
  0302c14a 04c35349 27018003 c2036403 c2052801 8002c10302c109ff ffffff02
  c1023c01 1102c103 095f5359 53534d55 322402c10202c108 03c20352 04c34a3a
  1b018003 c2036403 c2031601 8002c106 02c108ffffffff02 c1022c00 1102c102
  095f5359 53534d55 312402c1 0202c103 03c2024604c35351 51018003 c2033003
  c2035101 8002c103 02c109ff ffffff02 c1022c011102c116 0a5f5359 53534d55
  <32 bytes per line>
  BBED> sum apply
  Check value for File 1, Block 106:
  current = 0x32cb, required = 0x32cb
  BBED> verify
  DBVERIFY - Verification starting
  FILE = /oracle/product/oradata/roger/system01.dbf
  BLOCK = 106
  DBVERIFY - Verification complete
  Total Blocks Examined : 1
  Total Blocks Processed (Data) : 1
  Total Blocks Failing (Data) : 0
  Total Blocks Processed (Index): 0
  Total Blocks Failing (Index): 0
  Total Blocks Empty : 0
  Total Blocks Marked Corrupt : 0
  Total Blocks Influx : 0
  BBED>
  SQL> startup
  ORACLE instance started.
  Total System Global Area 167772160 bytes
  Fixed Size 1266392 bytes
  Variable Size 104860968 bytes
  Database Buffers 58720256 bytes
  Redo Buffers 2924544 bytes
  Database mounted.
  Database opened.
  SQL> select US#,NAME,FILE# ,BLOCK#,STATUS$ from undo$ where file#=2;
  US# NAMEFILE# BLOCK# STATUS$
  ---------- ------------------ -------------------- ----------
  1 _SYSSMU1$2 169 2
  2 _SYSSMU2$2 185 1
  3 _SYSSMU3$2 9 2
  4 _SYSSMU4$ 2 25 2
  5 _SYSSMU5$2 41 2
  6 _SYSSMU6$2 57 2
  7 _SYSSMU7$2 73 2
  8 _SYSSMU8$ 2 89 2
  9 _SYSSMU9$2 137 1
  10 _SYSSMU10$2 105 2
  11 _SYSSMU11$2 121 2
  12 _SYSSMU12$ 2 137 2
  31 _SYSSMU31$2 153 2
  13 rows selected.
  SQL> drop rollbacksegment "_SYSSMU2$";
  Rollback segment dropped.
  SQL> ---成功drop回滚段。
  SQL> conn roger/roger
  Connected.
  SQL> select count(*) from ht01;
  
  COUNT(*)
  ----------
  90
  
  
  
  
  
  -------------------------------------------------------------------------------------------------------
  Blog: http://blog.csdn.net/tianlesoftware
  Email: dvd.dba@gmail.com
  DBA1 群:62697716(满); DBA2 群:62697977(满)DBA3 群:62697850(满)
  DBA 超级群:63306533(满); DBA4 群: 83829929 DBA5群: 142216823
  DBA6 群:158654907 聊天 群:40132017 聊天2群:69087192
  --加群需要在备注说明Oracle表空间和数据文件的关系,否则拒绝申请

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-257005-1-1.html 上篇帖子: ORACLE数据泵 expdp/impdp使用详解(转) 下篇帖子: ArcSDE10.1配置Oracle 监听器来使用SQL操作ST_Geometry
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表