日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

Oracle基礎(chǔ) 數(shù)據(jù)庫(kù)備份和恢復(fù)

系統(tǒng) 2307 0
原文: Oracle基礎(chǔ) 數(shù)據(jù)庫(kù)備份和恢復(fù)

一、為什么需要數(shù)據(jù)備份

  造成數(shù)據(jù)丟失的主要原因:

  1、介質(zhì)故障。

  2、用戶的錯(cuò)誤操作。

  3、服務(wù)器的徹底崩潰。

  4、計(jì)算機(jī)病毒。

  5、不可預(yù)料的因素。

?

  Oracle中故障類(lèi)型分為以下4種。

1、語(yǔ)句故障:

  執(zhí)行SQL語(yǔ)句過(guò)程發(fā)生的邏輯故障可導(dǎo)致語(yǔ)句故障。如果用戶編寫(xiě)的SQL語(yǔ)句無(wú)效,就會(huì)發(fā)生語(yǔ)句故障。Oracle可自我修復(fù)語(yǔ)句故障,撤銷(xiāo)語(yǔ)句產(chǎn)生的而印象,并將控制權(quán)交給應(yīng)用程序。

 2、用戶進(jìn)程故障

  當(dāng)用戶程序出錯(cuò)而無(wú)法訪問(wèn)Oracle數(shù)據(jù)庫(kù)時(shí),就會(huì)發(fā)生用戶進(jìn)程故障。用戶進(jìn)程故障只會(huì)導(dǎo)致當(dāng)前用戶無(wú)法操作數(shù)據(jù)庫(kù),但不會(huì)印象其他用戶進(jìn)程,當(dāng)用戶進(jìn)程出現(xiàn)故障時(shí),進(jìn)程監(jiān)控程序(PMON)會(huì)自動(dòng)執(zhí)行進(jìn)程恢復(fù)。

?

3、實(shí)例故障

  當(dāng)Oracle 數(shù)據(jù)庫(kù)實(shí)例由于硬件或軟件問(wèn)題而無(wú)法繼續(xù)運(yùn)行時(shí),就會(huì)發(fā)生實(shí)例故障。硬件問(wèn)題包括意外斷電,而然間問(wèn)題可能是服務(wù)器操作系統(tǒng)崩潰。如果發(fā)現(xiàn)實(shí)例故障,Oracle會(huì)自動(dòng)完成實(shí)例修復(fù)。實(shí)例修復(fù)將數(shù)據(jù)庫(kù)恢復(fù)到與故障之前的事務(wù)一致?tīng)顟B(tài),Oracle會(huì)自動(dòng)回滾未提交的數(shù)據(jù)。

?

4、介質(zhì)故障

  介質(zhì)故障是當(dāng)一個(gè)數(shù)據(jù)庫(kù)文件或者磁盤(pán)不能讀或者不能寫(xiě)時(shí)出現(xiàn)的故障。

?

二、備份

  備份就是把創(chuàng)建一個(gè)數(shù)據(jù)庫(kù)副本到磁盤(pán)。從不同角度分類(lèi)如下:

1、從物理角度與邏輯角度分類(lèi):

 ?。?)物理備份:對(duì)數(shù)據(jù)庫(kù)操作系統(tǒng)的物理文件(如數(shù)據(jù)文件、控制文件和日志文件等)的備份。物理備份又可分為脫機(jī)備份(冷備份)和聯(lián)機(jī)備份(熱備份),前者是在關(guān)閉數(shù)據(jù)庫(kù)的時(shí)候進(jìn)行的,后者對(duì)運(yùn)行在歸檔日志方式的數(shù)據(jù)庫(kù)進(jìn)行備份。

 ?。?)邏輯備份:對(duì)數(shù)據(jù)庫(kù)邏輯組件(如表和存儲(chǔ)過(guò)程等數(shù)據(jù)對(duì)象)的備份。

