qileilove

          blog已經(jīng)轉(zhuǎn)移至github,大家請(qǐng)?jiān)L問(wèn) http://qaseven.github.io/

          Oracle數(shù)據(jù)庫(kù)的備份方法

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

           如果Oracle數(shù)據(jù)庫(kù)運(yùn)行在歸檔模式,當(dāng)進(jìn)行數(shù)據(jù)庫(kù)維護(hù)時(shí),可能需要暫停數(shù)據(jù)庫(kù)的歸檔,在完成維護(hù)后,再重新啟動(dòng)歸檔模式。通過(guò)以下步驟可以從歸檔模式轉(zhuǎn)換為非歸檔模式:
          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會(huì)顯示數(shù)據(jù)庫(kù)是否歸檔模式
          sqlplus >; archive log list; 也會(huì)顯示數(shù)據(jù)庫(kù)是否歸檔模式
            4.2 熱備份數(shù)據(jù)庫(kù)的步驟
            (1)拷貝init.ora文件到備份目錄(參數(shù)文件在數(shù)據(jù)庫(kù)啟動(dòng)后處于關(guān)閉狀態(tài))。
            (2)將需要備份的某個(gè)表空間置于開始備份模式。
            (3)使用ocopy.exe拷貝表空間,然后將該表空間置于結(jié)束備份模式中(ocopy.exe不能用于直接拷貝聯(lián)機(jī)的數(shù)據(jù)庫(kù)文件)。
            (4)對(duì)數(shù)據(jù)庫(kù)中的每個(gè)表空間執(zhí)行步驟2和3(可以通過(guò)視圖dba_tablespaces和v$datafile查看數(shù)據(jù)庫(kù)中有哪些表空間和數(shù)據(jù)文件)。
            (5)通過(guò)在sqlplus上執(zhí)行archive log list命令獲取當(dāng)前的日志順序號(hào),從oldest online log sequence開始到current log sequence的聯(lián)機(jī)redo日志應(yīng)該是熱備份的一部分。
            (6)在sqlplus上執(zhí)行alter system switch logfile;命令來(lái)強(qiáng)迫日志切換,以便所有的日志都被歸檔。
            (7)使用alter database backup controlfile to trace;命令獲得控制文件的一個(gè)備份,可以到%oracle_base%\admin\%oracle_sid%\udump目錄中尋找最新的跟蹤文件,其中有重建控制文件的全部命令。
            (8)使用windows nt的命令從%log_archive_dest%中拷貝歸檔的日志文件到備份目錄。
            4.3 熱備份數(shù)據(jù)庫(kù)的腳本文件hotbackup.bat
            5、使用export作為備份策略
            5.1 export的命令選項(xiàng)說(shuō)明
            Oracle數(shù)據(jù)庫(kù)的exp工具提供tables、users、full database、tablespace四種級(jí)別的導(dǎo)出方式,把指定的數(shù)據(jù)庫(kù)內(nèi)容導(dǎo)出到一個(gè)或者多個(gè)oracle二進(jìn)制文件中,該文件只允許用imp工具來(lái)讀取,imp的命令選項(xiàng)可用imp help=y來(lái)查閱。
            您可以通過(guò)輸入 EXP 命令以及各種自變量來(lái)控制“導(dǎo)出”的運(yùn)行方式。要指定參數(shù),您可以使用關(guān)鍵字:
            格式:EXP KEYWORD=value 或 KEYWORD=(value1,value2,...,valueN)
            實(shí)例:EXP SCOTT/TIGER GRANTS=Y TABLES=(EMP,DEPT,MGR)
            或 TABLES=(T11,T12),如果 T1 是分區(qū)表
            USERID 必須是命令行中的第一個(gè)參數(shù)。
            下列關(guān)鍵字僅用于可傳輸?shù)谋砜臻g
            TRANSPORT_TABLESPACE 導(dǎo)出可傳輸?shù)谋砜臻g元數(shù)據(jù) (N)
            TABLESPACES 將傳輸?shù)谋砜臻g列表
            5.2 export備份數(shù)據(jù)庫(kù)的腳本文件expbackup.bat
            6、各種備份策略的自動(dòng)執(zhí)行方法
            不管是冷備份、熱備份,還是export備份;不管是unix平臺(tái),還是windows平臺(tái),都可以利用at命令來(lái)定時(shí)、自動(dòng)執(zhí)行上述備份策略。AT 命令安排在特定日期和時(shí)間運(yùn)行命令和程序,在windows nt平臺(tái)上必須首先運(yùn)行調(diào)度服務(wù)(schedule),才能使用at命令。
            AT命令用法如下:
            AT [\\computername] [ [id] [/DELETE] | /DELETE [/YES]]
            AT [\\computername] time [/INTERACTIVE]
            [ /EVERY:date[,...] | /NEXT:date[,...]] "command"
            \\computername 指定遠(yuǎn)程計(jì)算機(jī)。 如果省略這個(gè)參數(shù),會(huì)計(jì)劃在本地計(jì)算機(jī)上運(yùn)行命令。
            id 指定給已計(jì)劃命令的識(shí)別號(hào)。
            /delete 刪除某個(gè)已計(jì)劃的命令。如果省略 id,計(jì)算機(jī)上所有已計(jì)劃的命令都會(huì)被刪除。
            /yes 不需要進(jìn)一步確認(rèn)時(shí),跟刪除所有作業(yè)的命令一起使用。
            time 指定運(yùn)行命令的時(shí)間。
            /interactive 允許作業(yè)在運(yùn)行時(shí),與當(dāng)時(shí)登錄的用戶桌面進(jìn)行交互。
            /every:date[,...] 每個(gè)月或每個(gè)星期在指定的日期運(yùn)行命令。如果省略日期,則默認(rèn)為在每月的本日運(yùn)行。
            /next:date[,...] 指定在下一個(gè)指定日期(如下周四)運(yùn)行命令。如果省略日期,則默認(rèn)為在每月的本日運(yùn)行。
            "command" 準(zhǔn)備運(yùn)行的 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 閱讀(246) 評(píng)論(0)  編輯  收藏 所屬分類: 數(shù)據(jù)庫(kù)

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

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 外汇| 连云港市| 屯昌县| 湄潭县| 藁城市| 崇左市| 徐汇区| 昌平区| 朝阳市| 台中市| 德惠市| 上杭县| 邮箱| 呼玛县| 宜阳县| 许昌市| 门源| 秦皇岛市| 七台河市| 克什克腾旗| 新营市| 仲巴县| 平昌县| 天台县| 栾城县| 万载县| 汾阳市| 桂平市| 兰西县| 贵阳市| 金乡县| 崇仁县| 安顺市| 福鼎市| 依安县| 武定县| 泌阳县| 那坡县| 青岛市| 安康市| 铜鼓县|