亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

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

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

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

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

  1、介質故障。

  2、用戶的錯誤操作。

  3、服務器的徹底崩潰。

  4、計算機病毒。

  5、不可預料的因素。

?

  Oracle中故障類型分為以下4種。

1、語句故障:

  執(zhí)行SQL語句過程發(fā)生的邏輯故障可導致語句故障。如果用戶編寫的SQL語句無效,就會發(fā)生語句故障。Oracle可自我修復語句故障,撤銷語句產生的而印象,并將控制權交給應用程序。

 2、用戶進程故障

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

?

3、實例故障

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

?

4、介質故障

  介質故障是當一個數(shù)據(jù)庫文件或者磁盤不能讀或者不能寫時出現(xiàn)的故障。

?

二、備份

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

1、從物理角度與邏輯角度分類:

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

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

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

 ?。?)完全備份:每次對數(shù)據(jù)進行完整備份。

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

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

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

?

三、恢復

  恢復就是發(fā)生故障后,利用已備份的數(shù)據(jù)文件或控制文件,重新建立一個完整的數(shù)據(jù)庫?;謴头譃閮煞N類型:

  1、實例恢復:當Oracle實例出現(xiàn)失敗后,Oracle自動進行的恢復。

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

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

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

?

四、導出

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

1、expdp的導出方式:

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

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

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

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

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

?

2、基于命令行導出

  ?語法:

  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ù)庫目錄對象

  dumpfile:指定轉儲文件

  full=y:表示實施的全部導入

  tables=table_list:表示導入表的列表

? ? ? schemas=schema_list:表示導入的用戶模式

? ? ??tablespaces=tablesapce_list:表示導入的表空間

? ? ??remap_schema=user1:user2:表示從user1導入到user2中

  nologfile=y:表示不進行日志操作

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

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

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

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

  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)表導出方式:

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

  說明:

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

?

4)表空間導出方式:

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

3、DBMS_DATAPUMP進行數(shù)據(jù)泵導出

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

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

  h1 
      
        NUMBER
      
      
        ;


      
      
        begin
      
      
        --
      
      
        建立一個用戶定義的數(shù)據(jù)泵做schema的方案備份。
      
      

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

    
      
      
        --
      
      
        定義存儲文件
      
      

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

    
      
      
        --
      
      
        定義過濾條件
      
      

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

    
      
      
        --
      
      
        啟動數(shù)據(jù)泵會話
      
      

    DBMS_DATAPUMP.start_job(handle 
      
        =>
      
      
         h1);

    
      
      
        --
      
      
        斷開數(shù)據(jù)泵會話
      
      

    DBMS_DATAPUMP.detach(handle 
      
        =>
      
      
         h1);


      
      
        end
      
      
        ;




      
      
        --
      
      
        默認保存路徑:C:\Oracle11g\admin\orcl\dpdump
      
    

?

五、導入

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

  1、導出方式

  1)全部導入模式:一個導出文件集的全部內容被裝入,該導出文件集不一定是全數(shù)據(jù)庫方式進行導出的。

  2)用戶模式:指定文件集中的一個用戶列表的全部內容被導入。

  3、表模式:指定表和相依對象從導出文件中得到導入。

  4、表空間模式:指定文件集中屬于表空間列表內的所有內容都被導入。

?

2、使用命令行導入

  語法:

  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ù)庫目錄對象

  dumpfile:指定轉儲文件

  full=y:表示實施的全部導入

  tables=table_list:表示導入表的列表

? ? ? schemas=schema_list:表示導入的用戶模式

? ? ??tablespaces=tablesapce_list:表示導入的表空間

? ? ?? remap_schema=user1:user2:表示從user1導入到user2中

  nologfile=y:表示不進行日志操作

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

  例:

1)導入整個數(shù)據(jù)庫:

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

2)導入表空間: 

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

3)導入scott用戶下的所有表: 

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

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

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

3、 DBMS_DATAPUMP進行數(shù)據(jù)泵導入

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

    h1 
      
        NUMBER
      
      
        ;  


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

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

    
      
      
        --
      
      
        把shop_dev_data對象模式導入到shop_back對象模式中。
      
      

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

  
      
      
        --
      
      
        將日志寫入shop.log文件中
      
      

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

    
      
      
        --
      
      
        啟動數(shù)據(jù)泵
      
      

    DBMS_DATAPUMP.start_job(handle 
      
        =>
      
      
         h1);

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

    DBMS_DATAPUMP.detach(handle 
      
        =>
      
      
         h1);


      
      
        end
      
      ;
    

?

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


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

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

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

【本文對您有幫助就好】

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

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 国产欧美精品三区 | 波多野结衣一区二区三区四区 | 亚洲国产第一区 | 青青久久99久久99久久999 | 夜夜骑日日操 | 在线成人免费观看国产精品 | 久久88香港三级台湾三级中文 | www.免费视频 | 中文一区二区视频 | 真人午夜a一级毛片 | 日本视频播放免费线上观看 | 久久99精品久久久久久水蜜桃 | 日本一区二区三区在线 观看网站 | 一级一片 | 另类日本人xxxxbbbb | 亚洲综合久久久 | 日韩一区二区三区在线观看 | 欧美日韩黄色大片 | 一区不卡 | 美女a毛片| 亚洲女bbwxxxx另类 | 日韩免费一级毛片欧美一级日韩片 | 国产高清视频在线免费观看 | 免费国产精成人品 | 免费涩涩视频 | 国产久爱青草视频在线观看 | 免费的涩涩视频在线播放 | 国产精品免费一级在线观看 | 九九九影院 | 四虎影视最新 | 草久在线观看 | 国产欧美日韩亚洲精品区2345 | 99精品国产一区二区三区 | 天色噜噜噜噜 | 久久综合日韩亚洲精品色 | 国产精品乱码在线观看 | 99国产精品视频久久久久 | 999久久久精品视频在线观看 | 高级毛片| 酒色网站| 天天做天天看夜夜爽毛片 |