公网数据库错乱恢复经过

LK最近遇到比较棘手的公网数据库数据错乱问题,记录一下处理过程,希望大家以后遇到会有所帮助,有所启发。
所用数据库:oracle
发现数据错乱时间:周五早上
最早客户反应数据错误时间:周三晚上八点
数据库备份时间每小时一次


实施思路


  1. 首先停止服务器
  2. 本地导入周三晚上八点数据
  3. 随机导入前几天一个备份,查看数据是否完整
  4. 折半查找到有问题数据和无问题数据相隔一小时
  5. 以数据完整的备份,还原数据

增量数据还原过程

1. 增量数据主要指最先发现有问题数据到本周五晚上
2. 用每条记录的创建日期为依据查找增量数据建立新表
创建新的增量表

create table 旧表名 as(
  SELECT *
  FROM 新表名
 WHERE createtime >=
    to_date('2018-10-24 14:00:00', 'yyyy-mm-dd hh24:mi:ss')
  and createtime < to_date('2018-10-26 19:00:00', 'yyyy-mm-dd hh24:mi:ss')
   )

3. 导出对应dmp文件,导入数据库服务器
4. 导入数据完整的备份,然后导入dmp文件,合并新表
增量表数据插入对应原始表中

  insert into 旧表名(
		SELECT *
  FROM 新表名
   )

****5.特别注意这样做oracle序列不会自动增加,需要手动调整索引
LK第一次做的时候就没有注意
1.查找id是否重复

select * from 表名 a where (a.id) in  (select id from 表名   group by id  having count(*) > 1)

2.id降序排列

select id from 表名    order by id  desc

3.修改sqe序列
start with 值加一

调整完索引,删除新建的表,导入服务器。
6.你需要修改数据库密码

alter user 用户名 identified by 新密码

7.修改完密码有可能会遇到此用户被锁定问题
ORA-28000: the account is locked plsql(账户被锁住)
用户名sys 连接为sysdba登录
找到user文件夹将对应用户,用户被锁住前面的 √去掉
在重新登录
*******用户一直被锁(执行如下命令)
alter profile default limit FAILED_LOGIN_ATTEMPTS UNLIMITED;
用户远程连接在一定时间内发现较多次数连接失败就会锁住用户
这时候需要对用户解锁,并设置FAILED_LOGIN_ATTEMPTS 参数无限制

8.常用导入导出命令

  1. 导入表

imp 用户名/密码@orcl file=文件路劲.dmp tables=表名1,表名2…

2.导入数据库文件

imp 用户名/密码@服务器ip/ORCL file=文件路劲.dmp full=y ignore=y;

3.导出用exp

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值