免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
打印 上一主题 下一主题

不一样的ORA-00607、ORA-00600错误! [复制链接]

论坛徽章:
0
11 [报告]
发表于 2011-04-02 16:19 |只看该作者
网上搜+楼上帮忙+自己试验,终于解决这个问题啦!
下面就把大概步骤写一下,供大家参考学习!

虽然
ORA-00607: Internal error occurred while making a change to a data block
ORA-00600: internal error code, arguments: [4194], [28], [25], [], [], [], [], []
是比较典型的跟UNDO表空间有关的错误,
但是
本例中压根没有UNDO!
原以为是不是因为没有才出的错啊,那就自己建一个呗,可是也建不了!
后来,发现在alert_sid.log文件里还有下面这个错误:
ORA-01595: error freeing extent (50) of rollback segment (4))
这种情况下应该是rollback回滚段出问题啦!

SQL> show parameter rollback
NAME                                 TYPE
------------------------------------ --------------------------------
VALUE
------------------------------
fast_start_parallel_rollback         string
LOW
max_rollback_segments                integer
73
rollback_segments                    string
rb1, rb2, rb3, rb4
transactions_per_rollback_segment    integer
5

SQL> select segment_name,tablespace_name,status from dba_rollback_segs;
SEGMENT_NAME                   TABLESPACE_NAME                STATUS
------------------------------ ------------------------------ ----------------
SYSTEM                         SYSTEM                         ONLINE
RB1                            ROLLBACK                       ONLINE
RB2                            ROLLBACK                       ONLINE
RB3                            ROLLBACK                       ONLINE
RB4                            ROLLBACK                       ONLINE

那就重建rollback回滚段试试呗:

在undo_management=AUTO时,不允许建rollback segment,否则报错
ORA-30019: Illegal rollback Segment operation in Automatic Undo mode

SQL>shutdown immediate;
SQL>startup mount;
SQL>show parameter undo; (这里可以查看undo的表空间管理方式应该是auto)
SQL>alter system set undo_management=manual scope=spfile;
SQL>shutdown immediate;
SQL>startup;
数据库实例起来后,再查看undo的表空间管理,应该就是manual了.

修改init<sid>.ora参数文件,使用Oracle隐含参数_corrupted_rollback_segments将回滚段标记为损坏,此时启动数据库,Oracle会跳过对于这些回滚段的相关操作,强制启动数据库:
_corrupted_rollback_segments = (rb1,rb2,rb3,rb4)

SQL> startup pfile=‘init<sid>.ora’;
SQL> SHOW PARAMETER ROLL

NAME                                 TYPE
------------------------------------ --------------------------------
VALUE
------------------------------
_corrupted_rollback_segments         string
rb1, rb2, rb3, rb4
fast_start_parallel_rollback         string
LOW
max_rollback_segments                integer
73
rollback_segments                    string

transactions_per_rollback_segment    integer

NAME                                 TYPE
------------------------------------ --------------------------------
VALUE
------------------------------
5
SQL>
SQL>
SQL>
SQL> select segment_name,tablespace_name,status from dba_rollback_segs;


SEGMENT_NAME                   TABLESPACE_NAME                STATUS
------------------------------ ------------------------------ ----------------
SYSTEM                         SYSTEM                         ONLINE
RB1                            ROLLBACK                       OFFLINE
RB2                            ROLLBACK                       OFFLINE
RB3                            ROLLBACK                       OFFLINE
RB4                            ROLLBACK                       OFFLINE

在只有SYSTEM回滚段ONLINE的情况下也不能建rollback segment,提示错误
ORA-01552: cannot use system rollback segment for non-system tablespace 'ROLLBACK'

解决办法就是:先在SYSTEM表空间建一个rollback segment,把它ONLINE,再建你需要的其它rollback segments,建完后可以把先建的在SYSYEM表空间里的rollback segment删除。
SQL> create rollback segment rb0 tablespace system storage (initial 128K next 128k optimal 2560k maxextents 20);

Rollback segment created.

SQL> alter rollback segment rb0 online;

Rollback segment altered.

SQL> create rollback segment rb01 tablespace rollback storage (initial 4096K next 4096K optimal 81920K minextents 20 maxextents 4096);

Rollback segment created.

SQL> create rollback segment rb02 tablespace rollback storage (initial 4096K next 4096K optimal 81920K minextents 20 maxextents 4096);