2、從數(shù)據(jù)庫(kù)的備份策略角度分類(lèi):

  (1)完全備份:每次對(duì)數(shù)據(jù)進(jìn)行完整備份。

 ?。?)增量備份:值有那些在上次完全備份或者增量備份后備修改的文件才會(huì)被備份。優(yōu)點(diǎn)是備份數(shù)據(jù)量小,需要的時(shí)間短,缺點(diǎn)是恢復(fù)的時(shí)候需要依賴(lài)之前的備份記錄,出問(wèn)題的風(fēng)險(xiǎn)較大。例如:如果在星期一進(jìn)行完全備份,在星期二至星期五進(jìn)行增量備份。如果星期五數(shù)據(jù)被破壞了,則數(shù)據(jù)恢復(fù)需要星期一的完全備份和從星期二至星期五的所有增量備份。

 ?。?)差異備份:備份那些從上次完全備份之后被修改過(guò)得文件。因此從差異備份中恢復(fù)數(shù)據(jù)的時(shí)間長(zhǎng)短,因此只需要兩份數(shù)據(jù)(最后一次完全備份和最后一次差異備份),缺點(diǎn)是每次備份的時(shí)間較長(zhǎng)。例如:如果在星期一進(jìn)行完全備份,在星期二到星期五進(jìn)行了差異備份,如果星期五數(shù)據(jù)被破壞了,則數(shù)據(jù)恢復(fù)只需要星期的完全備份和星期四的差量備份。

增量備份和差異備份的區(qū)別:增量備份需要保留所有增量備份的數(shù)據(jù);差異備份只需要保留最后一次差異備份的數(shù)據(jù)。

?

三、恢復(fù)

  恢復(fù)就是發(fā)生故障后,利用已備份的數(shù)據(jù)文件或控制文件,重新建立一個(gè)完整的數(shù)據(jù)庫(kù)。恢復(fù)分為兩種類(lèi)型:

  1、實(shí)例恢復(fù):當(dāng)Oracle實(shí)例出現(xiàn)失敗后,Oracle自動(dòng)進(jìn)行的恢復(fù)。

  2、介質(zhì)恢復(fù):當(dāng)存放數(shù)據(jù)庫(kù)的介質(zhì)出現(xiàn)故障時(shí)所做的恢復(fù)。介質(zhì)恢復(fù)又分為 完全恢復(fù) 不完全恢復(fù)

    完全恢復(fù):將數(shù)據(jù)庫(kù)恢復(fù)到數(shù)據(jù)庫(kù)失敗時(shí)的狀態(tài)。

    不完全恢復(fù):將數(shù)據(jù)庫(kù)恢復(fù)到數(shù)據(jù)庫(kù)失敗前的某一時(shí)刻的狀態(tài)。

?

四、導(dǎo)出

(一)使用數(shù)據(jù)泵技術(shù):

1、expdp的導(dǎo)出方式:

    1)數(shù)據(jù)庫(kù)方式:整個(gè)數(shù)據(jù)被導(dǎo)入到操作系統(tǒng)文件中。

    2)用戶模式:導(dǎo)出一個(gè)或者多個(gè)用戶下的所有數(shù)據(jù)和元數(shù)據(jù)。

    3)表方式:到處一組表的所有數(shù)據(jù)和元數(shù)據(jù)。

    4)表空間方式:用于提取一個(gè)表空間中所有的數(shù)據(jù)和元數(shù)據(jù),另外還提取依賴(lài)于指定表空間列表中所有對(duì)象的任何依賴(lài)對(duì)象。?

轉(zhuǎn)儲(chǔ)文件:由數(shù)據(jù)泵到處程序所創(chuàng)建的文件成為轉(zhuǎn)儲(chǔ)文件,在單個(gè)數(shù)據(jù)泵導(dǎo)出作業(yè)期間所有的轉(zhuǎn)儲(chǔ)文件稱(chēng)為轉(zhuǎn)儲(chǔ)文件集。

?

2、基于命令行導(dǎo)出

  ?語(yǔ)法:

  c:\expdb?system/password directory=pbdir dumpfile=pb.dmp?full=y?tables=table_list tablespaces=tablesapce_list schemas=schema_list ?  remap_schema=user1:user2?nologfile=y sqlfile=pb.sql

  system/passwrod:用戶名和密碼

  directory:數(shù)據(jù)庫(kù)目錄對(duì)象

  dumpfile:指定轉(zhuǎn)儲(chǔ)文件

  full=y:表示實(shí)施的全部導(dǎo)入

  tables=table_list:表示導(dǎo)入表的列表

? ? ? schemas=schema_list:表示導(dǎo)入的用戶模式

? ? ??tablespaces=tablesapce_list:表示導(dǎo)入的表空間

? ? ??remap_schema=user1:user2:表示從user1導(dǎo)入到user2中

  nologfile=y:表示不進(jìn)行日志操作

  sqlfile:表示將元數(shù)據(jù)(DDL語(yǔ)句)寫(xiě)入到指定文件中。

注意:如果需要導(dǎo)出完全數(shù)據(jù)庫(kù),必須具備exp_full_database權(quán)限。

