查看: 5907|回复: 30

对象C_OBJ#_INTCOL#有坏块,如何处理较好

[复制链接]
论坛徽章:
31
2009日食纪念
日期:2009-07-22 09:30:00奥迪
日期:2013-11-14 11:32:05路虎
日期:2013-12-08 15:08:54比亚迪
日期:2013-12-13 12:43:05问答徽章
日期:2013-12-22 20:52:17大众
日期:2013-12-26 17:00:48技术图书徽章
日期:2014-01-26 14:23:572014年新春福章
日期:2014-02-18 16:43:09马上有钱
日期:2014-02-18 16:43:09马上有车
日期:2014-03-03 19:35:04
跳转到指定楼层
1#
发表于 2016-7-18 18:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 湖湘文化 于 2016-7-18 18:03 编辑

现状:
soloris9 平台有oracle 10.2单实例数据库出现坏块,业务目前正常,该数据库晚上可以申请停;

出现坏块的对象是    簇C_OBJ#_INTCOL#,坏块数量不多,只有几个,
检查rman备份报错ora-19566才发现有坏块的,
用blockrecover修复时提示没有找到有效的备份,
估计前面几次备份都没有成功。


处理思路:
第1步,通过调整rman脚本,重新尝试备份:
set maxcorrupt for datafile 。。。


另外,再做一个冷备和逻辑导出备份;


第2步,设置event 38003,truncate该对象


第3步,去掉上述event参数设置,检查数据库系统是否正常


问题:
1,上述处理坏块的思路是否可行?
   oracle support网站上建议重建数据库,是否必须?


2,truncate该对象风险有多大,有没有朋友在生产库上执行过该操作的?


3,truncate后是否还需要做其他操作?

谢谢各位!


论坛徽章:
42
ITPUB季度 技术新星
日期:2012-05-22 15:10:11祖母绿
日期:2013-09-13 21:16:10蓝锆石
日期:2013-09-13 21:15:34海蓝宝石
日期:2013-09-13 21:13:45最佳人气徽章
日期:2012-03-13 17:39:18优秀写手
日期:2013-12-18 09:29:11ITPUB社区12周年站庆徽章
日期:2013-10-17 13:56:592013年新春福章
日期:2013-02-25 14:51:24玉石琵琶
日期:2012-02-21 15:04:38ITPUB 11周年纪念徽章
日期:2012-10-09 18:08:15
2#
发表于 2016-7-18 21:21 | 只看该作者
这个表,可以特殊处理,但是建议在oracle 支持下做。否则如果发生其他异常,oracle 可能不支持

使用道具 举报

回复
论坛徽章:
194
红宝石
日期:2014-05-09 08:24:37萤石
日期:2014-01-03 10:25:39奥运会纪念徽章:羽毛球
日期:2008-07-01 10:46:06奥运会纪念徽章:马术
日期:2008-07-07 17:43:24奥运会纪念徽章:射箭
日期:2008-07-25 18:07:39奥运会纪念徽章:皮划艇激流回旋
日期:2008-07-30 10:02:57奥运会纪念徽章:花样游泳
日期:2008-09-26 13:02:43奥运会纪念徽章:排球
日期:2008-12-03 11:23:272010新春纪念徽章
日期:2010-01-04 08:33:082010年世界杯参赛球队:澳大利亚
日期:2010-02-26 11:08:44
3#
发表于 2016-7-18 22:04 | 只看该作者
能确定坏块地址吗?

使用道具 举报

回复
论坛徽章:
31
2009日食纪念
日期:2009-07-22 09:30:00奥迪
日期:2013-11-14 11:32:05路虎
日期:2013-12-08 15:08:54比亚迪
日期:2013-12-13 12:43:05问答徽章
日期:2013-12-22 20:52:17大众
日期:2013-12-26 17:00:48技术图书徽章
日期:2014-01-26 14:23:572014年新春福章
日期:2014-02-18 16:43:09马上有钱
日期:2014-02-18 16:43:09马上有车
日期:2014-03-03 19:35:04
4#
 楼主| 发表于 2016-7-18 22:26 | 只看该作者
xifenfei 发表于 2016-7-18 21:21
这个表,可以特殊处理,但是建议在oracle 支持下做。否则如果发生其他异常,oracle 可能不支持

怎么个特殊处理?bbed吗

谢谢

使用道具 举报

回复
论坛徽章:
31
2009日食纪念
日期:2009-07-22 09:30:00奥迪
日期:2013-11-14 11:32:05路虎
日期:2013-12-08 15:08:54比亚迪
日期:2013-12-13 12:43:05问答徽章
日期:2013-12-22 20:52:17大众
日期:2013-12-26 17:00:48技术图书徽章
日期:2014-01-26 14:23:572014年新春福章
日期:2014-02-18 16:43:09马上有钱
日期:2014-02-18 16:43:09马上有车
日期:2014-03-03 19:35:04
5#
 楼主| 发表于 2016-7-18 22:27 | 只看该作者