Rollback segment created.

SQL> create rollback segment rb03 tablespace rollback storage (initial 4096K next 4096K optimal 81920K minextents 20 maxextents 4096);

Rollback segment created.

SQL> create rollback segment rb04 tablespace rollback storage (initial 4096K next 4096K optimal 81920K minextents 20 maxextents 4096);

Rollback segment created.

SQL> alter rollback segment rb01 online;

Rollback segment altered.

SQL> alter rollback segment rb02 online;

Rollback segment altered.

SQL> alter rollback segment rb03 online;

Rollback segment altered.

SQL> alter rollback segment rb04 online;

Rollback segment altered.

SQL> select segment_name,tablespace_name,status from dba_rollback_segs;

SEGMENT_NAME                   TABLESPACE_NAME                STATUS
------------------------------ ------------------------------ ----------------
SYSTEM                         SYSTEM                         ONLINE
RB0                            SYSTEM                         ONLINE
RB1                            ROLLBACK                       OFFLINE
RB2                            ROLLBACK                       OFFLINE
RB3                            ROLLBACK                       OFFLINE
RB4                            ROLLBACK                       OFFLINE
RB01                           ROLLBACK                       ONLINE
RB02                           ROLLBACK                       ONLINE
RB03                           ROLLBACK                       ONLINE
RB04                           ROLLBACK                       ONLINE

10 rows selected.

SQL> alter  rollback segment rb0 offline;

Rollback segment altered.

SQL> drop rollback segment rb0;

Rollback segment dropped.

SQL> drop rollback segment rb1;

Rollback segment dropped.

SQL> drop rollback segment rb2;

Rollback segment dropped.

SQL> drop rollback segment rb3;

Rollback segment dropped.

SQL> drop rollback segment rb4;

Rollback segment dropped.

SQL> select segment_name,tablespace_name,status from dba_rollback_segs;

SEGMENT_NAME                   TABLESPACE_NAME                STATUS
------------------------------ ------------------------------ ----------------
SYSTEM                         SYSTEM                         ONLINE
RB01                           ROLLBACK                       ONLINE
RB02                           ROLLBACK                       ONLINE
RB03                           ROLLBACK                       ONLINE
RB04                           ROLLBACK                       ONLINE

修改init<sid>.ora参数文件,变更rollback_segments,并取消_corrupted_rollback_segments设置:
rollback_segments = (rb01,rb02,rb03,rb04)

编辑init.ora参数文件,添加:
rollback_segments = (rb01, rb02, rb03, rb04)
否则,新建的rollback不会自动ONLINE!

别忘了:
SQL> alter system set undo_management=auto scope=spfile;

System altered.

SQL> create spfile from pfile;

File created.

SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup
ORACLE instance started.

Total System Global Area  438916600 bytes
Fixed Size                   456184 bytes
Variable Size             268435456 bytes
Database Buffers          167772160 bytes
Redo Buffers                2252800 bytes
Database mounted.
Database opened.

至此,一切正常啦:
SQL> show parameter undo

NAME                                 TYPE
------------------------------------ --------------------------------
VALUE
------------------------------
undo_management                      string
AUTO
undo_retention                       integer
900
undo_suppress_errors                 boolean
FALSE
undo_tablespace                      string

SQL> show parameter roll

NAME                                 TYPE
------------------------------------ --------------------------------
VALUE
------------------------------
fast_start_parallel_rollback         string
LOW
max_rollback_segments                integer
73
rollback_segments                    string
rb01, rb02, rb03, rb04
transactions_per_rollback_segment    integer
5

SQL> select segment_name,tablespace_name,status from dba_rollback_segs;

SEGMENT_NAME                   TABLESPACE_NAME                STATUS
------------------------------ ------------------------------ ----------------
SYSTEM                         SYSTEM                         ONLINE
RB01                           ROLLBACK                       ONLINE
RB02                           ROLLBACK                       ONLINE
RB03                           ROLLBACK                       ONLINE
RB04                           ROLLBACK                       ONLINE

论坛徽章:
0
12 [报告]
发表于 2011-04-11 13:48 |只看该作者
共享一下先!

论坛徽章:
1
白羊座
日期:2014-08-26 20:58:00
13 [报告]
发表于 2011-04-13 09:43 |只看该作者
暂时还没碰到过,帮顶,不过600错误网上有很多资料的,你可以去找找~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP