將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服務出錯解決方法收藏。
 
數據線更改簡便方法
看了幾位仁兄改線方法,很受啓發,決定自己動手,豐機足食.不過經過仔細研究,我覺得沒有必要上面烙線,下面還要剖開線,找14\15線,一則危險性增加,二則每次接也不太方便,于是我從14,15,17,18 上各烙上一根線,注意14,17一樣...查看完整版>>數據線更改簡便方法
 
講解Oracle數據庫10g新特性中的閃回查詢
這篇論壇文章(賽迪網技術社區)深入探討了Oracle數據庫10g新特性中的閃回查詢,更多相關內容請參考下文。 不需要設置,立即識別對行的所有更改 在 Oracle9i Database 中,我們看到它推出了以閃回查詢形式表示的“時...查看完整版>>講解Oracle數據庫10g新特性中的閃回查詢
 
Oracle的TNS-12502錯誤原因及解決方法
問題: 監聽日志中出現錯誤TNS-12502: TNS:listener received no CONNECT_DATA from client (注:客戶端的機器沒有發現問題) 錯誤現象: 1、每隔幾分鍾出現一次上面的錯誤,即使在沒有人使用Oracle的情況下也會出現。...查看完整版>>Oracle的TNS-12502錯誤原因及解決方法
 
Oracle數據庫中的表外鍵的更名細則
Oracle 中表的外鍵是保證系統參照完整性的手段,而參照完整性是指分布在兩個表中的列所滿足的具有主從性質的約束關系。外鍵涉及到兩個表,其中一個稱之爲父項表,另一個稱之爲子項表。 父項表( parent table )是參...查看完整版>>Oracle數據庫中的表外鍵的更名細則
 
 
回到王朝網路首頁