將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下即可。

其中使用的兩段關鍵語句如下:

-- 備份測試庫中的taw_rm_user表

create table comtest.taw_rm_user_bak

as

select * from comtest.taw_rm_user

-- 恢複正式庫中的taw_rm_user.password字段

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;

這樣就可以在不更改其他所有信息的情況下,將所有舊用戶的密碼恢複到從前。

 
講解MySQL數據庫字符集出錯的解決方法
MySQL字符集出錯的解決方法: 錯誤案例: Illegal mix of collations (gbk_chinese_ci,IMPLICIT) and (gbk_bin,IMPLICIT) for operation '=',SQL State: HY000, Error Code: 1267錯誤原因: 數據庫的編碼與建表時的編...查看完整版>>講解MySQL數據庫字符集出錯的解決方法
 
Oracle數據庫返回cursor問題的解決方法
這篇論壇文章(賽迪網技術社區)著重介紹了Oracle數據庫返回cursor問題的解決方法,詳細內容請參考下文: 昨天使用 Data Block 操作 oracle 返回 cursor 。期間産生了一點問題,很是郁悶,找了一下午也沒有解決。早上...查看完整版>>Oracle數據庫返回cursor問題的解決方法
 
詳細講解Oracle數據庫運行錯誤的解決方法
Oracle數據庫運行錯誤的解決方法: 錯誤1:ORA-01034: ORACLE not available Oracle安裝、啓動後用sqlplus "/ as sysdba" 登陸,執行任何select語句都出現錯誤: select * from dictionary * ERROR at line 1: ORA-0...查看完整版>>詳細講解Oracle數據庫運行錯誤的解決方法
 
解決MP3播放出錯的方法
買了小N,我也就得到我一直想要的MP3隨身聽,但有時興致勃勃想聽一下歌,卻老是出現MUSIC PLAYER:SYSTEM ERROR 錯誤字樣,然後就回到待機畫面,什麽歌都聽不了,曾經本來向想老哥炫耀一下咱小N的牛B,但臨場卻播放不...查看完整版>>解決MP3播放出錯的方法
 
關于Windows Installer服務出錯解決方法收藏。
方法一:卸載,重新安裝windows installer服務 一、先用msiexec /unregserver 停掉windows installer服務。 二、下載InstMsiW.exe,用winrar解壓開。進入目錄。 三、右擊msi.inf ,點擊安裝,右擊mspatcha.inf ,點擊...查看完整版>>關于Windows Installer服務出錯解決方法收藏。