Oracle數(shù)據(jù)庫丟失表排查思路實戰(zhàn)記錄
說明:
由于系統(tǒng)采用ID取模分表法進行Oracle數(shù)據(jù)存儲,某日發(fā)現(xiàn)Oracle數(shù)據(jù)庫中缺少對應(yīng)的幾張業(yè)務(wù)數(shù)據(jù)表,遂進行相關(guān)問題查詢,簡單記錄一下排查思路;
- 由于我們代碼中實現(xiàn)思路是判斷如果沒有對應(yīng)的表會自動創(chuàng)建,所以首先需要查詢一下缺失數(shù)據(jù)庫表的創(chuàng)建時間
SELECT * FROM dba_objects where OBJECT_NAME LIKE 'LOG_5%' AND owner = 'Geoff';
- 通過查詢Oracle執(zhí)行SQL歷史記錄,數(shù)據(jù)庫表的刪除時間段
select * from v$sqlarea b where b.FIRST_LOAD_TIME between '2022-05-31/21:30:00' and'2022-05-31/23:30:00'` order by b.FIRST_LOAD_TIME;
- 通過上述SQL還是無法查詢具體表的刪除時間,故查詢當(dāng)前用戶的數(shù)據(jù)庫回收站
SELECT * FROM recyclebin_temp WHERE TYPE = 'TABLE' ORDER BY droptime DESC;
- 通過回收站查詢到相應(yīng)的已刪除數(shù)據(jù)庫表,并將數(shù)據(jù)庫已刪除表恢復(fù)至刪除前,包含表中數(shù)據(jù)
flashback TABLE LOG_505 to before drop RENAME to LOG_505_temp ;
- 因為數(shù)據(jù)恢復(fù)時,系統(tǒng)已新建數(shù)據(jù)庫表并產(chǎn)生數(shù)據(jù),所以需要將新老數(shù)據(jù)都恢復(fù)到數(shù)據(jù)庫表中
--查詢當(dāng)前數(shù)據(jù)庫表中的最大ID SELECT ID FROM WORK_DUTY_LOG_505_temp ORDER BY ID DESC; --修改序列步長至最大ID ALTER sequence SEQ_WORK_DUTY_LOG_505 INCREMENT BY 3538; SELECT SEQ_WORK_DUTY_LOG_505.nextval FROM dual; --恢復(fù)序列步長為默認值1 ALTER sequence SEQ_WORK_DUTY_LOG_505 INCREMENT BY 1; --創(chuàng)建觸發(fā)器,并將表中數(shù)據(jù)手動插入到從回收站恢復(fù)的臨時表中 CREATE OR REPLACE TRIGGER T_WORK_DUTY_LOG_505 BEFORE INSERT ON WORK_DUTY_LOG_505_temp REFERENCING OLD AS "OLD" NEW AS "NEW" FOR EACH ROW begin select SEQ_WORK_DUTY_LOG_505.Nextval into:new.ID from dual; --base_login_user_id序列名稱 --ID給ID裝上序列 end; --刪除觸發(fā)器 DROP TRIGGER T_WORK_DUTY_LOG_505; --將臨時表中整合完成的數(shù)據(jù)恢復(fù)至原數(shù)據(jù)庫表中 INSERT INTO WORK_DUTY_LOG_505 SELECT * FROM WORK_DUTY_LOG_505_temp --查詢確認 SELECT * FROM WORK_DUTY_LOG_505 ORDER BY ID DESC;
寫在最后:
通過后續(xù)排查,發(fā)現(xiàn)可能是因為代碼中判斷相關(guān)代碼查詢結(jié)果有誤,導(dǎo)致相關(guān)表被誤刪除,暫時通過注釋下方刪除表結(jié)構(gòu)代碼避免問題復(fù)發(fā),相關(guān)原因后續(xù)繼續(xù)排查
總結(jié)
到此這篇關(guān)于Oracle數(shù)據(jù)庫丟失表排查思路的文章就介紹到這了,更多相關(guān)Oracle丟失表排查內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
解決Oracle?11g?導(dǎo)出數(shù)據(jù)報?“ORA-01455:?轉(zhuǎn)換列溢出整數(shù)數(shù)據(jù)類型”的問題
這篇文章主要介紹了Oracle?11g?導(dǎo)出數(shù)據(jù)報?“ORA-01455:?轉(zhuǎn)換列溢出整數(shù)數(shù)據(jù)類型”的問題,文中給大家介紹了ORACLE?11g?導(dǎo)出數(shù)據(jù)的操作步驟,需要的朋友可以參考下2021-12-12Oracle遞歸查詢start with connect by prior的用法
這篇文章主要給大家介紹了關(guān)于Oracle遞歸查詢start with connect by prior、的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-02-02Oracle基礎(chǔ)學(xué)習(xí)之簡單查詢和限定查詢
相信對于每個剛接觸數(shù)據(jù)庫的朋友們來說,查詢是首先要學(xué)會的,本文主要給大家介紹了Oracle中的簡單查詢和限定查詢,文中通過示例代碼與文字說明給大家介紹的很詳細,相信對大家的的理解和學(xué)習(xí)會很有幫助,下面感興趣的朋友們一起來學(xué)習(xí)學(xué)習(xí)吧。2016-11-11Oracle?19c的參數(shù)sec_case_sensitive_logon與ORA-01017錯誤問題分析
這篇文章主要介紹了Oracle?19c的參數(shù)sec_case_sensitive_logon與ORA-01017錯誤,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-04-04