点击上方蓝字关注我们
故障描述
工作中发现主机b-domain3上AAA数据库异常,数据库处于mount状态,使用命令打开数据库。数据库出现如下错误
经查询此错误为磁盘产生坏块,数据库编号为20的文件在进行CP命令时,无法正常进行,其余文件可正常进行,确定为已损坏文件。
数据库处于noarchivelog模式,备份文件时间为2017年份,无法使用,故进行数据恢复时会丢失数据,只能进行部分恢复。
1.确定表空间所有对象
a) LOB字段
b) 子分区
c) 分区表
d) 普通表
e) 子分区索引
f) 分区索引
g) 普通索引
2.确定非20号文件对象
select ‘alter table ‘||owner||’.’||table_name||’ move tablespace AAA_OBS_DATA1 PARALLEL 8;’ from dba_dba_extents where segment_type=’TABLE’ and relative_fno<>20 and tablespace_name=’AAA_OBS_DATA’;
生成迁移表空间脚本
3.迁移正常表到新表空间
a) 使用步骤三中生成的脚本进行表空间迁移,将正常表从AAA_OBS_DATA表空间迁移到AAA_OBS_DATA1表空间。
b) 迁移lob字段(根据步骤1中a序列生成的内容)
ALTER TABLE AAA.BAK_I_BUSI MOVE LOB (HUB_INFO) STORE AS (TABLESPACE AAA_OBS_DATA1); ALTER TABLE AAA.BAK_I_BUSI MOVE LOB (COMMAND_CONTENT) STORE AS (TABLESPACE AAA_OBS_DATA1); |
c) 迁移索引(根据步骤1中g序列生成的内容)
ALTER INDEX AAA.SYS_IL0000020524C00010$$ REBUILD TABLESPACE AAA_OBS_DATA1; ALTER INDEX AAA.SYS_IL0000020524C00009$$ REBUILD TABLESPACE AAA_OBS_DATA1; ALTER INDEX AAA.I191000_0_PK REBUILD TABLESPACE AAA_OBS_DATA1; ALTER INDEX AAA.I191000_0_UK REBUILD TABLESPACE AAA_OBS_DATA1; ALTER INDEX AAA.I191000_1_UK REBUILD TABLESPACE AAA_OBS_DATA1; ALTER INDEX AAA.I185000_0_INDEX REBUILD TABLESPACE AAA_OBS_DATA1; ALTER INDEX AAA.PK_SVC_TEMPLET_INFO REBUILD TABLESPACE AAA_OBS_DATA1; ALTER INDEX AAA.PK_BIZ_INFO REBUILD TABLESPACE AAA_OBS_DATA1; ALTER INDEX AAA.PK_TRAN_INFO REBUILD TABLESPACE AAA_OBS_DATA1; ALTER INDEX AAA.PK_COMM_INTERF_SVC_INFO REBUILD TABLESPACE AAA_OBS_DATA1; ALTER INDEX AAA.I135000_0_INDEX REBUILD TABLESPACE AAA_OBS_DATA1; ALTER INDEX AAA.I135000_1_INDEX REBUILD TABLESPACE AAA_OBS_DATA1; ALTER INDEX AAA.GJ7_CK_AAA_USERINFO_ALL_BID REBUILD TABLESPACE AAA_OBS_DATA1; ALTER INDEX AAA.I162000_0_PK REBUILD TABLESPACE AAA_OBS_DATA1; ALTER INDEX AAA.SYS_C0067279 REBUILD TABLESPACE AAA_OBS_DATA1; ALTER INDEX AAA.SYS_C0067280 REBUILD TABLESPACE AAA_OBS_DATA1; ALTER INDEX AAA.SYS_C0067283 REBUILD TABLESPACE AAA_OBS_DATA1; |
4.确定20号文件中的对象
selectdistinct owner,segment_name from dba_extents wheresegment_type=TABLE and relative_fno=20;(部分数据)
5.恢复20号文件中受影响对象
根据步骤4中查询到的表检索extents分布状况
SELECT e.segment_name, o.data_object_id, e.relative_fno, e.block_id, e.blocks FROM dba_extents e, dba_objects o WHERE o.owner = e.owner AND o.object_name = e.segment_name AND e.owner = AAA AND e.segment_name = ACCESS_LOG_2020070112 AND e.relative_fno = 20 ORDER BY e.relative_fno, o.data_object_id, e.block_id; |
根据data_object_id,relative_fno,block_id构造最大/最小rowid
最小:
SELECT dbms_rowid.rowid_create(1, 92499, 20, 2057856, 0) low_rid FROM dual; |
最大:
SELECT dbms_rowid.rowid_create(1, 92499, 20, 3145857, 0) low_rid FROM dual; |
创建表:
根据影响最小rowid创建表
CREATE TABLE aaa.ACCESS_LOG_2020070112_BAK TABLESPACE AAA_OBS_DATA1 AS SELECT * FROM aaa.ACCESS_LOG_2020070112 where rowid < AAAWlTAAUAAH2aAAAA; |
根据插入影响最大的rowid之后数据
INSERT INTO aaa.ACCESS_LOG_2020070112_BAK SELECT * FROM aaa.ACCESS_LOG_2020070112 WHERE ROWID > AAAWlTAAUAAMACBAAA; |
提取原表索引信息,
SELECT DBMS_METADATA.GET_DDL(INDEX,INDEX_NAME,AAA) FROM DUAL; |
创建关于新表的索引。
其他表根据以上操作,进行创建恢复。
6.无法恢复对象
在步骤5中对受影响表进行数据恢复,只能恢复部分数据,有部分表在构造rowid时,产生了错误的rowid,无法进行恢复。
无法恢复数据表:(共计14张表无法恢复)
ACCESS_LOG_2020090147 ACCESS_LOG_2020090141 ACCESS_LOG_2020090118 ACCESS_LOG_2020070135 ACCESS_LOG_2020070132 ACCESS_LOG_2020110156 ACCESS_LOG_2020110151 ACCESS_LOG_2020110152 ACCESS_LOG_2020110148 ACCESS_LOG_2020110146 ACCESS_LOG_2020100157 ACCESS_LOG_2020100150 ACCESS_LOG_2020100135 ACCESS_LOG_2020100132 |
7.建议
数据库运行在非归档模式下,故障发生后没有有效的备份,很难进行数据的完全恢复,因此建议:
1.数据开启归档模式
2.每日对数据库进行备份(全备,增量备份)
3.后续业务使用新用户,新表空间存储数据。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/129986.html
摘要:在从返回前,线程与其他线程竞争重新获得锁。就绪队列存储了将要获得锁的线程,阻塞队列存储了被阻塞的线程。当线程呈状态,调用线程对象的方法会出现异常。在执行同步代码块过程中,遇到异常而导致线程终止,锁也会被释放。 方法wait()的作用是使当前执行代码的线程进行等待,wait()方法是Object类的方法,该方法用来将当前线程置入预执行队列中,并且在wait()所在的代码行处停止执行,直...
摘要:分布式情况下这个就需要换成分布式锁以保证数据一致性。三分布式锁实现原理所需的依赖一个拥有强一致性的服务发现存储仓库。保证数据一致性一个具有高可用性的服务发现存储仓库。 一、基本概念 分布式锁,是单机锁的一种扩展,主要是为了锁住分布式系统中不同机器代码的物理块或逻辑块。以此保证不同机器之间的逻辑一致性。 二、一个简单的案例 对DB写操作的双检锁案例 伪代码如下 if (可以插入一条数...
阅读 1346·2023-01-11 13:20
阅读 1684·2023-01-11 13:20
阅读 1132·2023-01-11 13:20
阅读 1858·2023-01-11 13:20
阅读 4100·2023-01-11 13:20
阅读 2704·2023-01-11 13:20
阅读 1385·2023-01-11 13:20
阅读 3597·2023-01-11 13:20