qileilove

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

          Oracle數據庫的備份方法

           1、引言
            Oracle數據庫的備份方法很多,無論使用那種備份方法,備份的目的都是為了在出現(xiàn)故障后能夠以盡可能小的時間和代價恢復系統(tǒng)。比如使用export實用程序導出數據庫對象、使用Oracle備份數據庫、使用Oracle對稱復制、使用Oracle并行服務器、使用Oracle冷備份、使用Oracle熱備份等各種備份方法都有其優(yōu)缺點、適用的場合和相應的軟硬件要求。本文主要就用export實用程序導出數據庫對象、Oracle冷備份、Oracle熱備份這三種最基本的備份方法進行詳細的探討,分析各自的優(yōu)缺點和適用的場合,并給出自動執(zhí)行這些備份方案的腳本文件。
            2、三種備份方案的比較
            冷備份
            冷備份是Oracle最簡單的一種備份;執(zhí)行冷備份前必須關閉數據庫;然后使用操作系統(tǒng)實用工具或者第三方工具備份所有相關的數據庫文件。
            優(yōu)點:能簡單快速地備份。能簡單快速地恢復。執(zhí)行簡單。
            缺點:必須關閉數據庫,不能進行點恢復。
            熱備份
            熱備份是當數據庫正在運行時進行數據備份的過程。執(zhí)行熱備份的前提是:數據庫運行在可歸檔日志模式。適用于24X7不間斷運行的關鍵應用系統(tǒng)。
            優(yōu)點:備份時數據庫可以是打開的。熱備份可以用來進行點恢復。初始化參數文件、歸檔日志在數據庫正常運行時是關閉的,可用操作系統(tǒng)命令拷貝。
            缺點:執(zhí)行過程復雜。由于數據庫不間斷運行,測試比較困難。不能用操作系統(tǒng)實用工具拷貝打開的文件。必須使用Oracle提供的ocopy工具來拷貝打開的文件。熱備份可能造成CPU、I/O過載,應在數據庫不太忙時進行。
            Export導出數據庫對象
            冷備份和熱備份都備份物理數據庫文件,因而被稱為物理備份。而export備份的是數據庫對象,因此被稱為邏輯備份。
            優(yōu)點:能執(zhí)行對象或者行恢復。備份和恢復速度更快。能夠跨操作系統(tǒng)平臺遷移數據庫。數據庫可一直運行。
            缺點: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后臺進程以一種循環(huán)方式寫這些日志文件,從第一個redo日志到下一個,直到該組的最后一個,然后由從第一個日志寫起。
            在非歸檔模式下,當循環(huán)寫到最后一個日志文件后,就重寫第一個日志。因此,非歸檔模式下唯一的數據庫恢復辦法就是使用冷備份。
            在歸檔模式下,當redo日志滿時,一個ARCH后臺進程就讀取全部redo日志,然后將其寫到歸檔日志。因此,可以使用熱備份和點恢復。在歸檔日志模式下,如果歸檔日志目的空間已滿,數據庫活動將暫時停止,只有釋放一些空間后,數據庫才能繼續(xù)運行。通常,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)執(zhí)行數據庫冷備份
            當數據庫運行在歸檔模式下,數據庫恢復過程要求使用冷備份時,歸檔日志是必需的。
            (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文件到備份目錄(參數文件在數據庫啟動后處于關閉狀態(tài))。
            (2)將需要備份的某個表空間置于開始備份模式。
            (3)使用ocopy.exe拷貝表空間,然后將該表空間置于結束備份模式中(ocopy.exe不能用于直接拷貝聯(lián)機的數據庫文件)。
            (4)對數據庫中的每個表空間執(zhí)行步驟2和3(可以通過視圖dba_tablespaces和v$datafile查看數據庫中有哪些表空間和數據文件)。
            (5)通過在sqlplus上執(zhí)行archive log list命令獲取當前的日志順序號,從oldest online log sequence開始到current log sequence的聯(lián)機redo日志應該是熱備份的一部分。
            (6)在sqlplus上執(zhí)行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 是分區(qū)表
            USERID 必須是命令行中的第一個參數。
            下列關鍵字僅用于可傳輸的表空間
            TRANSPORT_TABLESPACE 導出可傳輸的表空間元數據 (N)
            TABLESPACES 將傳輸的表空間列表
            5.2 export備份數據庫的腳本文件expbackup.bat
            6、各種備份策略的自動執(zhí)行方法
            不管是冷備份、熱備份,還是export備份;不管是unix平臺,還是windows平臺,都可以利用at命令來定時、自動執(zhí)行上述備份策略。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 不需要進一步確認時,跟刪除所有作業(yè)的命令一起使用。
            time 指定運行命令的時間。
            /interactive 允許作業(yè)在運行時,與當時登錄的用戶桌面進行交互。
            /every:date[,...] 每個月或每個星期在指定的日期運行命令。如果省略日期,則默認為在每月的本日運行。
            /next:date[,...] 指定在下一個指定日期(如下周四)運行命令。如果省略日期,則默認為在每月的本日運行。
            "command" 準備運行的 Windows NT 命令或批處理程序。
            舉例如下:
            (1) 每周五19:00執(zhí)行冷備份
            at 19:00 /every:F "coldbak.cmd"
            (2) 每周二20:00執(zhí)行熱備份
            at 20:00 /every:T "coldbak.cmd"
            (3) 每周一、二、三、四、五21:00執(zhí)行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

          導航

          統(tǒng)計

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 成武县| 志丹县| 阿拉善右旗| 安丘市| SHOW| 商南县| 浏阳市| 建水县| 塘沽区| 额济纳旗| 博罗县| 勐海县| 嘉义市| 三原县| 汤原县| 海伦市| 香港 | 和平县| 黑龙江省| 安化县| 启东市| 澜沧| 汉阴县| 云南省| 莱西市| 周口市| 平陆县| 工布江达县| 正安县| 岢岚县| 仪陇县| SHOW| 无锡市| 遂溪县| 玛曲县| 东安县| 申扎县| 玉龙| 盐山县| 邢台市| 和龙市|