簡單的oracle備份恢復批處理文件

          寫個簡單的批處理文件備份恢復:
          備份:
          @echo off           ???????????? 不顯示命令行
              
          echo 開始備份表.....      ???????????????? 打印信息               
          D:??????????????????????????????????????????????????????????????????????DOS切換到D:?盤
          cd oracle\ora92\bin      ??????????????????? 切換到cd oracle\ora92\bin目錄
          exp 用戶名/密碼@數據庫 file=d:\config_bak.dmp tables=(table1,table2)????? 備份表一表二到d:\config_bak.dmp
          echo 備份完畢!

          恢復:
          @echo off           
              
          echo 開始恢復表.....                     
          D:
          cd oracle\ora92\bin
          imp 用戶名/密碼@數據庫 file=d:\config_bak.dmp tables=(table1,table2) ?ignore=y??
          sqlplus /nolog @oraStartup.sql>>oraStartup.log 調用sql文件
          pause???????????????????????????????????????????????????????????????? 執行完sql文件以后暫停,看信息
          echo 恢復完畢!

          編寫oraStartup.sql
          conn 用戶名/密碼@數據庫 as sysdba
          select * from table1;
          quit;
                

                


           執行環境:可以在SQLPLUS.EXE或者DOS(命令行)中執行,
            DOS中可以執行時由于 在oracle 8i 中? 安裝目錄\ora81\BIN被設置為全局路徑,
            該目錄下有EXP.EXE與IMP.EXE文件被用來執行導入導出。
            oracle用java編寫,我想SQLPLUS.EXE、EXP.EXE、IMP.EXE這倆個文件是被包裝后的類文件。
            SQLPLUS.EXE調用EXP.EXE、IMP.EXE他們所包裹的類,完成導入導出功能。

            下面介紹的是導入導出的實例,向導入導出看實例基本上就可以完成,因為導入導出很簡單。
            數據導出:
            1 將數據庫TEST完全導出,用戶名system 密碼manager 導出到D:\daochu.dmp中
            exp system/manager@TEST file=d:\daochu.dmp full=y
            2 將數據庫中system用戶與sys用戶的表導出
            exp system/manager@TEST file=d:\daochu.dmp owner=(system,sys)
            3 將數據庫中的表table1 、table2導出
            exp system/manager@TEST file=d:\daochu.dmp tables=(table1,table2)
            4 將數據庫中的表table1中的字段filed1以"00"打頭的數據導出
            exp system/manager@TEST file=d:\daochu.dmp tables=(table1) query=\" where filed1 like '00%'\"
            
            上面是常用的導出,對于壓縮我不太在意,用winzip把dmp文件可以很好的壓縮。
            不過在上面命令后面 加上 compress=y? 就可以了

            數據的導入
            1 將D:\daochu.dmp 中的數據導入 TEST數據庫中。
            imp system/manager@TEST? file=d:\daochu.dmp
            上面可能有點問題,因為有的表已經存在,然后它就報錯,對該表就不進行導入。
            在后面加上 ignore=y 就可以了。
            2 將d:\daochu.dmp中的表table1 導入
            imp system/manager@TEST? file=d:\daochu.dmp? tables=(table1)

          ????????導入
            基本上上面的導入導出夠用了。不少情況我是將表徹底刪除,然后導入。


          Oracle數據庫備份與恢復的三種方法

          Oracle數據庫有三種標準的備份方法,它們分別是導出/導入(EXP/IMP)、熱備份和冷備份。導出備件是一種邏輯備份,冷備份和熱備份是物理備份。

          一、 導出/導入(Export/Import)

          利用Export可將數據從數據庫中提取出來,利用Import則可將提取出來的數據送回到Oracle數據庫中去。

          1、 簡單導出數據(Export)和導入數據(Import)

          Oracle支持三種方式類型的輸出:

          (1)、表方式(T方式),將指定表的數據導出。

          (2)、用戶方式(U方式),將指定用戶的所有對象及數據導出。

          (3)、全庫方式(Full方式),瘵數據庫中的所有對象導出。

          數據導入(Import)的過程是數據導出(Export)的逆過程,分別將數據文件導入數據庫和將數據庫數據導出到數據文件。

          2、 增量導出/導入

          增量導出是一種常用的數據備份方法,它只能對整個數據庫來實施,并且必須作為SYSTEM來導出。在進行此種導出時,系統不要求回答任何問題。導出文件名缺省為export.dmp,如果不希望自己的輸出文件定名為export.dmp,必須在命令行中指出要用的文件名。

          增量導出包括三種類型:

          (1)、“完全”增量導出(Complete)

          即備份三個數據庫,比如:

          																exp system/manager inctype=complete file=040731.dmp
          														

          (2)、“增量型”增量導出

          備份上一次備份后改變的數據,比如:

          																exp system/manager inctype=incremental file=040731.dmp
          														

          (3)、“累積型”增量導出

          累計型導出方式是導出自上次“完全”導出之后數據庫中變化了的信息。比如:

          																exp system/manager inctype=cumulative file=040731.dmp
          														

          數據庫管理員可以排定一個備份日程表,用數據導出的三個不同方式合理高效的完成。

          比如數據庫的被封任務可以做如下安排:

          星期一:完全備份(A)

          星期二:增量導出(B)

          星期三:增量導出(C)

          星期四:增量導出(D)

          星期五:累計導出(E)

          星期六:增量導出(F)

          星期日:增量導出(G)

          如果在星期日,數據庫遭到意外破壞,數據庫管理員可按一下步驟來回復數據庫:

          第一步:用命令CREATE DATABASE重新生成數據庫結構;

          第二步:創建一個足夠大的附加回滾。

          第三步:完全增量導入A:

          																imp system/manager inctype=RESTORE FULL=y FILE=A
          														

          第四步:累計增量導入E:

          																imp system/manager inctype=RESTORE FULL=Y FILE=E
          														

          第五步:最近增量導入F:

          																imp system/manager inctype=RESTORE FULL=Y FILE=F
          														

          二、 冷備份

          冷備份發生在數據庫已經正常關閉的情況下,當正常關閉時會提供給我們一個完整的數據庫。冷備份時將關鍵性文件拷貝到另外的位置的一種說法。對于備份Oracle信息而言,冷備份時最快和最安全的方法。冷備份的優點是:

          1、 是非常快速的備份方法(只需拷文件)

          2、 容易歸檔(簡單拷貝即可)

          3、 容易恢復到某個時間點上(只需將文件再拷貝回去)

          4、 能與歸檔方法相結合,做數據庫“最佳狀態”的恢復。

          5、 低度維護,高度安全。

          但冷備份也有如下不足:

          1、 單獨使用時,只能提供到“某一時間點上”的恢復。

          2、 再實施備份的全過程中,數據庫必須要作備份而不能作其他工作。也就是說,在冷備份過程中,數據庫必須是關閉狀態。

          3、 若磁盤空間有限,只能拷貝到磁帶等其他外部存儲設備上,速度會很慢。

          4、 不能按表或按用戶恢復。

          如果可能的話(主要看效率),應將信息備份到磁盤上,然后啟動數據庫(使用戶可以工作)并將備份的信息拷貝到磁帶上(拷貝的同時,數據庫也可以工作)。冷備份中必須拷貝的文件包括:

          1、 所有數據文件

          2、 所有控制文件

          3、 所有聯機REDO LOG文件

          4、 Init.ora文件(可選)

          值得注意的使冷備份必須在數據庫關閉的情況下進行,當數據庫處于打開狀態時,執行數據庫文件系統備份是無效的。

          下面是作冷備份的完整例子。

          (1) 關閉數據庫

          																sqlplus /nolog 
          sql>;connect /as sysdba 
          sql>;shutdown normal;
          														

          (2) 用拷貝命令備份全部的時間文件、重做日志文件、控制文件、初始化參數文件

          																sql>;cp <file>; <backup directory>;
          														

          (3) 重啟Oracle數據庫

          																sql>;startup
          														

          三、 熱備份

          熱備份是在數據庫運行的情況下,采用archivelog mode方式備份數據庫的方法。所以,如果你有昨天夜里的一個冷備份而且又有今天的熱備份文件,在發生問題時,就可以利用這些資料恢復更多的信息。熱備份要求數據庫在Archivelog方式下操作,并需要大量的檔案空間。一旦數據庫運行在archivelog狀態下,就可以做備份了。熱備份的命令文件由三部分組成:

          1. 數據文件一個表空間一個表空間的備份。

          (1) 設置表空間為備份狀態

          (2) 備份表空間的數據文件

          (3) 回復表空間為正常狀態

          2. 備份歸檔log文件

          (1) 臨時停止歸檔進程

          (2) log下那些在archive rede log目標目錄中的文件

          (3) 重新啟動archive進程

          (4) 備份歸檔的redo log文件

          3. 用alter database bachup controlfile命令來備份控制文件

          熱備份的優點是:

          1. 可在表空間或數據庫文件級備份,備份的時間短。

          2. 備份時數據庫仍可使用。

          3. 可達到秒級恢復(恢復到某一時間點上)。

          4. 可對幾乎所有數據庫實體做恢復

          5. 恢復是快速的,在大多數情況下愛數據庫仍工作時恢復。

          熱備份的不足是:

          1. 不能出錯,否則后果嚴重

          2. 若熱備份不成功,所得結果不可用于時間點的恢復

          3. 因難于維護,所以要特別仔細小心,不允許“以失敗告終”。




          參考資料:http://publish.it168.com/2006/0601/20060601045701.shtml?positioncode=1545
          http://bbs.zol.com.cn/index20061024/index_124_11079.html
          http://community.csdn.net/Expert/TopicView3.asp?id=5276764
          http://bbs.gdei.edu.cn/faster.php?id=t-55261
          http://www.dvbbs.net/tech/data/2006031819272.asp
          http://study.feloo.com/computer/data/Oracle/200509/121026.html

          posted on 2007-01-26 11:54 扭轉乾坤 閱讀(1891) 評論(0)  編輯  收藏 所屬分類: 數據庫類


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          <2007年1月>
          31123456
          78910111213
          14151617181920
          21222324252627
          28293031123
          45678910

          導航

          統計

          常用鏈接

          留言簿(2)

          隨筆分類(31)

          隨筆檔案(30)

          文章分類(32)

          文章檔案(33)

          相冊

          PHP小站-首頁

          搜索

          積分與排名

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 连江县| 界首市| 蒲江县| 西宁市| 景东| 岳池县| 余干县| 伊川县| 昭觉县| 临洮县| 霍林郭勒市| 正镶白旗| 抚顺县| 如皋市| 新平| 兴城市| 新河县| 丘北县| 凤山县| 乾安县| 巴青县| 巩义市| 古田县| 屏东县| 海阳市| 梁山县| 彩票| 凌云县| 开鲁县| 金寨县| 西畴县| 卢龙县| 宜都市| 鹤庆县| 前郭尔| 大连市| 汕尾市| 封开县| 罗江县| 金阳县| 白玉县|