lfree 发表于 2016-7-18 22:04
能确定坏块地址吗?

可以确定坏块地址啊,
然后可以怎么处理呢?

谢谢

使用道具 举报

回复
论坛徽章:
194
红宝石
日期:2014-05-09 08:24:37萤石
日期:2014-01-03 10:25:39奥运会纪念徽章:羽毛球
日期:2008-07-01 10:46:06奥运会纪念徽章:马术
日期:2008-07-07 17:43:24奥运会纪念徽章:射箭
日期:2008-07-25 18:07:39奥运会纪念徽章:皮划艇激流回旋
日期:2008-07-30 10:02:57奥运会纪念徽章:花样游泳
日期:2008-09-26 13:02:43奥运会纪念徽章:排球
日期:2008-12-03 11:23:272010新春纪念徽章
日期:2010-01-04 08:33:082010年世界杯参赛球队:澳大利亚
日期:2010-02-26 11:08:44
6#
发表于 2016-7-19 07:50 | 只看该作者
湖湘文化 发表于 2016-7-18 22:27
可以确定坏块地址啊,
然后可以怎么处理呢?

dbv 检查。
或者在rman
validate datafile 1;

使用道具 举报

回复
论坛徽章:
31
2009日食纪念
日期:2009-07-22 09:30:00奥迪
日期:2013-11-14 11:32:05路虎
日期:2013-12-08 15:08:54比亚迪
日期:2013-12-13 12:43:05问答徽章
日期:2013-12-22 20:52:17大众
日期:2013-12-26 17:00:48技术图书徽章
日期:2014-01-26 14:23:572014年新春福章
日期:2014-02-18 16:43:09马上有钱
日期:2014-02-18 16:43:09马上有车
日期:2014-03-03 19:35:04
7#
 楼主| 发表于 2016-7-19 08:47 | 只看该作者
lfree 发表于 2016-7-19 07:50
dbv 检查。
或者在rman
validate datafile 1;

这些都做过,,关键是没有有效的备份,如何处理这几个坏块

使用道具 举报

回复
论坛徽章:
194
红宝石
日期:2014-05-09 08:24:37萤石
日期:2014-01-03 10:25:39奥运会纪念徽章:羽毛球
日期:2008-07-01 10:46:06奥运会纪念徽章:马术
日期:2008-07-07 17:43:24奥运会纪念徽章:射箭
日期:2008-07-25 18:07:39奥运会纪念徽章:皮划艇激流回旋
日期:2008-07-30 10:02:57奥运会纪念徽章:花样游泳
日期:2008-09-26 13:02:43奥运会纪念徽章:排球
日期:2008-12-03 11:23:272010新春纪念徽章
日期:2010-01-04 08:33:082010年世界杯参赛球队:澳大利亚
日期:2010-02-26 11:08:44
8#
发表于 2016-7-19 10:36 | 只看该作者
[20160719]对象C_OBJ#_INTCOL#有坏块.txt

--论坛上有人问对象C_OBJ#_INTCOL#有坏块,链接如下:
--http://www.itpub.net/thread-2063836-1-1.html
--自己也探究看看:

1.环境:
SCOTT@book> @ &r/ver1
PORT_STRING         VERSION        BANNER
------------------- -------------- --------------------------------------------------------------------------------
x86_64/Linux 2.4.xx 11.2.0.4.0     Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production

SCOTT@book> select * from dba_objects where object_name='C_OBJ#_INTCOL#';
OWNER  OBJECT_NAME          SUBOBJECT_  OBJECT_ID DATA_OBJECT_ID OBJECT_TYPE         CREATED             LAST_DDL_TIME       TIMESTAMP           STATUS  T G S  NAMESPACE EDITION_NAME
------ -------------------- ---------- ---------- -------------- ------------------- ------------------- ------------------- ------------------- ------- - - - ---------- ------------------------------
SYS    C_OBJ#_INTCOL#                         444            444 CLUSTER             2013-08-24 11:37:43 2013-08-24 11:37:43 2013-08-24:11:37:43 VALID   N N N          5

--不在SYS.BOOTSTRAP$的对象内。里面仅仅有表SYS.HISTGRM$。

CREATE TABLE SYS.HISTGRM$
(
  OBJ#      NUMBER,
  COL#      NUMBER,
  ROW#      NUMBER,
  BUCKET    NUMBER,
  ENDPOINT  NUMBER,
  INTCOL#   NUMBER,
  EPVALUE   VARCHAR2(1000 BYTE),
  SPARE1    NUMBER,
  SPARE2    NUMBER
)
CLUSTER SYS.C_OBJ#_INTCOL#(OBJ#, INTCOL#);

