Oracle数据库丢失表排查思路

说明:由于系统采用ID取模分表法进行Oracle数据存储,某日发现Oracle数据库中缺少对应的几张业务数据表,遂进行相关问题查询,简单记录一下排查思路;

  1. 由于我们代码中实现思路是判断如果没有对应的表会自动创建,所以首先需要查询一下缺失数据库表的创建时间
SELECT * FROM dba_objects where OBJECT_NAME LIKE 'LOG_5%' AND owner = 'Geoff';
  1. 通过查询Oracle执行SQL历史记录,数据库表的删除时间段
select * from v$sqlarea bwhere b.FIRST_LOAD_TIME between '2022-05-31/21:30:00' and'2022-05-31/23:30:00'` order by b.FIRST_LOAD_TIME;
  1. 通过上述SQL还是无法查询具体表的删除时间,故查询当前用户的数据库回收站
SELECT * FROM recyclebin_temp WHERE TYPE = 'TABLE' ORDER BY droptime DESC;
  1. 通过回收站查询到相应的已删除数据库表,并将数据库已删除表恢复至删除前,包含表中数据
flashback TABLE LOG_505 to before drop RENAME to LOG_505_temp ;
  1. 因为数据恢复时,系统已新建数据库表并产生数据,所以需要将新老数据都恢复到数据库表中
--查询当前数据库表中的最大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;
--恢复序列步长为默认值1
ALTER sequence SEQ_WORK_DUTY_LOG_505 INCREMENT BY 1;--创建触发器,并将表中数据手动插入到从回收站恢复的临时表中
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
beginselect SEQ_WORK_DUTY_LOG_505.Nextval into:new.ID from dual;  --base_login_user_id序列名称  --ID给ID装上序列
end;--删除触发器
DROP TRIGGER T_WORK_DUTY_LOG_505;
--将临时表中整合完成的数据恢复至原数据库表中
INSERT INTO  WORK_DUTY_LOG_505 SELECT * FROM WORK_DUTY_LOG_505_temp
--查询确认
SELECT * FROM WORK_DUTY_LOG_505 ORDER BY ID DESC;

写在最后:

通过后续排查,发现可能是因为代码中判断相关代码查询结果有误,导致相关表被误删除,暂时通过注释下方删除表结构代码避免问题复发,相关原因后续继续排查

【Oracle数据库丢失表排查思路】相关推荐

  1. Oracle 数据库整理表碎片

    Oracle 数据库整理表碎片 转载:http://kyle.xlau.org/posts/table-fragmentation.html 表碎片的来源 当针对一个表的删除操作很多时,表会产生大量碎 ...

  2. Oracle数据库查看表空间sql语句、查看Oracle数据库表空间剩余 、修改表空间、库备份

    一  Oracle数据库查看表空间sql语句 1.oracle查看表空间当前用户 SQL>  select  username,default_tablespace  from user_use ...

  3. Oracle 数据库创建表空间、创建用户指定表空间

    Oracle 数据库创建表空间.创建用户指定表空间 //创建临时表空间 create temporary tablespace user_temp tempfile 'D:\oracle\oradat ...

  4. Oracle数据库ORA-00942: 表或视图不存在的问题

    1.工具中查看orcale如下 2.连接 连接方式如下 .option("driver","oracle.jdbc.driver.OracleDriver") ...

  5. oracle数据库等级,[数据库]Oracle数据库建表并用SQL编程分等级

    [数据库]Oracle数据库建表并用SQL编程分等级 0 2016-06-15 23:00:13 --创建学生表 create table XS_543 ( XH char(6) not null , ...

  6. oracle怎么分配表空间,oracle数据库分配表空间、创造用户、分配用户权限操作

    oracle数据库分配表空间.创建用户.分配用户权限操作 1.创建临时表空间 /* create temporary tablespace*/ create temporary tablespace ...

  7. ORACLE数据库多表关联查询效率问题解决方案

    ORACLE数据库多表关联查询效率问题解决方案 参考文章: (1)ORACLE数据库多表关联查询效率问题解决方案 (2)https://www.cnblogs.com/baib/p/5086777.h ...

  8. oracle两个表数据比较,oracle数据库两表数据比较

    1 引言 在程序设计的过程中,往往会遇到两个记录集的比较.如华东电网PMS接口中实现传递一天中变更(新增.修改.删除)的数据.实现的方式有多种,如编程存储过程返回游标,在存储过程中对两批数据进行比较等 ...

  9. oracle数据库创建表

    oracle数据库创建表 实际工作中,在数据库中创建表是经常会用到的.我们今天呢?主要给大家来分享一下在数据库如何通过sql语句去创建表.其实,创建表很简单,只需要把数据库的数据类型和约束搞清楚就可以 ...

最新文章

  1. java.lang.ArithmeticException: divide by zero
  2. 《Git in Practice》作者访谈:关于Git的八个问题
  3. 黑马程序员pink老师前端入门教程,零基础必看的h5(html5)+css3+移动端前端视频教程(学成在线)
  4. mysql实时物化到clickhouse(MaterializeMySQL)
  5. python 加密解密_python加密解密
  6. 【WebRTC---源码篇】(四)WebRTC线程模型
  7. 东大18春计算机基础在线作业,东大18春学期《计算机基础》在线作业123满分答案...
  8. XML校验 黄色惊叹号!!!
  9. 实战flex:模拟实现静态知乎首页
  10. H264码流解析及NALU
  11. python-破译密码
  12. RE写作Issue问题题库分析与提纲
  13. 读取assets目录下的文件详细介绍
  14. 技嘉 AORUS Radeon RX 6700 XT ELITE 12G 显示卡潮流登场
  15. 使用python开发多人一对一聊天系统(文字聊天,视频通讯,文件传输)
  16. 大连财经学院计算机老师,教师风采|“教书、管理、服务育人三合一”——我校会计学院教师王晓云...
  17. 分布式服务架构精讲pdf文档:原理+设计+实战,(收藏再看)
  18. (P2笔记)Where does the error come from?(误差从而来?)——机器学习:李宏毅
  19. gzip,deflate,zlib辨析
  20. Servlet的response.getWriter.printJSP

热门文章

  1. java 获取上传文件的格式_js和java获取上传文件的文件名以及上传文件格式判断...
  2. U3D《真正的大冒险》(下)精讲教学
  3. 第五章 主生产计划MPS 第1~3节 计划方案、MPS计划参数
  4. Shiro认证和授权的思路
  5. 魔兽争霸3冰封王座1.24e 多开联机补丁 信息发布与收集点
  6. LeetCode-- 移动零
  7. 23.4 SQL语言
  8. c语言 求特殊方程的正整数解
  9. unity3D实践报告-忍者跑酷
  10. HI3536C 多通道网络解码器