最近終於搞定了oracle數據庫的備份問題,由於屬首次接觸,對其機制並不瞭解,在搜索資料的過程中也沒有關注其機制問題,而是關注實現方式,前期對其搜索結果在測試機上實踐,無一例成功,在沒有任何進展的情況上,我決定將其暫時放棄,過了一段時間後又將其拾起,有時就是這麼怪,你苦苦連續折騰數天毫無進展,暫時擱置,等再來搞的時候就很容易搞定了……

    先說說我所遇到的問題吧,最初試過exp導出,可能是方法不對或是什麼原因(不記得了)沒有成功,後來又用到了歸檔模式,隨成功開啓,但仍沒實現備份,且開啓當天一切正常,第二天數據庫就無法鏈接了,後來確認是歸檔模式引起,這期間還發現生產環境的oracle環境變量可能存在問題,因爲有些在測試機上執行正確的,到生產庫上就報錯了,因不瞭解原因,庫又能正常跑,就沒理會,與其不可控的風險,還不如就先這樣。

    又過了幾天,再來搞時找到了一篇博文,博文中指出了oracle的兩類備份方法,下段引自博文內容http://www.cnblogs.com/yugen/archive/2010/07/25/1784763.html

    ORACLE数据库有两类备份方法:

    第一类为物理备份,该方法实现数据库的完整恢复,但数据库必须运行在归挡模式下(业务数据库在非归挡模式下运行),且 需要极大的外部存储设备,例如磁带库;

    第二类备份方式为逻辑备份业务数据库采用此种方式,此方法不需要数据库运行在归挡模式下,不但备份简单,而且可以 不需要外部存储设备。

    

数据库逻辑备份方法

    雖然博文內已經給出了導出樣列,但我參照樣列導出時還是遇到了問題(時間久了,不記得是什麼原因了),因已經確定導出方式是沒有問題的,所以這次我直接使用了exp -help的方式查看了下exp幫助,按照exp給出的Example和參數說明,做了幾次嘗試,大概瞭解了其用法,然後在測試庫上做了用戶模式的備份,執行結果成功,小小興奮了下……

    下面說說具體操作,按照我嘗試的順序來說明吧

    ORACLE数据库的逻辑备份分为三种模式:表备份、用户备份和完全备份。

    1.完全模式:備份數據庫下的所有對象。業務數據庫通常採用的備份方式。

    這個其實很簡單,按照exp給出的example操作就是完全備份

    需要注意的是exp username/password@oracle 這種方式是錯誤的

    在使用exp不加參數導出的時候,會讓用戶設置buffer size大小(還沒搞懂什麼用處)默認即可、導出文件名、 1完全模式 2用戶模式 3表模式默認是用戶模式、余下的项默认就可以了

exp username/password

Oracle exp 數據備份_oracle exp imp

Oracle exp 數據備份_oracle exp imp_02

    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 會強制覆蓋