--这个表是直方图的内容。我觉得如果是几个块问题,你可以看看涉及obj#对象,删除这些对象的直方图,也就是分析对应表时设置
--Method_Opt => 'FOR ALL COLUMNS SIZE 1 '.

--以前按照eygle的方法我在测试环境做过,遇到一些问题,机器无法登录的情况,我把当时的测试摘录下来版本应该10.2.0.4,仅仅作为你的参考:
--你可以自己测试看看:
http://www.eygle.com/archives/20 ... 3_c_obj_intcol.html

alter system set event='38003 trace name context forever, level 10' scope=spfile;

$ oerr ora 38003
38003, 00000, "CBO Disable column stats for the dictionary objects in recursive SQL"
// *Cause:
// *Action:

然后重启数据库,可以Truncate该对象:
SYS@test> alter system set event='38003 trace name context forever, level 10' scope=spfile;
System altered.

SYS@test> startup
ORACLE instance started.
Total System Global Area    473956352 bytes
Fixed Size                    2084776 bytes
Variable Size               142606424 bytes
Database Buffers            318767104 bytes
Redo Buffers                 10498048 bytes
Database mounted.
Database opened.
SYS@test> show parameter event
NAME   TYPE    VALUE
------ ------- -------------------------------------------
event  string  38003 trace name context forever, level 10

SYS@test> truncate cluster SYS.C_OBJ#_INTCOL#;
Cluster truncated.

SYS@test> alter system reset event  scope=spfile sid='*';
System altered.


--使用toad连接报错。

ORA-00600: internal error code, arguments: [15160], [], [], [], [], [], [], []
ORA-06512: at line 138

--估计是bug
http://www.askmaclean.com/archiv ... rguments-15160.html

--好像当时许多语句无法执行,必须先设置
alter system set optimizer_mode=rule scope=memory ;
--分析系统表sys,还有应用表,然后OK了。

使用道具 举报

回复
论坛徽章:
194
红宝石
日期:2014-05-09 08:24:37萤石
日期:2014-01-03 10:25:39奥运会纪念徽章:羽毛球
日期:2008-07-01 10:46:06奥运会纪念徽章:马术
日期:2008-07-07 17:43:24奥运会纪念徽章:射箭
日期:2008-07-25 18:07:39奥运会纪念徽章:皮划艇激流回旋
日期:2008-07-30 10:02:57奥运会纪念徽章:花样游泳
日期:2008-09-26 13:02:43奥运会纪念徽章:排球
日期:2008-12-03 11:23:272010新春纪念徽章
日期:2010-01-04 08:33:082010年世界杯参赛球队:澳大利亚
日期:2010-02-26 11:08:44
9#
发表于 2016-7-19 10:38 | 只看该作者
[20160719]对象C_OBJ#_INTCOL#有坏块.txt

--论坛上有人问对象C_OBJ#_INTCOL#有坏块,链接如下:
--http://www.itpub.net/thread-2063836-1-1.html
--自己也探究看看:

1.环境:
SCOTT@book> @ &r/ver1
PORT_STRING         VERSION        BANNER
------------------- -------------- --------------------------------------------------------------------------------
x86_64/Linux 2.4.xx 11.2.0.4.0     Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production

SCOTT@book> select * from dba_objects where object_name='C_OBJ#_INTCOL#';
OWNER  OBJECT_NAME          SUBOBJECT_  OBJECT_ID DATA_OBJECT_ID OBJECT_TYPE         CREATED             LAST_DDL_TIME       TIMESTAMP           STATUS  T G S  NAMESPACE EDITION_NAME
------ -------------------- ---------- ---------- -------------- ------------------- ------------------- ------------------- ------------------- ------- - - - ---------- ------------------------------
SYS    C_OBJ#_INTCOL#                         444            444 CLUSTER             2013-08-24 11:37:43 2013-08-24 11:37:43 2013-08-24:11:37:43 VALID   N N N          5

--不在SYS.BOOTSTRAP$的对象内。里面仅仅有表SYS.HISTGRM$。

CREATE TABLE SYS.HISTGRM$
(
  OBJ#      NUMBER,
  COL#      NUMBER,
  ROW#      NUMBER,
  BUCKET    NUMBER,
  ENDPOINT  NUMBER,
  INTCOL#   NUMBER,
  EPVALUE   VARCHAR2(1000 BYTE),
  SPARE1    NUMBER,
  SPARE2    NUMBER
)
CLUSTER SYS.C_OBJ#_INTCOL#(OBJ#, INTCOL#);

