1. 程式人生 > >數據泵增量備份

數據泵增量備份

base 分區表 documents 種類型 ova 一個數據庫 related 不存在 服務器

本帖最後由 java3344520 於 2012-11-8 12:51 編輯

大家看看這個參數inctype你是否使用過?我做了以下測試,歡迎拍磚!

Oracle數據庫邏輯增量備份之exp/imp
一、實現需求
由於一個庫在雲平臺上,雖然做了RMAN備份,但是RMAN備份在雲本地磁盤上,同時庫備份數據量比較大,無法轉移到其他的空間上。由於該庫應用的性質比較特殊,大數據量部分要求保存180天後即可刪除,因此除了做RMAN之外,我希望將核心數據做下額外的備份,expdp可以滿足,目前是這麽做的,但是expdp做不了增量備份。聽說exp/imp有參數能做增量備份,但是又聽說exp增量備份的最小單位是表,只要表一條數據發生變化,就會對全表進行備份。之前沒有用過
exp增量備份這個功能,於是決定先做下測試,看到底備份恢復效率和真實機制如何。 二、邏輯備份恢復工具exp/imp1、邏輯備份原理 Oracle數據庫有三種標準的備份方法,它們分別是導出/導入(EXP/IMP、EXPDP/IMPDP)、熱備份和冷備份。導出備件是一種邏輯備份,冷備份和熱備份是物理備份。 邏輯導出備份:創建數據庫對象的邏輯拷貝並存入一個二進制轉儲文件。這種邏輯備份需要在數據庫啟動的情況下使用, 其導出實質就是讀取一個數據庫記錄集(甚至可以包括數據字典)並將這個記錄集寫入一個文件,這些記錄的導出與其物理位置無關,導入實質就是讀取轉儲文件並執行其中的命令。此備份方式是通過Oracle的實用工具export和import來實施的, export是把數據庫中的數據導出,import是把export卸出的數據導入數據庫中。通過此工具可以衍生出多種功能, 比如整個數據庫的備份、表結構重建、數據的傳輸、用戶的改變等等。 重新溫習下exp/imp的語法和參數,著重看看增量備份參數相關說明。 2、exp語法和參數
C:\Documents and Settings\A4586>exp help=y Export: Release 10.2.0.1.0 - Production on 星期三 11 7 13:41:282012 Copyright (c) 1982, 2005, Oracle. All rights reserved. 通過輸入 EXP 命令和您的用戶名/口令, 導出 操作將提示您輸入參數: 例如: EXPSCOTT/TIGER 或者, 您也可以通過輸入跟有各種參數的 EXP 命令來控制導出 的運行方式。要指定參數, 您可以使用關鍵字: 格式: EXP KEYWORD=value
KEYWORD=(value1,value2,...,valueN) 例如: EXPSCOTT/TIGER GRANTS=Y TABLES=(EMP,DEPT,MGR) TABLES=(T1:P1,T1:P2), 如果 T1 是分區表 USERID 必須是命令行中的第一個參數。 關鍵字 說明 (默認值) ---------- --------------------------------------------------------- USERID 用戶名/口令 FULL 導出整個文件 (N) BUFFER 數據緩沖區大小 OWNER 所有者用戶名列表 FILE 輸出文件(EXPDAT.DMP) TABLES 表名列表 COMPRESS 導入到一個區 (Y) RECORDLENGTH IO 記錄的長度 GRANTS 導出權限 (Y) INCTYPE 增量導出類型 INDEXES 導出索引 (Y) RECORD 跟蹤增量導出 (Y) DIRECT 直接路徑 (N) TRIGGERS 導出觸發器 (Y) LOG 屏幕輸出的日誌文件 STATISTICS 分析對象(ESTIMATE) ROWS 導出數據行(Y) PARFILE 參數文件名 CONSISTENT 交叉表的一致性(N) CONSTRAINTS 導出的約束條件 (Y) OBJECT_CONSISTENT 只在對象導出期間設置為只讀的事務處理(N) FEEDBACK x 行顯示進度 (0) FILESIZE 每個轉儲文件的最大大小 FLASHBACK_SCN 用於將會話快照設置回以前狀態的 SCN FLASHBACK_TIME 用於獲取最接近指定時間的 SCN 的時間 QUERY 用於導出表的子集的 select 子句 RESUMABLE 遇到與空格相關的錯誤時掛起 (N) RESUMABLE_NAME 用於標識可恢復語句的文本字符串 RESUMABLE_TIMEOUT RESUMABLE 的等待時間 TTS_FULL_CHECK TTS 執行完整或部分相關性檢查 TABLESPACES 要導出的表空間列表 TRANSPORT_TABLESPACE 導出可傳輸的表空間元數據 (N) TEMPLATE 調用 iAS 模式導出的模板名 3、imp語法和參數 C:\Documents and Settings\A4586>imp help=y Import: Release 10.2.0.1.0 - Production on 星期三 11 7 13:59:172012 Copyright (c) 1982, 2005, Oracle. All rights reserved. 通過輸入 IMP 命令和您的用戶名/口令, 導入 操作將提示您輸入參數: 例如: IMPSCOTT/TIGER 或者, 可以通過輸入 IMP 命令和各種參數來控制導入 的運行方式。要指定參數, 您可以使用關鍵字: 格式: IMP KEYWORD=value KEYWORD=(value1,value2,...,valueN) 例如: IMPSCOTT/TIGER IGNORE=Y TABLES=(EMP,DEPT) FULL=N TABLES=(T1:P1,T1:P2), 如果 T1 是分區表 USERID 必須是命令行中的第一個參數。 關鍵字 說明 (默認值) ---------------- ---------------------------------------- USERID 用戶名/口令 FULL 導入整個文件 (N) BUFFER 數據緩沖區大小 FROMUSER 所有者用戶名列表 FILE 輸入文件(EXPDAT.DMP) TOUSER 用戶名列表 SHOW 只列出文件內容(N) TABLES 表名列表 IGNORE 忽略創建錯誤(N) RECORDLENGTH IO 記錄的長度 GRANTS 導入權限 (Y) INCTYPE 增量導入類型 INDEXES 導入索引 (Y) COMMIT 提交數組插入 (N) ROWS 導入數據行(Y) PARFILE 參數文件名 LOG 屏幕輸出的日誌文件 CONSTRAINTS 導入限制 (Y) DESTROY 覆蓋表空間數據文件 (N) INDEXFILE 將表/索引信息寫入指定的文件 SKIP_UNUSABLE_INDEXES 跳過不可用索引的維護 (N) FEEDBACK x 行顯示進度 (0) TOID_NOVALIDATE 跳過指定類型 ID 的驗證 FILESIZE 每個轉儲文件的最大大小 STATISTICS 始終導入預計算的統計信息 RESUMABLE 在遇到有關空間的錯誤時掛起 (N) RESUMABLE_NAME 用來標識可恢復語句的文本字符串 RESUMABLE_TIMEOUT RESUMABLE 的等待時間 COMPILE 編譯過程, 程序包和函數 (Y) STREAMS_CONFIGURATION 導入流的一般元數據 (Y) STREAMS_INSTANTIATION 導入流實例化元數據 (N)
下列關鍵字僅用於可傳輸的表空間 TRANSPORT_TABLESPACE 導入可傳輸的表空間元數據(N) TABLESPACES 將要傳輸到數據庫的表空間 DATAFILES 將要傳輸到數據庫的數據文件 TTS_OWNERS 擁有可傳輸表空間集中數據的用戶 三、exp邏輯備份 ORACLE數據庫的邏輯備份分為三種模式:表備份、用戶備份和完全備份。   (1)、表方式(T方式),將指定表的數據導出。   (2)、用戶方式(U方式),將指定用戶的所有對象及數據導出。   (3)、全庫方式(Full方式),將數據庫中的所有對象導出 1、exp表模式備份 備份某個用戶模式下指定的對象(表)。業務數據庫通常采用這種備份方式。 若備份到本地文件,使用如下命令: C:\Documents and Settings\A4586>set nls_lang=simplifiedchinese_china.zhs16gbk C:\Documents and Settings\A4586>exp scott/tiger file=c:\exp_scott_emp.dmplog=c:\exp_scott_emplog tables=scott.emp,scott.dept 即將導出指定的表通過常規路徑... . . 正在導出表 EMP導出了 14 . . 正在導出表 DEPT導出了 4 導出成功。 2、exp用戶模式備份 備份某個用戶模式下的所有對象。業務數據庫通常采用這種備份方式。若備份到本地文件,使用如下命令: C:\Documentsand Settings\A4586>expscott/tiger file=c:\exp_scott.dmp log=c:\exp_scott.log owner=scott 即將導出指定的用戶... . 正在導出 pre-schema 過程對象和操作 . 正在導出用戶 SCOTT 的外部函數庫名 . 導出 PUBLIC 類型同義詞 . 正在導出專用類型同義詞 . 正在導出用戶 SCOTT 的對象類型定義 即將導出 SCOTT 的對象... . 正在導出數據庫鏈接 . 正在導出序號 . 正在導出簇定義 . 即將導出 SCOTT 的表通過常規路徑... . . 正在導出表 BONUS導出了 0 . . 正在導出表 DEPT導出了 4 . . 正在導出表 EMP導出了 14 . . 正在導出表 SALGRADE導出了 5 ……. 3、exp全庫模式備份 備份完整的數據庫。業務數據庫不采用這種備份方式。註意導出用戶權限。備份命令為: C:\Documents and Settings\A4586>exp system/oraclefile=c:\exp_full.dmp log=c:\exp_full.log full=y; 即將導出整個數據庫... . 正在導出表空間定義 . 正在導出概要文件 . 正在導出用戶定義 . 正在導出角色 . 正在導出資源成本 . 正在導出回退段定義 . 正在導出數據庫鏈接 . 正在導出序號 ……. 四、imp邏輯恢復 數據導入(Import)的過程是數據導出(Export)的逆過程,分別將數據文件導入數據庫。數據庫的邏輯恢復分為表恢復、用戶恢復、完全恢復三種模式。 1、imp表模式恢復 A. 恢復表備份數據的全部內容 若從本地文件恢復scott導出的表,使用如下命令: C:\Documentsand Settings\A4586>impscott/tiger fromuser=scott touser=scott file=c:\exp_scott_emp.dmp log=c:\imp_scott_emp.log 經由常規路徑由 EXPORT:V10.02.01 創建的導出文件 已經完成 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集中的導入 導入服務器使用 AL32UTF8 字符集 (可能的字符集轉換) . 正在將 SCOTT 的對象導入到 SCOTT . . 正在導入表 "EMP"導入了 14 . . 正在導入表 "DEPT"導入了 4 即將啟用約束條件... 成功終止導入, 沒有出現警告。
B. 恢復備份數據中的指定表 若從本地文件恢復scott備份導出的表,此時必須制定所有表,使用如下命令: C:\Documents andSettings\A4586>impscott/tiger fromuser=scott touser=scotts file=c:\exp_scott_emp.dmp log=c:\imp_scott_emp.logtables=emp ignore=y; 經由常規路徑由 EXPORT:V10.02.01 創建的導出文件 已經完成 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集中的導入 導入服務器使用 AL32UTF8 字符集 (可能的字符集轉換) . 正在將 SCOTT 的對象導入到 SCOTTS . . 正在導入表 "EMP"導入了 14 即將啟用約束條件... 成功終止導入, 沒有出現警告。 2、imp用戶模式恢復 A. 恢復備份數據的全部內容 若從本地文件恢復整個用戶的所有表,使用如下命令 C:\Documents and Settings\A4586>imp scott/tigerfromuser=scott touser=scott file=c:\exp_scott.dmp log=c:\imp_scott.log; . 正在將 SCOTT 的對象導入到 SCOTTS
B. 恢復備份數據中的指定表 若從本地文件恢復該用戶的部分表,註意,這裏一定要使用ingore=y,使用如下命令: C:\Documentsand Settings\A4586>impscott/tiger fromuser=scott touser=scotts file=c:\exp_scott.dmp log=c:\imp_scott.logtables=emp ignore=y; 經由常規路徑由 EXPORT:V10.02.01 創建的導出文件 已經完成 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集中的導入 導入服務器使用 AL32UTF8 字符集 (可能的字符集轉換) . . 正在導入表 " EMP "導入了 14 成功終止導入, 沒有出現警告。 3、imp全庫模式恢復 A. 恢復備份數據的全庫全部內容 若從全庫備份文件恢復全庫,使用如下命令: C:\Documents and Settings\A4586>imp scott/tigerfile=c:\exp_full.dmp log=c:\imp_full.log full=y; 經由常規路徑由 EXPORT:V10.02.01 創建的導出文件 已經完成 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集中的導入 導入服務器使用 AL32UTF8 字符集 (可能的字符集轉換) . 正在將 SYSTEM 的對象導入到 SYSTEM …….
B. 恢復備份數據的特定用戶內容 若從全庫備份文件恢復特定用戶的對象,使用如下命令: C:\Documents and Settings\A4586>imp scott/tigerfile=c:\exp_full.dmp log=c:\imp_full_scott.log fromuser=scott touser=scott ignore=y; 經由常規路徑由 EXPORT:V10.02.01 創建的導出文件 已經完成 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集中的導入 導入服務器使用 AL32UTF8 字符集 (可能的字符集轉換) . 正在將 SCOTT 的對象導入到 SCOTTS …….
C. 恢復備份數據的特定表內容 若從全庫備份文件恢復特定表,使用如下命令: C:\Documents and Settings\A4586>imp scott/tigerfile=c:\exp_full.dmp log=c:\imp_full.log fromuser=scott touser=scott tables=empignore=y; 經由常規路徑由 EXPORT:V10.02.01 創建的導出文件 已經完成 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集中的導入 導入服務器使用 AL32UTF8 字符集 (可能的字符集轉換) . 正在將 SCOTT 的對象導入到 SCOTT . . 正在導入表 "EMP"導入了 14 即將啟用約束條件... 成功終止導入, 沒有出現警告。 五、 exp/imp增量參數INCTYPE1、exp增量備份條件 增量導出是一種常用的數據備份方法,它只能對整個數據庫來實施,並且必須使用SYSTEM賬號來導出。在進行此種導出時,系統不要求回答任何問題。導出文件名缺省為export.dmp,如果不希望自己的輸出檔定名為export.dmp,必須在命令行中指出要用的文件名。當全庫備份比較小時候,采用數據庫備份更便於恢復。 執行增量備份必須滿足下列條件: 1.只對完整數據庫備份有效,且第一次需要full=y參數,以後需要inctype=incremental參數。 2. 用戶必須有EXP_FULL_DATABASE的系統角色。 2、exp增量備份類型 增量導出包括三種類型: (1)“完全”增量導出(Complete 備份整個數據庫,腳本內容如下: C:\Documents andSettings\A4586>expsystem/oracle inctype=complete file=c:\exp_incr_full.dmplog=c:\exp_incr_full.log
(2)“增量型”增量導出(Incremental)   備份上一次備份後改變的數據,腳本內容如下: C:\Documents andSettings\A4586>expsystem/oracle inctype=incremental file=c:\exp_incr_incr.dmplog=c:\exp_incr_incr.log
(3)“累積型”增量導出(Cumulative)    備份自上次“完全”導出之後數據庫中變化了的數據。腳本內容如下: C:\Documents andSettings\A4586>expsystem/oracle inctype=cumulative file=c:\exp_incr_cum.dmplog=c:\exp_incr_cum.log  六、增量備份恢復實例1、exp增量備份恢復策略 數據庫管理員可以排定一個備份日程表,用數據導出的三個不同方式合理高效的完成。   比如數據庫的備分任務可以做如下安排:   星期一:完全導出(export_A.dmp   星期二:增量導出(export_B.dmp   星期三:增量導出(export_C.dmp   星期四:增量導出(export_D.dmp   星期五:累計導出(export_E.dmp   星期六:增量導出(export_F.dmp   星期日:增量導出(export_G.dmp
如果在星期日,數據庫遭到意外破壞,數據庫管理員可按照如下步驟恢復數據庫:   第一步:用命令CREATE DATABASE重新生成數據庫結構;   第二步:創建一個足夠大的附加回滾,供imp使用。   第三步:完全增量導入A   imp system/manager inctype=RESTORE FULL=y FILE=A   第四步:累計增量導入E   imp system/manager inctype=RESTORE FULL=Y FILE=E   第五步:最近增量導入F   imp system/manager inctype=RESTORE FULL=Y FILE=F 2、A時間點全備 C:\Documents and Settings\A4586>sqlplus sys/oracle assysdba SQL*Plus: Release 10.2.0.1.0 - Productionon 星期三 11 7 17:03:41 2012 Copyright (c) 1982, 2005, Oracle. All rights reserved. 連接到: Oracle Database 10g Enterprise EditionRelease 10.2.0.1.0 - Production With the Partitioning, OLAP and Data Miningoptions SQL>grant dba to scott; SQL> create tablespace tbs_incr datafile‘D:\oracle\product\10.2.0\oradata\xmlgis\tbs_incr.dbf‘ size 10M autoextend onnext 10M maxsize unlimited; SQL> create table scott.a (status varchar(20),weektimevarchar(20)) tablespace tbs_incr; SQL> insert into scott.a values(‘insert‘,‘A‘); SQL> commit; C:\Documents and Settings\A4586>exp scott/tigerinctype=complete file=c:\exp_incr_A.dmp log=c:\exp_incr_A.log; 日誌中發現如下: . 即將導出 SCOTT 的表通過常規路徑... . . 正在導出表 A導出了 1 3、B時間點增量備份 SQL> create table scott.b (status varchar(20),weektimevarchar(20)) tablespace tbs_incr; SQL> insert into scott.b values(‘insert‘,‘b‘); SQL> insert into scott.a values(‘insert‘,‘b‘); SQL> commit; C:\Documents and Settings\A4586>exp scott/tiger inctype=incrementalfile=c:\exp_incr_B.dmp log=c:\exp_incr_B.log; 日誌中發現如下: . 即將導出 SCOTT 的表通過常規路徑... . . 正在導出表 A導出了 2 . . 正在導出表 B導出了 1 通過以上就說明了exp增量備份的最小執行 單位是表。 4、C時間點累積備份 SQL> create table scott.c (status varchar(20),weektimevarchar(20)) tablespace tbs_incr; SQL> insert into scott.c values(‘insert‘,‘c‘); SQL> insert into scott.a values(‘insert‘,‘c‘); SQL> commit; C:\Documents and Settings\A4586>exp scott/tiger inctype=cumulativefile=c:\exp_incr_C.dmp log=c:\exp_incr_C.log;
日誌中發現如下: . 即將導出 SCOTT 的表通過常規路徑... . . 正在導出表 A導出了 3 . . 正在導出表 B導出了 1 . . 正在導出表 C導出了 1 註意,這裏的B表也被備份了,這是因為這裏做的是累積備份,相對於全庫備份的增加來進行的,因此B表也是新增的,因此被備份了。增量和累積的差異非常清晰。 5、D時間點增量備份 SQL> create table scott.d (status varchar(20),weektimevarchar(20)) tablespace tbs_incr; SQL> insert into scott.d values(‘insert‘,‘d‘); SQL> insert into scott.a values(‘insert‘,‘d‘); SQL> commit; C:\Documents and Settings\A4586>exp scott/tiger inctype=incrementalfile=c:\exp_incr_D.dmp log=c:\exp_incr_D.log; 日誌中發現如下: . 即將導出 SCOTT 的表通過常規路徑... . . 正在導出表 A導出了 4 . . 正在導出表 D導出了 1 6、E時間點增量備份 SQL> create table scott.e(status varchar(20),weektimevarchar(20)) tablespace tbs_incr; SQL> insert into scott.e values(‘insert‘,‘e‘); SQL> insert into scott.a values(‘insert‘,‘e‘); SQL> commit; SQL> col status format a10 SQL> select * from scott.a; STATUS WEEKTIME -------------------------------------------------- insert b insert A insert c insert d insert e 6、A表丟失數據恢復 假設A表數據被誤刪除後,這個時候想要恢復到A,B,C,D,E某個時間的備份如何操作呢?(變相的需求是當前數據不是我想要的,我想恢復到之前某天的數據,先刪除,在恢復!) 由於表是一個單獨備份的對象單元,因此恢復的時候只要找到備份文件,就可以恢復到想要恢復的時刻。 舉例:恢復表AC點時間的數據,恢復步驟如下: SQL> select * from scott.a; STATUS WEEKTIME -------------------------------------------------- insert b insert A insert c insert d insert e SQL> drop table scott.a; C:\Documents and Settings\A4586>imp scott/tigerfromuser=scott touser=scott file=c:\exp_incr_c.dmp log=c:\imp_incr_c.logtables=a ignore=y; 經由常規路徑由 EXPORT:V10.02.01 創建的導出文件 已經完成 ZHS16GBK 字符集和AL16UTF16 NCHAR 字符集中的導入 導入服務器使用 AL32UTF8 字符集 (可能的字符集轉換) . 正在將 SCOTT 的對象導入到 SCOTT . . 正在導入表 "A"導入了 3 成功終止導入, 沒有出現警告。 SQL> col status format a10 SQL> select * from scott.a; STATUS WEEKTIME ---------- ---------------------------------------- insert b insert A insert c
舉例:恢復A表到D點時刻數據 SQL> drop table scott.a; C:\Documents and Settings\A4586>imp scott/tigerfromuser=scott touser=scott fil=c:\exp_incr_d.dmp log=c:\imp_incr_d.logtables=a ignore=y; 經由常規路徑由 EXPORT:V10.02.01 創建的導出文件 已經完成 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集中的導入 導入服務器使用 AL32UTF8 字符集 (可能的字符集轉換) . 正在將 SCOTT 的對象導入到 SCOTT . . 正在導入表 "A"導入了 4 成功終止導入, 沒有出現警告。 SQL> col status format a10 SQL> select * from scott.a; STATUS WEEKTIME -------------------------------------------------- insert b insert A insert c insert d 7、D時間點丟失表空間恢復 假設在D時間點備份之後做了些操作後,表空間的數據文件tbs_del.dbf被誤刪除了,這個情況下的數據恢復步驟: 1:模擬破壞表空間 刪除tbs_incr.dbf數據文件,關閉數據庫重新啟動後,執行插入報錯如下: SQL> insert intoscott.a values(‘del files‘,‘e‘); insert into scott.a values(‘del files‘,‘e‘) * 1 行出現錯誤: ORA-00376: 此時無法讀取文件 7 ORA-01110: 數據文件 7:‘D:\ORACLE\PRODUCT\10.2.0\ORADATA\XMLGIS\TBS_INCR.DBF‘
2:將被損壞的表空間(或涉及到數據文件損壞的表空間)offline: SQL>connect / as sysdba SQL> COL SEGMENT_NAME FORMAT A10 SQL> select SEGMENT_NAME,SEGMENT_TYPE from dba_segmentswhere tablespace_name=‘T BS_INCR‘; SEGMENT_NA SEGMENT_TYPE ---------------------------------------------- A TABLE B TABLE C TABLE D TABLE E TABLE SQL>alter tablespace tbs_incr offline immediate; SQL>drop tablespace tbs_incr including contents;
3:恢復表空間和數據文件 SQL>create tablespace tbs_incr datafile‘D:\oracle\product\10.2.0\oradata\xmlgis\tbs_incr.dbf‘ size 10M autoextend onnext 10M maxsize unlimited; 創建表空間參數,以及數據文件的路徑和大小,可以參照以前的設置,創建表空間成功後,一一恢復屬於該表空間的各用戶對象。 然後根據想要表對應的備份進行恢復即可,步驟同6. 8、全庫恢復 進行全庫方法,建立好表空間,然後全庫導入,這裏測試用刪除SCOTT用戶的表A,來測試全庫恢復情況(A+C+D) 恢復全庫備份A C:\Documents and Settings\A4586>imp scott/tiger file=c:\exp_incr_a.dmp log=c:\imp_incr_a.loginctype=restore full=y ignore=y;
恢復累積備份C C:\Documents and Settings\A4586>imp scott/tiger file=c:\exp_incr_c.dmp log=c:\imp_incr_c.loginctype=restore full=y ignore=y; . 正在將 SCOTT 的對象導入到 SCOTT . . 正在導入表 "A"導入了 3 . . 正在導入表 "B"導入了 1 . . 正在導入表 "C"導入了 1 恢復增量備份D C:\Documents and Settings\A4586>imp scott/tiger file=c:\exp_incr_d.dmp log=c:\imp_incr_d.loginctype=restore full=y ignore=y; . 正在將 SCOTT 的對象導入到 SCOTT . . 正在導入表 "A"導入了 4 . . 正在導入表 "D"導入了 1
SQL> col status format a10 SQL> select * from scott.a; STATUS WEEKTIME -------------------------------------------------- insert b insert A insert c insert d
異常測試:刪除A表和B表,直接用C備份進行恢復,看看回復情況如何 SQL> DROP TABLE SCOTT.A; SQL> DROP TABLE SCOTT.B; 直接恢復累積備份C C:\Documents and Settings\A4586>imp scott/tiger file=c:\exp_incr_c.dmp log=c:\imp_incr_c.loginctype=restore full=y ignore=y; . 正在將 SCOTT 的對象導入到 SCOTT . . 正在導入表 "A"導入了 3 . . 正在導入表 "B"導入了 1 . . 正在導入表 "C"導入了 1 SQL> select * from scott.b; select * from scott.b * 1 行出現錯誤: ORA-00942: 表或視圖不存在 這個時候發現,B表並未導入,類似RMAN裏的不完全恢復。 七、Exp/Imp增量備份恢復總結 Export/Import支持的增量和累計備份實際上是表級的,即上一次備份之後變化的表將全表卸載,而不是變化的記錄。因此,在以OLTP應用為主的數據庫中,由於保存主要業務數據的表處於頻繁的錄入和更新之中,增量和累計卸載並不能顯著提高備份的效率。 在做整個數據庫Import時,缺省狀態下以一個Table為一個Transaction,所以如果存在一些表的數據量很大, 建議使用commit=y並且要提供一個較大的buffer值,同時建立一個臨時Rollback segment ,它的default storage參數initial next要設置大一些,並要將這個Rollback Segment Online,同時offline 其他小的rollbacksegments。確保一個Table能完整import 。因為在做import, 數據庫將自動創建索引,及完整性約束, 為了加快數據加載的速度及一次成功的概率,可以考慮在export之前首先disable所有的完整性約束, import之後在enable所有的完整性約束。而對索引,可以考慮單獨export索引。通過使用命令 "imp indexfile=……" import數據之後來單獨創建索引。 如果希望在export數據庫時,直接將產生的dmp文件寫到外設上, 你可以使用 "exp file=設備名… Volsize=設備的容量" 由於export出來的文件可能較大,而某些操作系統(如Linux)對文件大小有限制,如不能大於2G。因此可將dmp文件設置為指定大小的若幹文件。如: exp sys/managerbuffer=4096000 file=(full1.dmp,full2.dmp,full3.dmp,full4.dmp) filesize=2GFull=y inctype=complete log=full.log

數據泵增量備份