PL/SQL遠程備份和恢復Oracle數據庫


(轉自:http://blog.csdn.net/huchunfu/article/details/25165901)
在客戶端遠程備份的文件保存在數據庫所在主機上,不會直接拷貝到客戶端。
——————————————————————————————————————————
首先無論你的Oracle服務器是Linux還是windows操作系統,Oracle的備份和恢復操作都是使用DBMS_DUMP來實現導入(備份)和導出(恢復)。首先你要安裝好PL/SQL,用PL/SQL來執行我下面提供的JOB就可以實現了。
一、Oracle的導出(備份)
  1、用PLSQL連接Oracle數據庫服務器,使用你需要導出的用戶連接Oracle數據庫服務器,執行下面語句備份:

declare
        h1   NUMBER;
        l1   varchar2(20);
        begin
           h1 :=dbms_datapump.open (operation => 'EXPORT', job_mode =>'SCHEMA', job_name => 'JOB_EXP1', version =>'COMPATIBLE');
         dbms_datapump.set_parallel(handle=> h1, degree => 1);
         dbms_datapump.add_file(handle=> h1, filename => 'EXPDAT.LOG', directory =>'DATA_PUMP_DIR', filetype => 3);
         dbms_datapump.set_parameter(handle=> h1, name => 'KEEP_MASTER', value => 0);
         dbms_datapump.metadata_filter(handle=> h1, name => 'SCHEMA_EXPR', value => 'IN(''CHY'')');
         dbms_datapump.add_file(handle=> h1, filename => 'CHYDB.DMP',directory => 'DATA_PUMP_DIR', filetype => 1);
         dbms_datapump.set_parameter(handle=> h1, name => 'INCLUDE_METADATA', value => 1);
         dbms_datapump.set_parameter(handle=> h1, name => 'DATA_ACCESS_METHOD', value =>'AUTOMATIC');
         dbms_datapump.set_parameter(handle=> h1, name => 'ESTIMATE', value => 'BLOCKS');
         dbms_datapump.start_job(handle=> h1, skip_current => 0, abort_step => 0);
         dbms_datapump.wait_for_job(handle=> h1, job_state => l1);
         dbms_datapump.detach(handle=> h1);
       end;

    2、注意:
         A、'IN(''CHY'')' 中的CHY為PL\SQL登陸的用戶名,待備份的用戶,注意用大寫。
         B、filename=> 'CHYDB.DMP'中的CHYDB是指定的備份出的dmp文件名稱,注意用大寫。

    3、待plsql中執行完成,從下面查詢獲取備份文件的路徑,並將dmp文件可以拷貝出來
         SELECTdirectory_path FROM dba_directories WHEREdirectory_name='DATA_PUMP_DIR';

    4、Oracle的導出(備份)完成了。

二、Oracle的導入(恢復)

    1、登陸或者遠程到Oracle服務器,將Oracle的備份文件(DMP文件)拷貝到指定路徑下,路徑的獲取用下面的SQL語句:

SELECT directory_path FROMdba_directories WHERE directory_name='DATA_PUMP_DIR';

    2、在Oracle服務器創建用戶,一般用Oracle工具em創建用戶

       A、Oracle中沒有數據庫實體的概念,是“用戶”,數據庫用戶就相當於SQLserver的數據庫實體。

B、登陸Oracle的em,用SYS用戶登陸,SYS的角色是SYSDBA。

C、創建用戶,以“SA”為例子,默認表空間一般選擇“USERS”,臨時表空間一般選擇TEMP(如果你自己想用自己創建的

表 空間也可以,選擇自己創建的表空間吧)。

D、角色頁簽,一定要授予該用戶DBA角色,在編輯列表選擇DBA選項移動到右側。

E、系統權限頁簽,在編輯列表使用“全部移動”,授予該用戶所有的權限。

        F、剩下的頁簽不需要做任何設置,點擊確定就可以提示該用戶創建成功。

    3、用PL\SQL連接Oracle服務器,注意使用第2步創建的用戶登陸PL\SQL連接Oracle服務器

     4、在新的SQLWindow執行下面的語句進行導入(恢復)

        declare
         h1  NUMBER;
         l1  varchar2(20);
         begin
               h1 :=dbms_datapump.open (operation => 'IMPORT', job_mode =>'SCHEMA', job_name => 'JOB_EXP1', version =>'COMPATIBLE');
             dbms_datapump.set_parallel(handle => h1,degree => 1);
             dbms_datapump.add_file(handle => h1, filename=> 'IMPORT.LOG', directory => 'DATA_PUMP_DIR', filetype =>3);
             dbms_datapump.set_parameter(handle => h1, name=> 'KEEP_MASTER', value => 0);
             dbms_datapump.add_file(handle => h1, filename=> 'CHYDB.DMP', directory =>'DATA_PUMP_DIR', filetype => 1);
             dbms_datapump.metadata_filter(handle=> h1, name => 'SCHEMA_EXPR', value => 'IN(''CHY'')');
             dbms_datapump.set_parameter(handle=> h1, name => 'INCLUDE_METADATA', value => 1);
             dbms_datapump.set_parameter(handle=> h1, name => 'DATA_ACCESS_METHOD', value =>'AUTOMATIC');
             dbms_datapump.set_parameter(handle=> h1, name => 'SKIP_UNUSABLE_INDEXES', value => 0);
             dbms_datapump.metadata_remap(handle=> h1,name => 'REMAP_SCHEMA', old_value => 'CHY', value => 'SA');
             dbms_datapump.metadata_remap(handle=> h1,name => 'REMAP_TABLESPACE', old_value =>'USERS', value => 'USERS');
             dbms_datapump.metadata_transform(handle=> h1,name => 'OID',value => 0);
             dbms_datapump.start_job(handle=> h1, skip_current => 0, abort_step => 0);
             dbms_datapump.wait_for_job(handle=> h1, job_state => l1);
             dbms_datapump.detach(handle=> h1);
         end;

     5、注意:(下面的全部都要大寫)

        A、第一個紅色標記('CHYDB.DMP'),拷貝到Oracle服務器的DMP文件的名稱

        B、第二個紅色標記(CHY),DMP文件的用戶,所以在導入(備份)Oracle用戶是需要記下用戶名和表空間的名稱

        C、第三個紅色標記(CHY),DMP文件的用戶

        D、第四個紅色標記(SA),你剛才創建的用戶

E、第五個紅色標記(USERS),DMP文件的表空間的名稱,在B里面提到需要記住的

F、第六個紅色標記(USERS),你剛才創建的用戶關聯的默認表空間的名稱

6、確保上述步驟無誤,執行導入(恢復)語句,成功實現Oracle的導入(恢復)。

7、在做導入的過程中,第1步提到的路徑下有導入日志,導入完成后看看有什么錯誤


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM