使用數據泵技術實現邏輯備份 數據泵概述 數據泵(DATA PUMP)是一種在資料庫之間、資料庫與操作系統之間,高速傳輸數據的技術(10g推出)。 邏輯備份概述 邏輯備份是對資料庫對象(如用戶、表、存儲過程等)利用EXPORT等工具進行導出 物理備份對比 物理備份是轉儲ORACLE物理文件(如數據文件 ...
使用數據泵技術實現邏輯備份
數據泵概述
數據泵(DATA PUMP)是一種在資料庫之間、資料庫與操作系統之間,高速傳輸數據的技術(10g推出)。
邏輯備份概述
邏輯備份是對資料庫對象(如用戶、表、存儲過程等)利用EXPORT等工具進行導出
物理備份對比
物理備份是轉儲ORACLE物理文件(如數據文件、控制文件、歸檔日誌文件等)
物理備份旨在完全恢復整個資料庫,要求完全相同的備份環境和恢復環境
邏輯備份旨在備份數據本身,可移植性強,但是備份和恢復速度低下,大型業務系統一般不用
操作步驟
1.創建目錄對象(在哪導入,導出到哪)
CREATE DIRECTORY 目錄名(dump_dir) as '絕對路徑';
2.dump_dir目錄授予
GRANT read,write on directory 目錄名 to 導入導出用戶;
SELECT * FROM DBA_DIRECTORIES; 查詢所有已創建的目錄
DROP directory 目錄名; 刪除目錄
3.expdq導出(EXPDP和IMPDP是Oracle服務端的工具,退出sqlplus)
第一種:全量導出資料庫:
expdp 用戶名/密碼@orcl dumpfile=導出文件名.dmp directory=目錄名 full=y logfile=日誌名.log;(與dmp一個目錄)
第二種:按用戶導出:
expdp 用戶名/密碼@orcl schemas=用戶 dumpfile=導出文件名.dmp directory=目錄名 logfile=日誌名.log;
第三種:按表空間導出:
expdp 用戶名/密碼@orcl tablespace=表空間名 dumpfile=導出文件名.dmp directory=目錄名 logfile=日誌名.log;
第四種:按表導出:
expdp 用戶名/密碼@orcl tables=表名 dumpfile=導出文件名.dmp directory=目錄名 logfile=日誌名.log;
導出表結構
expdp 用戶名/密碼@orcl directory=目錄名 dumpfile=導出文件名.dmp content=metadata_only tables=(a,b)
metadata_only代表只導出表結構
第五種:按查詢條件導:
expdp 用戶名/密碼@orcl tables=表名='where 條件=值' dumpfile=導出文件名.dmp directory=目錄名 logfile=日誌名.log;
4.impdq(退出sqlplus)
第一種:全量導入資料庫;
impdp 用戶名/密碼 directory=data_dir dumpfile=expdp.dmp full=y;
第二種:按名用戶導入,從源用戶名1導入到目標用戶名2;
impdp 用戶名/密碼 REMAP_SCHEMA=[源用戶名1]:[目標用戶名2] directory=data_dir dumpfile=expdp.dmp logfile=impdp.log;
第三種:
a.從A用戶中把表table1和table2導入到B用戶中;
impdp 用戶名/密碼 tables=A.table1,A.table2 REMAP_SCHEMA=A:B directory=data_dir dumpfile=expdp.dmp logfile=impdp.log;
b.將表空間TBS01、TBS02、TBS03導入到表空間A_TBS,將用戶B的數據導入到A,並生成新的oid防止衝突;
impdp 用戶名/密碼 remap_tablespace=TBS01:A_TBS,TBS02:A_TBS,TBS03:A_TBS REMAP_SCHEMA=B:A FULL=Y transform=oid:n directory=data_dir dumpfile=expdp.dmp logfile=impdp.log
c.導入表結構
第四種:導入表空間;
impdp 用戶名/密碼 tablespaces=tbs1 directory=data_dir dumpfile=expdp.dmp logfile=impdp.log;
第五種:追加數據;
impdp 用戶名/密碼 directory=data_dir dumpfile=expdp.dmp schemas=system table_exists_action=replace logfile=impdp.log;
--table_exists_action:導入對象已存在時執行的操作。有效關鍵字:SKIP,APPEND,REPLACE和TRUNCATE
5.參數
1.expdb
ATTACH 連接到現有作業, 例如 ATTACH [=作業名]。
COMPRESSION 減小轉儲文件內容的大小, 其中有效關鍵字 值為: ALL, (METADATA_ONLY), DATA_ONLY 和 NONE。
CONTENT 指定要卸載的數據, 其中有效關鍵字 值為: (ALL), DATA_ONLY 和 METADATA_ONLY。
DATA_OPTIONS 數據層標記, 其中唯一有效的值為: 使用CLOB格式的 XML_CLOBS-write XML 數據類型。
DIRECTORY 供轉儲文件和日誌文件使用的目錄對象,即邏輯目錄。
DUMPFILE 目標轉儲文件 (expdp.dmp) 的列表,例如 DUMPFILE=expdp1.dmp, expdp2.dmp。
ENCRYPTION 加密部分或全部轉儲文件, 其中有效關鍵字值為: ALL, DATA_ONLY, METADATA_ONLY,ENCRYPTED_COLUMNS_ONLY 或 NONE。
ENCRYPTION_ALGORITHM 指定應如何完成加密, 其中有效關鍵字值為: (AES128), AES192 和 AES256。
ENCRYPTION_MODE 生成加密密鑰的方法, 其中有效關鍵字值為: DUAL, PASSWORD 和 (TRANSPARENT)。
ENCRYPTION_PASSWORD 用於創建加密列數據的口令關鍵字。
ESTIMATE 計算作業估計值, 其中有效關鍵字值為: (BLOCKS) 和 STATISTICS。
ESTIMATE_ONLY 在不執行導出的情況下計算作業估計值。
EXCLUDE 排除特定的對象類型, 例如 EXCLUDE=TABLE:EMP。例:EXCLUDE=[object_type]:[name_clause],[object_type]:[name_clause] 。
FILESIZE 以位元組為單位指定每個轉儲文件的大小。
FLASHBACK_SCN 用於將會話快照設置回以前狀態的 SCN。 -- 指定導出特定SCN時刻的表數據。
FLASHBACK_TIME 用於獲取最接近指定時間的 SCN 的時間。-- 定導出特定時間點的表數據,註意FLASHBACK_SCN和FLASHBACK_TIME不能同時使用。
FULL 導出整個資料庫 (N)。
HELP 顯示幫助消息 (N)。
INCLUDE 包括特定的對象類型, 例如 INCLUDE=TABLE_DATA。
JOB_NAME 要創建的導出作業的名稱。
LOGFILE 日誌文件名 (export.log)。
NETWORK_LINK 鏈接到源系統的遠程資料庫的名稱。
NOLOGFILE 不寫入日誌文件 (N)。
PARALLEL 更改當前作業的活動 worker 的數目。
PARFILE 指定參數文件。
QUERY 用於導出表的子集的謂詞子句。--QUERY = [schema.][table_name:] query_clause。
REMAP_DATA 指定數據轉換函數,例如 REMAP_DATA=EMP.EMPNO:REMAPPKG.EMPNO。
REUSE_DUMPFILES 覆蓋目標轉儲文件 (如果文件存在) (N)。
SAMPLE 要導出的數據的百分比。
SCHEMAS 要導出的方案的列表 (登錄方案)。
STATUS 在預設值 (0) 將顯示可用時的新狀態的情況下,要監視的頻率 (以秒計) 作業狀態。
TABLES 標識要導出的表的列表 - 只有一個方案。--[schema_name.]table_name[:partition_name][,…]
TABLESPACES 標識要導出的表空間的列表。
TRANSPORTABLE 指定是否可以使用可傳輸方法, 其中有效關鍵字值為: ALWAYS, (NEVER)。
TRANSPORT_FULL_CHECK 驗證所有表的存儲段 (N)。
TRANSPORT_TABLESPACES 要從中卸載元數據的表空間的列表。
VERSION 要導出的對象的版本, 其中有效關鍵字為:(COMPATIBLE), LATEST 或任何有效的資料庫版本。
ADD_FILE 向轉儲文件集中添加轉儲文件。
CONTINUE_CLIENT 返回到記錄模式。如果處於空閑狀態, 將重新啟動作業。
EXIT_CLIENT 退出客戶機會話並使作業處於運行狀態。
FILESIZE 後續 ADD_FILE 命令的預設文件大小 (位元組)。
HELP 總結交互命令。
KILL_JOB 分離和刪除作業。
PARALLEL 更改當前作業的活動 worker 的數目。PARALLEL=<worker 的數目>。
_DUMPFILES 覆蓋目標轉儲文件 (如果文件存在) (N)。
START_JOB 啟動/恢復當前作業。
STATUS 在預設值 (0) 將顯示可用時的新狀態的情況下,要監視的頻率 (以秒計) 作業狀態。STATUS[=interval]。
STOP_JOB 順序關閉執行的作業並退出客戶機。STOP_JOB=IMMEDIATE 將立即關閉數據泵作業。
2.impdq
ATTACH 連接到現有作業, 例如 ATTACH [=作業名]。
CONTENT 指定要卸載的數據, 其中有效關鍵字 值為: (ALL), DATA_ONLY 和 METADATA_ONLY。
DATA_OPTIONS 數據層標記,其中唯一有效的值為:SKIP_CONSTRAINT_ERRORS-約束條件錯誤不嚴重。
DIRECTORY 供轉儲文件,日誌文件和sql文件使用的目錄對象,即邏輯目錄。
DUMPFILE 要從(expdp.dmp)中導入的轉儲文件的列表,例如 DUMPFILE=expdp1.dmp, expdp2.dmp。
ENCRYPTION_PASSWORD 用於訪問加密列數據的口令關鍵字。此參數對網路導入作業無效。
ESTIMATE 計算作業估計值, 其中有效關鍵字為:(BLOCKS)和STATISTICS。
EXCLUDE 排除特定的對象類型, 例如 EXCLUDE=TABLE:EMP。
FLASHBACK_SCN 用於將會話快照設置回以前狀態的 SCN。
FLASHBACK_TIME 用於獲取最接近指定時間的 SCN 的時間。
FULL 從源導入全部對象(Y)。
HELP 顯示幫助消息(N)。
INCLUDE 包括特定的對象類型, 例如 INCLUDE=TABLE_DATA。
JOB_NAME 要創建的導入作業的名稱。
LOGFILE 日誌文件名(import.log)。
NETWORK_LINK 鏈接到源系統的遠程資料庫的名稱。
NOLOGFILE 不寫入日誌文件。
PARALLEL 更改當前作業的活動worker的數目。
PARFILE 指定參數文件。
PARTITION_OPTIONS 指定應如何轉換分區,其中有效關鍵字為:DEPARTITION,MERGE和(NONE)。
QUERY 用於導入表的子集的謂詞子句。
REMAP_DATA 指定數據轉換函數,例如REMAP_DATA=EMP.EMPNO:REMAPPKG.EMPNO。
REMAP_DATAFILE 在所有DDL語句中重新定義數據文件引用。
REMAP_SCHEMA 將一個方案中的對象載入到另一個方案。
REMAP_TABLE 表名重新映射到另一個表,例如 REMAP_TABLE=EMP.EMPNO:REMAPPKG.EMPNO。
REMAP_TABLESPACE 將表空間對象重新映射到另一個表空間。
REUSE_DATAFILES 如果表空間已存在, 則將其初始化 (N)。
SCHEMAS 要導入的方案的列表。
SKIP_UNUSABLE_INDEXES 跳過設置為無用索引狀態的索引。
SQLFILE 將所有的 SQL DDL 寫入指定的文件。
STATUS 在預設值(0)將顯示可用時的新狀態的情況下,要監視的頻率(以秒計)作業狀態。
STREAMS_CONFIGURATION 啟用流元數據的載入。
TABLE_EXISTS_ACTION 導入對象已存在時執行的操作。有效關鍵字:(SKIP),APPEND,REPLACE和TRUNCATE。
TABLES 標識要導入的表的列表。
TABLESPACES 標識要導入的表空間的列表。
TRANSFORM 要應用於適用對象的元數據轉換。有效轉換關鍵字為:SEGMENT_ATTRIBUTES,STORAGE,OID和PCTSPACE。
TRANSPORTABLE 用於選擇可傳輸數據移動的選項。有效關鍵字為: ALWAYS 和 (NEVER)。僅在 NETWORK_LINK 模式導入操作中有效。
TRANSPORT_DATAFILES 按可傳輸模式導入的數據文件的列表。
TRANSPORT_FULL_CHECK 驗證所有表的存儲段 (N)。
TRANSPORT_TABLESPACES 要從中載入元數據的表空間的列表。僅在 NETWORK_LINK 模式導入操作中有效。
VERSION 要導出的對象的版本, 其中有效關鍵字為:(COMPATIBLE), LATEST 或任何有效的資料庫版本。僅對 NETWORK_LINK 和 SQLFILE 有效。
CONTINUE_CLIENT 返回到記錄模式。如果處於空閑狀態, 將重新啟動作業。
EXIT_CLIENT 退出客戶機會話並使作業處於運行狀態。
HELP 總結交互命令。
KILL_JOB 分離和刪除作業。
PARALLEL 更改當前作業的活動 worker 的數目。PARALLEL=<worker 的數目>。
START_JOB 啟動/恢復當前作業。START_JOB=SKIP_CURRENT 在開始作業之前將跳過作業停止時執行的任意操作。
STATUS 在預設值 (0) 將顯示可用時的新狀態的情況下,要監視的頻率 (以秒計) 作業狀態。STATUS[=interval]。
STOP_JOB 順序關閉執行的作業並退出客戶機。STOP_JOB=IMMEDIATE 將立即關閉數據泵作業。