PL/SQL遠程備份和恢複Oracle資料庫_oracle

來源:互聯網
上載者:User

在用戶端遠程備份的檔案儲存在資料庫所在主機上,不會直接拷貝到用戶端。
—————————————————————————————————————————— 

首先無論你的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步提到的路徑下有匯入日誌,匯入完成後看看有什麼錯誤

以上就是本文的全部內容,希望對大家的學習有所協助,也希望大家多多支援雲棲社區。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.