--这个表是直方图的内容。我觉得如果是几个块问题,你可以看看涉及obj#对象,删除这些对象的直方图,也就是分析对应表时设置
--Method_Opt => 'FOR ALL COLUMNS SIZE 1 '.

--以前按照eygle的方法我在测试环境做过,遇到一些问题,机器无法登录的情况,我把当时的测试摘录下来版本应该10.2.0.4,仅仅作为你的参考:
--你可以自己测试看看:
http://www.eygle.com/archives/20 ... 3_c_obj_intcol.html

alter system set event='38003 trace name context forever, level 10' scope=spfile;

$ oerr ora 38003
38003, 00000, "CBO Disable column stats for the dictionary objects in recursive SQL"
// *Cause:
// *Action:

然后重启数据库,可以Truncate该对象:
SYS@test> alter system set event='38003 trace name context forever, level 10' scope=spfile;
System altered.

SYS@test> startup
ORACLE instance started.
Total System Global Area    473956352 bytes
Fixed Size                    2084776 bytes
Variable Size               142606424 bytes
Database Buffers            318767104 bytes
Redo Buffers                 10498048 bytes
Database mounted.
Database opened.
SYS@test> show parameter event
NAME   TYPE    VALUE
------ ------- -------------------------------------------
event  string  38003 trace name context forever, level 10

SYS@test> truncate cluster SYS.C_OBJ#_INTCOL#;
Cluster truncated.

SYS@test> alter system reset event  scope=spfile sid='*';
System altered.


--使用toad连接报错。

ORA-00600: internal error code, arguments: [15160], [], [], [], [], [], [], []
ORA-06512: at line 138

--估计是bug
http://www.askmaclean.com/archiv ... rguments-15160.html

--好像当时许多语句无法执行,必须先设置
alter system set optimizer_mode=rule scope=memory ;
--分析系统表sys,还有应用表,然后OK了。

使用道具 举报

回复
论坛徽章:
194
红宝石
日期:2014-05-09 08:24:37萤石
日期:2014-01-03 10:25:39奥运会纪念徽章:羽毛球
日期:2008-07-01 10:46:06奥运会纪念徽章:马术
日期:2008-07-07 17:43:24奥运会纪念徽章:射箭
日期:2008-07-25 18:07:39奥运会纪念徽章:皮划艇激流回旋
日期:2008-07-30 10:02:57奥运会纪念徽章:花样游泳
日期:2008-09-26 13:02:43奥运会纪念徽章:排球
日期:2008-12-03 11:23:272010新春纪念徽章
日期:2010-01-04 08:33:082010年世界杯参赛球队:澳大利亚
日期:2010-02-26 11:08:44
10#
发表于 2016-7-19 10:42 | 只看该作者
--论坛上有人问对象C_OBJ#_INTCOL#有坏块,链接如下:
--http://www.itpub.net/thread-2063836-1-1.html
--自己也探究看看:

1.环境:
SCOTT@book> @ &r/ver1
PORT_STRING         VERSION        BANNER
------------------- -------------- --------------------------------------------------------------------------------
x86_64/Linux 2.4.xx 11.2.0.4.0     Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production

SCOTT@book> select * from dba_objects where object_name='C_OBJ#_INTCOL#';
OWNER  OBJECT_NAME          SUBOBJECT_  OBJECT_ID DATA_OBJECT_ID OBJECT_TYPE         CREATED             LAST_DDL_TIME       TIMESTAMP           STATUS  T G S  NAMESPACE EDITION_NAME
------ -------------------- ---------- ---------- -------------- ------------------- ------------------- ------------------- ------------------- ------- - - - ---------- ------------------------------
SYS    C_OBJ#_INTCOL#                         444            444 CLUSTER             2013-08-24 11:37:43 2013-08-24 11:37:43 2013-08-24:11:37:43 VALID   N N N          5

--不在SYS.BOOTSTRAP$的对象内。里面仅仅有表SYS.HISTGRM$。

CREATE TABLE SYS.HISTGRM$
(
  OBJ#      NUMBER,
  COL#      NUMBER,
  ROW#      NUMBER,
  BUCKET    NUMBER,
  ENDPOINT  NUMBER,
  INTCOL#   NUMBER,
  EPVALUE   VARCHAR2(1000 BYTE),
  SPARE1    NUMBER,
  SPARE2    NUMBER
)
CLUSTER SYS.C_OBJ#_INTCOL#(OBJ#, INTCOL#);

--这个表是直方图的内容。我觉得如果是几个块问题,你可以看看涉及obj#对象,删除这些对象的直方图,也就是分析对应表时设置
--Method_Opt => 'FOR ALL COLUMNS SIZE 1 '.

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表