1)數(shù)據(jù)庫(kù)方式:

  注意:如果需要導(dǎo)出完全數(shù)據(jù)庫(kù),必須具備exp_full_database權(quán)限。

  expdp scott/scott@accp directory=dump_dir dumpfile=full.dmp full=y

2)用戶模式方式:

  expdp scott/scott@accp directory=dump_dir dumpfile=scottschema.dmp schemas=scott

?    ?

3)表導(dǎo)出方式:

expdp scott/scott@accp directory=dump_dir dumpfile=tables .dmp tables=emp,dept,bonus,salgrade?content=data_only

  說(shuō)明:

  content=data_only:data_only表示只導(dǎo)出表中的數(shù)據(jù),不導(dǎo)出元數(shù)據(jù);metadata_only:則表示只導(dǎo)出元數(shù)據(jù)而不導(dǎo)出表中的數(shù)據(jù)。如果不寫(xiě),則兩者全部導(dǎo)出?! ?

?

4)表空間導(dǎo)出方式:

  expdp scott/scott@accp directory=dump_dir dumpfile=tablespace.dmp tablespaces=users

3、DBMS_DATAPUMP進(jìn)行數(shù)據(jù)泵導(dǎo)出

  使用這種方式比直接使用命令方式要麻煩一些,但是卻從數(shù)據(jù)庫(kù)作業(yè)調(diào)度中安排數(shù)據(jù)泵導(dǎo)出作業(yè)的運(yùn)行日程提供了方便,為數(shù)據(jù)泵導(dǎo)出提供了更好的功能度和控制度。

      
        declare
      
      
        --
      
      
        創(chuàng)建數(shù)據(jù)泵工作句柄
      
      

  h1 
      
        NUMBER
      
      
        ;


      
      
        begin
      
      
        --
      
      
        建立一個(gè)用戶定義的數(shù)據(jù)泵做schema的方案?jìng)浞荨?
      
      

    h1 :
      
        =
      
       DBMS_DATAPUMP.
      
        open
      
      (operation 
      
        =>
      
      
        '
      
      
        export
      
      
        '
      
      ,job_mode 
      
        =>
      
      
        '
      
      
        schema
      
      
        '
      
      
        );

    
      
      
        --
      
      
        定義存儲(chǔ)文件
      
      

    DBMS_DATAPUMp.add_file(handle 
      
        =>
      
       h1,filename 
      
        =>
      
      
        '
      
      
        es_shop.dmp
      
      
        '
      
      
        );

    
      
      
        --
      
      
        定義過(guò)濾條件
      
      

    DBMS_DATAPUMP.metadata_filter(handle 
      
        =>
      
       h1,name 
      
        =>
      
      
        '
      
      
        schema_expr
      
      
        '
      
      ,value 
      
        =>
      
      
        '
      
      
        in
      
      
        ''
      
      
        SHOP_USER
      
      
        '''
      
      
        );

    
      
      
        --
      
      
        啟動(dòng)數(shù)據(jù)泵會(huì)話
      
      

    DBMS_DATAPUMP.start_job(handle 
      
        =>
      
      
         h1);

    
      
      
        --
      
      
        斷開(kāi)數(shù)據(jù)泵會(huì)話
      
      

    DBMS_DATAPUMP.detach(handle 
      
        =>
      
      
         h1);


      
      
        end
      
      
        ;




      
      
        --
      
      
        默認(rèn)保存路徑:C:\Oracle11g\admin\orcl\dpdump
      
    

?

五、導(dǎo)入

(一)數(shù)據(jù)泵導(dǎo)入模式

  1、導(dǎo)出方式

  1)全部導(dǎo)入模式:一個(gè)導(dǎo)出文件集的全部?jī)?nèi)容被裝入,該導(dǎo)出文件集不一定是全數(shù)據(jù)庫(kù)方式進(jìn)行導(dǎo)出的。

  2)用戶模式:指定文件集中的一個(gè)用戶列表的全部?jī)?nèi)容被導(dǎo)入。

  3、表模式:指定表和相依對(duì)象從導(dǎo)出文件中得到導(dǎo)入。

  4、表空間模式:指定文件集中屬于表空間列表內(nèi)的所有內(nèi)容都被導(dǎo)入。

?

2、使用命令行導(dǎo)入

  語(yǔ)法:

  c:\impdp system/password directory=pbdir dumpfile=pb.dmp full=y?tables=table_list tablespaces=tablesapce_list schemas=schema_list ?remap_schema=user1:user2?nologfile=y sqlfile=pb.sql

  system/passwrod:用戶名和密碼

  directory:數(shù)據(jù)庫(kù)目錄對(duì)象

  dumpfile:指定轉(zhuǎn)儲(chǔ)文件

  full=y:表示實(shí)施的全部導(dǎo)入

  tables=table_list:表示導(dǎo)入表的列表

? ? ? schemas=schema_list:表示導(dǎo)入的用戶模式

? ? ??tablespaces=tablesapce_list:表示導(dǎo)入的表空間

? ? ?? remap_schema=user1:user2:表示從user1導(dǎo)入到user2中

  nologfile=y:表示不進(jìn)行日志操作

  sqlfile:表示將元數(shù)據(jù)(DDL語(yǔ)句)寫(xiě)入到指定文件中。

  例:

1)導(dǎo)入整個(gè)數(shù)據(jù)庫(kù):

  impdp scott / scott @accp directory=dump_dir dumpfile=FULL.DMP full=y

2)導(dǎo)入表空間: 

  impdp? scott / scott @accp directory=dump_dir dumpfile=tablespace.DMP tablespaces=mytest

3)導(dǎo)入scott用戶下的所有表: 

  impdp? scott / scott @accp directory=dump_dir dumpfile=TABLES.DMP tables=emp,dept,bonus,salgrade

4)將導(dǎo)出的scott用戶下的dept和emp表導(dǎo)入到mytest用戶下

impdp scott/scott@accp directory=dump_dir dumpfile=SCHEMA.DMP tables=dept,emp remap_schema=scott:mytest

3、 DBMS_DATAPUMP進(jìn)行數(shù)據(jù)泵導(dǎo)入

      
        declare
      
      
        --
      
      
        創(chuàng)建數(shù)據(jù)泵句柄
      
      

    h1 
      
        NUMBER
      
      
        ;  


      
      
        begin
      
      
        --
      
      
        建立一個(gè)用戶定義的數(shù)據(jù)泵通過(guò)數(shù)據(jù)泵連接orcllib進(jìn)行訪問(wèn)。
      
      

    h1 :
      
        =
      
       DBMS_DATAPUMP.
      
        open
      
      (operation 
      
        =>
      
      
        '
      
      
        IMPORT
      
      
        '
      
      ,job_mode 
      
        =>
      
      
        '
      
      
        schema
      
      
        '
      
      ,remote_link 
      
        =>
      
      
        '
      
      
        orcllib
      
      
        '
      
      
        );

    
      
      
        --
      
      
        把shop_dev_data對(duì)象模式導(dǎo)入到shop_back對(duì)象模式中。
      
      

    DBMS_DATAPUMP.metadata_remap(handle 
      
        =>
      
       h1,name 
      
        =>
      
      
        '
      
      
        REMAP_SCHEMA
      
      
        '
      
      ,old_value 
      
        =>
      
      
        '
      
      
        SHOP_DEV_DATA
      
      
        '
      
      ,value 
      
        =>
      
      
        '
      
      
        SHOP_BACK
      
      
        '
      
      
        );

  
      
      
        --
      
      
        將日志寫(xiě)入shop.log文件中
      
      

    DBMS_DATAPUMP.add_file(handle 
      
        =>
      
       h1,filename 
      
        =>
      
      
        '
      
      
        shop.log
      
      
        '
      
      ,filetype 
      
        =>
      
      
         DBMS_DATAPUMP.KU$_FILE_TYPE_LOG_FILE);

    
      
      
        --
      
      
        啟動(dòng)數(shù)據(jù)泵
      
      

    DBMS_DATAPUMP.start_job(handle 
      
        =>
      
      
         h1);

    
      
      
        --
      
      
        斷開(kāi)數(shù)據(jù)泵連接
      
      

    DBMS_DATAPUMP.detach(handle 
      
        =>
      
      
         h1);


      
      
        end
      
      ;
    

?

Oracle基礎(chǔ) 數(shù)據(jù)庫(kù)備份和恢復(fù)


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦?。。?/p>

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 大埔区| 留坝县| 丰宁| 屏山县| 乌兰察布市| 响水县| 镇赉县| 乐至县| 新源县| 柳江县| 枣强县| 福贡县| 孝感市| 历史| 武冈市| 宕昌县| 宁河县| 海南省| 承德县| 宜阳县| 鲁甸县| 敦化市| 梅州市| 肃北| 垣曲县| 芜湖县| 资溪县| 长垣县| 原阳县| 南平市| 望城县| 洪江市| 慈利县| 双城市| 咸阳市| 陆河县| 塔城市| 齐河县| 沈阳市| 聂荣县| 永定县|