點擊上方藍字關注我們
故障描述
工作中發現主機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.后續業務使用新用戶,新表空間存儲數據。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/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