程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle教程 >> Oracle數據庫備份數據缺失的問題

Oracle數據庫備份數據缺失的問題

編輯:Oracle教程

Oracle數據庫備份數據缺失的問題


項目中一直在使用Oracle數據庫,由於我之前更多的是關注ORM映射框架,幾乎沒有關注過Oracle特性的東西,很多東西都不知道,而且項目中換數據庫的概率幾乎為零,所以有必要好好研究一下Oracle。正所謂,不怕不知道,就怕不知道嘛。不然遇到問題,都不知道從哪裡下手。

這兩天的Oracle學習,收獲不小。前幾天測試中遇到很多的稀奇古怪的問題,都被很好的解釋了。這裡就一個典型的例子談一談。

就是在測試階段,看著經理熟練的操作Oracle的各個指令,內心就已經有了一點不平靜。經理就是經理,這都是多少年不寫代碼的人了,這些Oracle指令還記的那麼清楚。

系統首次測試的時候,報出了一堆莫名其妙的bug。結果發現是備份的數據庫不完整。結果導致測試環境中的數據庫中缺少不少表和視圖。

PS:當時我的想法是,Oracle這東西,為啥非要往虛擬機裡裝啊,暈菜~~~ 可是事實證明,往虛擬機裡裝Oracle是沒問題的~~~

我們找到問題後,都感覺很莫名其妙,Oracle數據庫怎麼會有這樣的問題呢?一定不是數據庫的問題,可是備份的步驟很固定啊,不會有問題啊。而且之前gxpt項目中,數據庫備份還原度時候,也沒有這問題啊。不應該在gxpt還原中沒問題,在tky項目就有了問題啊。

現在才發現,這是由於Oracle的閃回技術造成的。Oracle數據庫也跟windows系統一樣,有一個回收站。執行一般的刪除表操作後,其實並沒有執行真刪除,而是將它們放在了回收站裡面。放在回收站有一個好處,就是隨時都能把刪除的表還原。

你可以在sql plus窗口中執行"select * from tab" 操作,查看數據庫中的表。這裡會查詢上來所有的表,以及一些長編碼的東西,這些東西就是你刪除表的痕跡。

但是閃回也有一些弊端。就是在數據庫備份的時候,如果回收站中未清除,就有可能造成備份數據不完整的情況。

這就解釋了備份失敗的原因。而gxpt項目中,是使用的JPA映射,自然而然就屏蔽了這些數據庫特性的東西。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved