上班屁股刚挨到凳子,就听早班的同事在嘟嘟囔囔,根据哥对这个货的了解,大概率碰到什么问题了。
凑近一看,原来一个测试库在添加分区时指定表空间后报表空间不存在,哥的第一反应是不是这二货昨晚和老婆滚床单滚的有点五行缺肾,把表空间名字写错了。
我自己反复确认后发现,SQL语法没错,表空间没问题。那为啥子会报错呢,真的是遇到锤子了。
其中诡异的是表空间指定的是TBS_005,但报错报的是表空间TBS_001不存在。
但有一个共同的特点是有LOB字段的表都无法创建到新的表空间。
搞到这里,莫名有种挤压感,这问题貌似有点严重啊,分区创建不了,后续数据插不进来,到时候就是菊花满地飘,鸡飞狗跳了。
所以抓紧投入到问题诊断解决中。为了让大家都知道发生了啥,截个报错截图:
作为一个伪专家,上来咱得先收集下相关trace不。于是ora-00959的error stack的走起,看看能不能发现什么幺蛾子:
alter session set tracefile_identifier=959; alter session set events 959 trace name errorstack level 3; alter table OUSP.T_TD add partition P20190402 values(20190402) compress for query high tablespace TBS_005 lob(BY_DISTNC_NAME,BY_GPRS_NAME) store as (tablespace TBS_005); alter session set events 959 trace name errorstack off; |
Trace日志截图如下:
然鹅,并没有发现啥有指向性的线索。。。
平复一下思绪,回到刚才的问题点,明明指定的表空间是TBS_005,为啥报TBS_001不存在?
哦!脑子在高速旋转的过程中,突然想起来前段时间这个测试库的表空间因为前期规划不合理,为了规范简约化运维,做过表空间数据迁移,并删除了一部分表空间,TBS_001就是那批删除表空间中的一个。
但当时做数据迁移时我们把所有对象都迁移至其他表空间,确认无误后才删除的TBS_001,并且整个删除过程正常,无任何操作报错+日志报错。
既然TBS_001都变成灰,消户了,那为啥子在添加分区的时候还报它的信息,想到这里感觉头皮发麻。
这种麻觫感下,顺其自然的想到还有什么跟这个表空间有关系,并且还是在添加分区的情况下?
难道是表的默认表空间是TBS_001?也没道理啊,我都指定了其他表空间。
先查下表的默认表空间,截图如下:
尝试更改默认表空间:
ALTER TABLE OUSP.T_TD MODIFY DEFAULT ATTRIBUTES TABLESPACE TBS_005;
卵还是没起到作用,添加分区时报错依旧。
那还有什么对象和表空间相关?脑子想到这里,顺口说了出来,只见单身20多年的这个哥们已经把索引分区的默认表空间打出来了,截图如下:
发现索引及LOB的默认表空间都是TBS_001。
尝试修改LOB索引的默认表空间,截图如下:
从报错来看lob index不能修改,那就修改下LOB的默认表空间。
alter table OUSP.T_TD modify default attributes lob (SYS_LOB0000063498C00043$$) (tablespace TBS_005); alter table OUSP.T_TD modify default attributes lob (SYS_LOB0000063498C00043$$) (tablespace TBS_005); |
更改LOB默认表空间之后,分区可以正常添加了。
到这里这个疑难杂症已经一目了然了。
经验总结:
涉及LOB表在迁移表空间时,除了要修改表的默认表空间,LOB的默认表空间也要根据具体情况考虑是否对应予以修改掉。
这里可以深入思考一下:为啥LOB默认表空间已经不存在,数据还能插入,且不报错?
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/130235.html
摘要:新晋技术专家下面是墨天轮部分新晋的技术专家。大家可以点击往期阅读墨天轮技术专家邀请函了解详情,申请成为我们的技术专家,加入专家团队,与我们一起创建一个开放互助的数据库技术社区。新关联公众号墨天轮是一个开放互助的数据库技术社区。 引言 近期我们在DBASK小程序增加了数据库 MongoDB、Redis、 Elasticsearch、DB2、Weblogic 等新的的专题栏目和一些新的技术...
摘要:问题九库控制文件扩展报错库的扩展报错,用的是裸设备,和还是原来大小,主库的没有报错,并且大小没有变,求解释。专家解答从报错可以看出,控制文件从个块扩展到个块时报错,而裸设备最大只支持个块,无法扩展,可以尝试将参数改小,避免控制文件报错。 链接描述引言 近期我们在DBASK小程序新关联了运维之美、高端存储知识、一森咖记、运维咖啡吧等数据领域的公众号,欢迎大家阅读分享。 问答集萃 接下来,...
阅读 1247·2023-01-11 13:20
阅读 1555·2023-01-11 13:20
阅读 1008·2023-01-11 13:20
阅读 1676·2023-01-11 13:20
阅读 3968·2023-01-11 13:20
阅读 2510·2023-01-11 13:20
阅读 1305·2023-01-11 13:20
阅读 3474·2023-01-11 13:20