Oracle数据库中的数据出错的解决办法

寂寞的晴惜

寂寞的晴惜

2016-01-29 14:39

Oracle数据库中的数据出错的解决办法,本例讲解Oracle数据库中的数据出错时的解决办法,希望能给朋友带来帮助~~
  今天上班犯了一个严重的错误:把我们系统所使用的Oracle数据库中的数据给改掉了!当发现自己改错时,顿时冒了一身冷汗。不过转念一想,我们不是定期作了数据库备份的嘛,适当的恢复一下,应该不会出现太大的问题吧,因为我只是错误的使用了一个update语句。

问题是这样的:

我们给系统创建了两个用户:com和comtest。前者存放的是正式库数据,后者存放的测试库数据。它们都有一个taw_rm_user表,存放了使用该系统的用户基本信息,我就是把其中的password字段全部改成了123456。

DMP备份文件是9月28号创建的,经过十一七天长假后到今天,已经有十几天了,我简单的查了一下日志,发现已经创建了几个新的用户,并且有些旧的用户的其他信息也已经更改了。直接把备份文件中的taw_rm_user表导入com用户下是肯定不行的。经过一段时间的冷静思考后,得到了一个解决方案。

大致思路是:

1. 将测试库的taw_rm_user表用CREATE TABLE AS语句导到一个临时的备份表中(测试库中的用户表也不能乱改);

2. 再将taw_rm_user表删除;

3. 然后将DMP备份文件的taw_rm_user表用IMP命令导入到comtest下;

4. 再自己编写一个PL/SQL程序块,通过使用游标循环,将这个新导入的表中的password字段更新到com.taw_rm_user表的对应记录中。注意,这里只更新对应记录,对新加入的用户记录不作任何修改;

5. 再将之前备份的taw_rm_user表恢复到comtest下即可。

其中使用的两段关键语句如下:

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com)

-- 备份测试库中的taw_rm_user表

create table comtest.taw_rm_user_bak

as

select * from comtest.taw_rm_user

-- 恢复正式库中的taw_rm_user.password字段

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com)

declare

rec_comtest comtest.taw_rm_user%rowtype;

cursor cur_comtest is

select * from comtest.taw_rm_user;

begin

open cur_comtest;

loop

fetch cur_comtest into rec_comtest;

exit when cur_comtest%notfound;

update com.taw_rm_user

set com.taw_rm_user.password=rec_comtest.password

where com.taw_rm_user.user_id=rec_comtest.user_id;

end loop;

close cur_comtest;

commit;

end;

这样就可以在不更改其他所有信息的情况下,将所有旧用户的密码恢复到从前。

展开更多 50%)
分享

猜你喜欢

Oracle数据库中的数据出错的解决办法

电脑网络
Oracle数据库中的数据出错的解决办法

MyGeneration连接MySql数据库的解决办法

MySQL mysql数据库
MyGeneration连接MySql数据库的解决办法

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

Oracle数据库数据对象分析(中)

编程语言 网络编程
Oracle数据库数据对象分析(中)

Oracle 数据库中创建合理的数据库索引

编程语言 网络编程
Oracle 数据库中创建合理的数据库索引

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

删除Oracle数据库中重复的没用数据

编程语言 网络编程
删除Oracle数据库中重复的没用数据

Oracle数据库中索引的维护

电脑网络
Oracle数据库中索引的维护

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

《雷霆战机》攻略 刷宝箱辅助秘籍

《雷霆战机》攻略 刷宝箱辅助秘籍

建立与Oracle服务器连接的两种连接模式

建立与Oracle服务器连接的两种连接模式
下拉加载更多内容 ↓