qileilove

          blog已經轉移至github,大家請訪問 http://qaseven.github.io/

          Oracle數據庫的備份方法

           1、引言
            Oracle數據庫的備份方法很多,無論使用那種備份方法,備份的目的都是為了在出現故障后能夠以盡可能小的時間和代價恢復系統。比如使用export實用程序導出數據庫對象、使用Oracle備份數據庫、使用Oracle對稱復制、使用Oracle并行服務器、使用Oracle冷備份、使用Oracle熱備份等各種備份方法都有其優缺點、適用的場合和相應的軟硬件要求。本文主要就用export實用程序導出數據庫對象、Oracle冷備份、Oracle熱備份這三種最基本的備份方法進行詳細的探討,分析各自的優缺點和適用的場合,并給出自動執行這些備份方案的腳本文件。
            2、三種備份方案的比較
            冷備份
            冷備份是Oracle最簡單的一種備份;執行冷備份前必須關閉數據庫;然后使用操作系統實用工具或者第三方工具備份所有相關的數據庫文件。
            優點:能簡單快速地備份。能簡單快速地恢復。執行簡單。
            缺點:必須關閉數據庫,不能進行點恢復。
            熱備份
            熱備份是當數據庫正在運行時進行數據備份的過程。執行熱備份的前提是:數據庫運行在可歸檔日志模式。適用于24X7不間斷運行的關鍵應用系統。
            優點:備份時數據庫可以是打開的。熱備份可以用來進行點恢復。初始化參數文件、歸檔日志在數據庫正常運行時是關閉的,可用操作系統命令拷貝。
            缺點:執行過程復雜。由于數據庫不間斷運行,測試比較困難。不能用操作系統實用工具拷貝打開的文件。必須使用Oracle提供的ocopy工具來拷貝打開的文件。熱備份可能造成CPU、I/O過載,應在數據庫不太忙時進行。
            Export導出數據庫對象
            冷備份和熱備份都備份物理數據庫文件,因而被稱為物理備份。而export備份的是數據庫對象,因此被稱為邏輯備份。
            優點:能執行對象或者行恢復。備份和恢復速度更快。能夠跨操作系統平臺遷移數據庫。數據庫可一直運行。
            缺點:export并不是冷備份和熱備份的替代工具。冷、熱備份可保護介質失效。export備份可保護用戶或應用錯誤。
            3、冷備份方案的實施
            3.1 冷備份數據庫的步驟
            (1)關閉數據庫;
            (2)備份所有相關的數據庫文件:初始化參數文件、控制文件(可用select name from v$controlfile;列出所有
            控制文件)、數據文件(可用select name from v$datafile;列出所有數據文件)、Redo日志(可用select member from v$logfile;列出所有redo日志文件)、歸檔的Redo日志(可用select sequence#,first_time from v$loghist;列出所有歸檔redo日志文件的順序號和產生時間)。
            3.2 冷備份數據庫的腳本文件coldbackup.bat
            4、熱備份方案的實施
            4.1 熱備份數據庫的前提條件:數據庫運行在歸檔模式
            Oracle數據庫的redo日志記錄在數據庫上進行的所有活動。LGWR后臺進程以一種循環方式寫這些日志文件,從第一個redo日志到下一個,直到該組的最后一個,然后由從第一個日志寫起。
            在非歸檔模式下,當循環寫到最后一個日志文件后,就重寫第一個日志。因此,非歸檔模式下唯一的數據庫恢復辦法就是使用冷備份。
            在歸檔模式下,當redo日志滿時,一個ARCH后臺進程就讀取全部redo日志,然后將其寫到歸檔日志。因此,可以使用熱備份和點恢復。在歸檔日志模式下,如果歸檔日志目的空間已滿,數據庫活動將暫時停止,只有釋放一些空間后,數據庫才能繼續運行。通常,background_dump_destination將產生一個跟蹤文件來顯示歸檔方面的問題。
            Oracle數據庫安裝默認運行在非歸檔模式,通過以下步驟可以從非歸檔模式轉換為歸檔模式:
            (1)編輯參數文件init.ora,設置以下參數
            # 設置數據庫自動歸檔
            log_archive_start = true
            # 設置歸檔日志文件的目錄,該目錄必須事先已建立,并有大量可利用的空間
            log_archive_dest_1="location=%oracle_base%\ oradata\%oracle_sid%\archive"
            # 設置歸檔日志文件名的格式。%s表示順序號,%t表示線程號。
            log_archive_format = "%oracle_sid%%T%S.ARC"
            (2)在sqlplus上運行以下命令
          sqlplus>;connect sys/qazwsx as sysdba
          sqlplus>;shutdown immediate;
          sqlplus>;startup mount exclusive;
          sqlplus>;alter database archivelog;
          sqlplus>;alter database open;
          sqlplus>;shutdown immediate;
            (3)執行數據庫冷備份
            當數據庫運行在歸檔模式下,數據庫恢復過程要求使用冷備份時,歸檔日志是必需的。
            (4)正常啟動數據庫,并確認數據庫運行在歸檔模式
          sqlplus >; startup;
          sqlplus >; select * from v$database; 其log_mode會顯示數據庫是否歸檔模式
          sqlplus >; archive log list; 也會顯示數據庫是否歸檔模式

           如果Oracle數據庫運行在歸檔模式,當進行數據庫維護時,可能需要暫停數據庫的歸檔,在完成維護后,再重新啟動歸檔模式。通過以下步驟可以從歸檔模式轉換為非歸檔模式:
          sqlplus>;connect sys/qazwsx as sysdba
          sqlplus>;shutdown immediate;
          sqlplus>;startup mount exclusive;
          sqlplus>;alter database noarchivelog;
          sqlplus>;alter database open;
          sqlplus >; select * from v$database; 其log_mode會顯示數據庫是否歸檔模式
          sqlplus >; archive log list; 也會顯示數據庫是否歸檔模式
            4.2 熱備份數據庫的步驟
            (1)拷貝init.ora文件到備份目錄(參數文件在數據庫啟動后處于關閉狀態)。
            (2)將需要備份的某個表空間置于開始備份模式。
            (3)使用ocopy.exe拷貝表空間,然后將該表空間置于結束備份模式中(ocopy.exe不能用于直接拷貝聯機的數據庫文件)。
            (4)對數據庫中的每個表空間執行步驟2和3(可以通過視圖dba_tablespaces和v$datafile查看數據庫中有哪些表空間和數據文件)。
            (5)通過在sqlplus上執行archive log list命令獲取當前的日志順序號,從oldest online log sequence開始到current log sequence的聯機redo日志應該是熱備份的一部分。
            (6)在sqlplus上執行alter system switch logfile;命令來強迫日志切換,以便所有的日志都被歸檔。
            (7)使用alter database backup controlfile to trace;命令獲得控制文件的一個備份,可以到%oracle_base%\admin\%oracle_sid%\udump目錄中尋找最新的跟蹤文件,其中有重建控制文件的全部命令。
            (8)使用windows nt的命令從%log_archive_dest%中拷貝歸檔的日志文件到備份目錄。
            4.3 熱備份數據庫的腳本文件hotbackup.bat
            5、使用export作為備份策略
            5.1 export的命令選項說明
            Oracle數據庫的exp工具提供tables、users、full database、tablespace四種級別的導出方式,把指定的數據庫內容導出到一個或者多個oracle二進制文件中,該文件只允許用imp工具來讀取,imp的命令選項可用imp help=y來查閱。
            您可以通過輸入 EXP 命令以及各種自變量來控制“導出”的運行方式。要指定參數,您可以使用關鍵字:
            格式:EXP KEYWORD=value 或 KEYWORD=(value1,value2,...,valueN)
            實例:EXP SCOTT/TIGER GRANTS=Y TABLES=(EMP,DEPT,MGR)
            或 TABLES=(T11,T12),如果 T1 是分區表
            USERID 必須是命令行中的第一個參數。
            下列關鍵字僅用于可傳輸的表空間
            TRANSPORT_TABLESPACE 導出可傳輸的表空間元數據 (N)
            TABLESPACES 將傳輸的表空間列表
            5.2 export備份數據庫的腳本文件expbackup.bat
            6、各種備份策略的自動執行方法
            不管是冷備份、熱備份,還是export備份;不管是unix平臺,還是windows平臺,都可以利用at命令來定時、自動執行上述備份策略。AT 命令安排在特定日期和時間運行命令和程序,在windows nt平臺上必須首先運行調度服務(schedule),才能使用at命令。
            AT命令用法如下:
            AT [\\computername] [ [id] [/DELETE] | /DELETE [/YES]]
            AT [\\computername] time [/INTERACTIVE]
            [ /EVERY:date[,...] | /NEXT:date[,...]] "command"
            \\computername 指定遠程計算機。 如果省略這個參數,會計劃在本地計算機上運行命令。
            id 指定給已計劃命令的識別號。
            /delete 刪除某個已計劃的命令。如果省略 id,計算機上所有已計劃的命令都會被刪除。
            /yes 不需要進一步確認時,跟刪除所有作業的命令一起使用。
            time 指定運行命令的時間。
            /interactive 允許作業在運行時,與當時登錄的用戶桌面進行交互。
            /every:date[,...] 每個月或每個星期在指定的日期運行命令。如果省略日期,則默認為在每月的本日運行。
            /next:date[,...] 指定在下一個指定日期(如下周四)運行命令。如果省略日期,則默認為在每月的本日運行。
            "command" 準備運行的 Windows NT 命令或批處理程序。
            舉例如下:
            (1) 每周五19:00執行冷備份
            at 19:00 /every:F "coldbak.cmd"
            (2) 每周二20:00執行熱備份
            at 20:00 /every:T "coldbak.cmd"
            (3) 每周一、二、三、四、五21:00執行export備份
            at 20:00 /every:M,T,W,Th,F "expbak.cmd"

          posted on 2013-11-15 11:10 順其自然EVO 閱讀(242) 評論(0)  編輯  收藏 所屬分類: 數據庫

          <2013年11月>
          272829303112
          3456789
          10111213141516
          17181920212223
          24252627282930
          1234567

          導航

          統計

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 健康| 贡山| 六安市| 正安县| 太保市| 衡阳县| 阳东县| 丰原市| 正蓝旗| 泗水县| 冷水江市| 巍山| 张家口市| 兖州市| 石棉县| 祁东县| 淄博市| 老河口市| 玛多县| 堆龙德庆县| 泰来县| 锡林浩特市| 泰州市| 九台市| 香港| 会同县| 中山市| 尚义县| 永宁县| 固镇县| 陕西省| 嵊泗县| 山阳县| 上犹县| 祥云县| 平凉市| 金山区| 兴山县| 会同县| 广安市| 崇信县|