转运固定损坏的系统管理的撤消段

有关处理腐败的其他信息, 见 不列颠哥伦比亚省专家关于腐败的笔记

见MOSC注释 1088018.1 – 处理Oracle数据库损坏问题.

另请参阅如何修复 撤消日志损坏 (现在-00375) 使用 _undo_log_corruption

在 Oracle 和更高版本的 Oracle 中,旧的回滚段已被替换为

撤销段和大部分, 已自动调整大小和管理. 然而,

当这些系统创建和管理的撤消段之一损坏时会发生什么?

好, 一方面,您将在警报日志中收到类似于以下内容的错误:

文件 /oracle/admin/test/bdump/test2_smon_21466.trc 中的错误:

现在-00600: 内部错误代码, 争论: [6006], [1], [], [], [], [], [], []

斯蒙: 标记撤销段 29 由于需要恢复

ORACLE 实例测试2 (pid = 11) – 错误 600 恢复事务时遇到

(29, 42) 在对象上 36.

(请注意,这将显示相​​同的撤销段, 交易, 和对象编号每次

它发生, 如果撤销段和事务号不同, 那么问题出在对象上

显示的数字)

实际上, 你可能会一遍又一遍地得到很多这样的东西.

所以, 你能怎么办?

如果您尝试使用 ALTER ROLLBACK SEGMENT 命令更改撤销段,您

将被明确告知这是系统管理的并且可以?不会被改变.

所以, 这是你需要做的:

新建系统管理undo表空间:

连接 / 作为sysdba

创建撤销表空间undotbs2数据文件 “/u02/oracle/oradata/test/undotbs2.dbf”

尺寸 500m;

确定问题撤销段:

选择段名称, 来自 dba_rollback_segs 的状态;

 

问题部分将显示一个 ?需要恢复? 状态.

改变系统以使用新的撤销表空间:

更改系统设置 undo_tablespace=undotbs2 scope=both;

(请注意,如果您没有使用 spfile, 省略范围命令)

如果您使用的是 spfile, 从中创建一个 pfile:

连接 / 作为sysdba

创建 pfile=”/u01/oracle/admin/test/pfile/inittest.ora” 来自spfile;

编辑 inittest.ora pfile 并添加 (使用示例错误中的撤销段):

*._offline_rollback_segments=? _SYSSMU29$?

*._corrupt_rollback_segments=?_SYSSMU29$?

现在关闭您的实例, 这可能需要关闭中止, 但首先尝试立即关机.

使用手动启动命令启动:

启动文件=”/u01/oacle/admin/test/pfile=inittest.ora”

离线更改旧的撤消表空间:

离线更改表空间 undotbs1;

删除有问题的表空间:

删除表空间 undotbs1,包括内容和数据文件;

立即关机.

编辑inittest.ora文件去掉下划线参数.

使用 pfile 选项重启实例.

从 pfile 创建一个 spfile:

从 pfile= 创建 spfile”/u01/oracle/admin/test/pfile/inittest.ora”;

一步 13 完成后数据库应该正常启动. 然而, 这可能是明智的

进行完整备份,然后使用导出和导入进行重建. 因为我们不得不放弃撤销

具有一些未应用的可能活动事务的段,数据库可能未完全

持续的.

发表评论