Oracle exp 數據備份
最近終於搞定了oracle數據庫的備份問題,由於屬首次接觸,對其機制並不瞭解,在搜索資料的過程中也沒有關注其機制問題,而是關注實現方式,前期對其搜索結果在測試機上實踐,無一例成功,在沒有任何進展的情況上,我決定將其暫時放棄,過了一段時間後又將其拾起,有時就是這麼怪,你苦苦連續折騰數天毫無進展,暫時擱置,等再來搞的時候就很容易搞定了……
先說說我所遇到的問題吧,最初試過exp導出,可能是方法不對或是什麼原因(不記得了)沒有成功,後來又用到了歸檔模式,隨成功開啓,但仍沒實現備份,且開啓當天一切正常,第二天數據庫就無法鏈接了,後來確認是歸檔模式引起,這期間還發現生產環境的oracle環境變量可能存在問題,因爲有些在測試機上執行正確的,到生產庫上就報錯了,因不瞭解原因,庫又能正常跑,就沒理會,與其不可控的風險,還不如就先這樣。
ORACLE數據庫有兩類備份方法:
第一類為物理備份,該方法實現數據庫的完整恢復,但數據庫必須運行在歸擋模式下(業務數據庫在非歸擋模式下運行),且 需要極大的外部存儲設備,例如磁帶庫;
第二類備份方式為邏輯備份,業務數據庫采用此種方式,此方法不需要數據庫運行在歸擋模式下,不但備份簡單,而且可以 不需要外部存儲設備。
數據庫邏輯備份方法
雖然博文內已經給出了導出樣列,但我參照樣列導出時還是遇到了問題(時間久了,不記得是什麼原因了),因已經確定導出方式是沒有問題的,所以這次我直接使用了exp -help的方式查看了下exp幫助,按照exp給出的Example和參數說明,做了幾次嘗試,大概瞭解了其用法,然後在測試庫上做了用戶模式的備份,執行結果成功,小小興奮了下……
下面說說具體操作,按照我嘗試的順序來說明吧
ORACLE數據庫的邏輯備份分為三種模式:表備份、用戶備份和完全備份。
1.完全模式:備份數據庫下的所有對象。業務數據庫通常採用的備份方式。
這個其實很簡單,按照exp給出的example操作就是完全備份
需要注意的是exp username/password@oracle 這種方式是錯誤的
在使用exp不加參數導出的時候,會讓用戶設置buffer size大小(還沒搞懂什麼用處)默認即可、導出文件名、 1完全模式 2用戶模式 3表模式默認是用戶模式、余下的項默認就可以了
exp username/password
2.用戶模式:備份某個用戶模式下的所有對象。業務數據庫通常採用的備份方式
exp username/password file=test.dmp log=test.log
3.表模式:備份某個用戶模式下指定的對象(表)。業務數據庫通常採用的備份方式
沒有使用這種方式,但參照給出的example應該爲以下模式
exp username/password grants=y tables=(tables_name1,tables_name2)
or
exp username/password grants=y tables=(T1:P1,T1:P2)
數據導入:
imp的example與exp的相同
Example: IMP SCOTT/TIGER
Or, you can control how Import runs by entering the IMP command followed
by various arguments. To specify parameters, you use keywords:
Format: IMP KEYWORD=value or KEYWORD=(value1,value2,...,valueN)
Example: IMP SCOTT/TIGER IGNORE=Y TABLES=(EMP,DEPT) FULL=N
or TABLES=(T1:P1,T1:P2), if T1 is partitioned table
今天用了下,不過沒有找到如何將數據導入到指定的數據庫中
imp username/password file=test.dmp ignore=y 這種導入方式,只能將文件導入到當前用戶下ignore=y 會強制覆蓋