溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Oracle專題17之?dāng)?shù)據(jù)備份和恢復(fù)

發(fā)布時(shí)間:2020-06-09 17:02:33 來源:網(wǎng)絡(luò) 閱讀:752 作者:糖醋白糖 欄目:關(guān)系型數(shù)據(jù)庫

1、數(shù)據(jù)備份和恢復(fù)的概述

a、備份與恢復(fù)的必要性

  • 由于計(jì)算機(jī)系統(tǒng)的各種軟硬件故障,用戶的錯(cuò)誤操作以及一些惡意破壞難以避免,因此這就影響到數(shù)據(jù)的正確性,甚至造成數(shù)據(jù)損失,服務(wù)器崩潰的嚴(yán)重后果。
  • 所以經(jīng)常的備份可以有效地防止數(shù)據(jù)丟失,能夠把數(shù)據(jù)從錯(cuò)誤狀態(tài)恢復(fù)到正確狀態(tài)。

    b、備份解決方案

  • Oracle備份有分為:物理備份和邏輯備份。
  • 物理備份又分為冷備份和熱備份。(熱備份又分為用戶管理備份和Oracle管理備份)
    Oracle專題17之?dāng)?shù)據(jù)備份和恢復(fù)

    c、冷備份(脫機(jī)備份)具體步驟

  • 脫機(jī)備份是在關(guān)閉數(shù)據(jù)庫后進(jìn)行的完整備份
  • 脫機(jī)備份是最快和最安全的方法。
  • 脫機(jī)備份是數(shù)據(jù)庫全部文件的備份,包括參數(shù)文件、所有控制文件、所有數(shù)據(jù)文件、所有聯(lián)機(jī)重做日志文件。

  • 脫機(jī)備份的具體步驟分為三步:
    1、以sys用戶或者system身份登錄數(shù)據(jù)庫,以immediate方式關(guān)閉數(shù)據(jù)庫。

    SQL> conn sys/02000059 as sysdba
    已連接。
    SQL> shutdown immediate
    數(shù)據(jù)庫已經(jīng)關(guān)閉。
    已經(jīng)卸載數(shù)據(jù)庫。
    ORACLE 例程已經(jīng)關(guān)閉。

    2、把需要備份的文件拷貝到指定的位置。(復(fù)制所有需要備份的文件)
    Oracle專題17之?dāng)?shù)據(jù)備份和恢復(fù)
    3、拷貝完成后,如果繼續(xù)讓用戶使用數(shù)據(jù)庫,需要以open方式啟動(dòng)數(shù)據(jù)庫。

    SQL> startup open
    ORACLE 例程已經(jīng)啟動(dòng)。
    
    Total System Global Area 3373858816 bytes
    Fixed Size                  2180424 bytes
    Variable Size            2013268664 bytes
    Database Buffers         1342177280 bytes
    Redo Buffers               16232448 bytes
    數(shù)據(jù)庫裝載完畢。
    數(shù)據(jù)庫已經(jīng)打開。

    d、脫機(jī)備份的優(yōu)點(diǎn)和不足

  • 優(yōu)點(diǎn):
    1、是非??焖俚膫浞莘椒ǎㄖ恍枰截愇募?。
    2、容易歸檔(簡(jiǎn)單拷貝即可)。
    3、容易恢復(fù)到某個(gè)時(shí)間點(diǎn)上(只需要將文件在拷貝回去)。
    4、能夠與歸檔方法向結(jié)合,作為數(shù)據(jù)庫“最新狀態(tài)”的恢復(fù)。
    5、低度維護(hù),高度安全。

  • 不足:
    1、單獨(dú)使用時(shí),只能提供到“某一時(shí)間點(diǎn)上”的恢復(fù)。
    2、在實(shí)施備份的全過程中,數(shù)據(jù)庫必須要做備份而不能作為其他工作。也就是說,在脫機(jī)備份過程中,數(shù)據(jù)庫必須是關(guān)閉狀態(tài)。
    3、若磁盤空間有限,只能拷貝到其他外部存儲(chǔ)設(shè)備上時(shí),速度會(huì)很慢。
    4、不能按表或者按用戶恢復(fù)。

    e、數(shù)據(jù)庫恢復(fù)

  • 數(shù)據(jù)庫恢復(fù)就是把數(shù)據(jù)庫中備份出來的數(shù)據(jù)重新還原給原來的數(shù)據(jù)庫。
  • 數(shù)據(jù)庫恢復(fù)技術(shù)分為完全恢復(fù)和不完全恢復(fù)。
  • 安全恢復(fù)是指把數(shù)據(jù)庫恢復(fù)到數(shù)據(jù)庫失敗時(shí)的數(shù)據(jù)庫狀態(tài);不完全恢復(fù)是指將數(shù)據(jù)庫恢復(fù)到數(shù)據(jù)庫失敗前的某一時(shí)刻的數(shù)據(jù)庫狀態(tài)。

    f、脫機(jī)恢復(fù)

  • 脫機(jī)恢復(fù)是使用備份文件將數(shù)據(jù)庫恢復(fù)到備份時(shí)的狀態(tài)。

    g、脫機(jī)恢復(fù)的具體操作

  • 脫機(jī)恢復(fù)的具體步驟分為三步:
    1、以sys用戶或者system身份登錄數(shù)據(jù)庫,以immediate方式關(guān)閉數(shù)據(jù)庫。
    2、將所有備份文件全部拷貝到原來的位置。
    3、拷貝完成后,如果繼續(xù)讓用戶使用數(shù)據(jù)庫,需要以open方式啟動(dòng)數(shù)據(jù)庫。

    2、數(shù)據(jù)的導(dǎo)入和導(dǎo)出

    a、圖形化導(dǎo)入導(dǎo)出數(shù)據(jù)的方式

    1、使用PLSQL Developer工具導(dǎo)出數(shù)據(jù):

  • 第一種是導(dǎo)出為.dump的文件格式,.dmp文件是二進(jìn)制的,可以跨平臺(tái),還能包含權(quán)限,效率也很不錯(cuò),用得最為廣泛。
    Oracle專題17之?dāng)?shù)據(jù)備份和恢復(fù)
    Oracle專題17之?dāng)?shù)據(jù)備份和恢復(fù)
  • 第二種是導(dǎo)出為.sql文件的,可用文本編輯器查看,通用性比較好,但是效率不如第一種,適合小數(shù)據(jù)量導(dǎo)入導(dǎo)出。
    Oracle專題17之?dāng)?shù)據(jù)備份和恢復(fù)

    2、使用PLSQL Developer工具導(dǎo)出數(shù)據(jù):

  • 第一種是導(dǎo)入為.dump格式的文件:
    Oracle專題17之?dāng)?shù)據(jù)備份和恢復(fù)
  • 第二種是導(dǎo)入為.sql格式的文件:
    Oracle專題17之?dāng)?shù)據(jù)備份和恢復(fù)
  • 需要注意,導(dǎo)入的.sql格式的文件可以沒有數(shù)據(jù),但是必須要有表的結(jié)構(gòu),不然導(dǎo)入會(huì)失敗。

    b、命令行的方式進(jìn)行數(shù)據(jù)的導(dǎo)出

  • 數(shù)據(jù)導(dǎo)出命令執(zhí)行方式如下:
    EXP[username/password] 參數(shù)1 參數(shù)2
  • 示例1:將數(shù)據(jù)庫orc完全導(dǎo)出。
    exp system/oracle@orcl file=c:\dump\oracle_bak.dmp full=y
  • 示例2:將數(shù)據(jù)庫中scott用戶的所有對(duì)象導(dǎo)出。
    exp scott/tiger1@orcl file=c:\dump\scott_bak.dmp owner=scott
  • 示例3:將scott用戶中表emp,dept導(dǎo)出
    exp scott/tiger1@orcl file=c:\dump\table_bak.dmp tables=(emp, dept)

    c、命令行的方式進(jìn)行數(shù)據(jù)的導(dǎo)入

  • 導(dǎo)入數(shù)據(jù)命令執(zhí)行方式如下:
    IMP [username/password] 參數(shù)1 參數(shù)2 ... ...
  • 將備份文件導(dǎo)入到數(shù)據(jù)庫中:
    imp scott/tiger1@orcl file=c:\dump\scott_bak.dmp ignore=y
  • 需要注意,此示例中用scott用戶進(jìn)行的導(dǎo)出操作,在導(dǎo)入時(shí)也必須由scott用戶進(jìn)行導(dǎo)入操作。

    3、利用觸發(fā)器實(shí)現(xiàn)數(shù)據(jù)的同步備份

    a、利用觸發(fā)器實(shí)現(xiàn)數(shù)據(jù)的同步備份圖示

    Oracle專題17之?dāng)?shù)據(jù)備份和恢復(fù)

    b、示例:利用觸發(fā)器實(shí)現(xiàn)數(shù)據(jù)的同步備份

  • 因?yàn)樵谙到y(tǒng)中只安裝一個(gè)Oracle數(shù)據(jù)庫,選擇的方式是在同一數(shù)據(jù)庫中進(jìn)行備份:(即A表和A表備份都在同一個(gè)數(shù)據(jù)庫中)
    Oracle專題17之?dāng)?shù)據(jù)備份和恢復(fù)
    1、創(chuàng)建員工表的備份表:

    CREATE TABLE emp_bak
    AS
    SELECT * FROM emp;

    2、創(chuàng)建觸發(fā)器來實(shí)現(xiàn)數(shù)據(jù)的同步備份。(如當(dāng)刪除員工后,備份表同步刪除)

    CREATE OR REPLACE TRIGGER syno_bak_tirgger
    AFTER DELETE
    ON emp
    FOR EACH ROW
    BEGIN
        DELETE FROM emp_bak WHERE empno = :old.empno;
    END;

    3、測(cè)試

    DELETE FROM emp WHERE empno = 7951;
    
    SELECT * FROM emp;
    SELECT * FROM emp_bak;
向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI