OracleDatabase——資料庫表空間dmp匯出與匯入

東北小狐狸發表於2023-03-08

由於公司的程式一直部署在客戶現場內網,內網除錯難度高,一般是有備份還原資料庫的需求,這裡簡記備份(匯出)資料庫dmp檔案與恢復(匯入)的步驟。

一、匯出dmp檔案

exp與expdp命令異同

相同點:exp與expdp命令都是備份資料庫的。

不同點

1、expdp效率更高,exp是序列備份的,但expdp是並行備份的。

2、二者匯出機制不同,exp匯出的是文字型,expdp匯出的是二進位制,所以expdp匯出的dmp檔案是要小於exp匯出的。

3、二者匯出的dmp需要對應不同的匯入命令,exp對應imp,expdp對應impdp。

4、exp不需要指定邏輯目錄物件(directory),而expdp需要指定。

5、exp/imp可在客戶端執行,而expdp/impdp只能在服務端執行。

6、oracle11g後exp不匯出空表,expdp可以。

exp匯出指定使用者(表、檢視、儲存過程、同義詞)到dmp檔案

一般適用於單個使用者只有一個表空間的情況

exp 使用者名稱/密碼@127.0.0.1:1521/ORCLCDB 
    file=備份檔案.dmp 
    log=操作日誌.log

expdp匯出指定使用者(表、檢視、儲存過程、同義詞)到dmp檔案

#建立備份目錄
mkdir -p /tmp/dbbackup
#登入sqlplus,建立邏輯目錄DB_BACKUP,對映物理目錄/tmp/dbbackup
create or replace directory DB_BACKUP as '/tmp/dbbackup';
#為備份的使用者授權邏輯目錄讀寫許可權
grant read,write on directory DB_BACKUP to 備份的使用者名稱;
#匯出備份檔案到/tmp/dbbackup下
expdp 使用者名稱/密碼@127.0.0.1:1521/orclcdb 
    directory=DB_BACKUP
    dumpfile=備份檔案.dmp
    schemas=使用者名稱
    logfile=操作日誌.log
    cluster=N
    exclude=grant
    exclude=STATISTICS
    compression=ALL

二、匯入dmp檔案

確定dmp檔案是用exp與是expdp匯出的

由於exp與expdp匯出的檔案都是dmp,而這兩者匯出的dmp格式不同,匯入命令也不同(exp匯出的用imp匯入,expdp匯出的用impdp匯入),需要進行區分,以下是簡單區分的辦法:

#如果顯示以TEXPORT開頭,則是EXP匯出的;如果是亂碼則是expdp匯出的。
head -n 1 備份檔案.dmp

同表空間不同使用者恢復表空間命令

exp匯出dmp使用imp恢復,方法如下:

imp 目標使用者名稱/密碼@127.0.0.1:1521/ORCLCDB 
	fromuser=源使用者名稱 touser=目標使用者名稱 
	file=備份檔案.dmp 
	log=操作日誌.log 
	ignore=y

expdb匯出dmp使用impdp恢復,方法如下:

impdp 目標庫使用者名稱/密碼@127.0.0.1:1521/ORCLCDB 
    remap_schema=源使用者名稱:目標使用者名稱
    directory=dmp檔案所在的目錄
    dumpfile=備份庫檔名.dmp
    logfile=操作日誌.log

不同表空間不同使用者恢復表空間命令

exp匯出dmp使用imp恢復,方法如下:

#全域性替換dmp檔案中表空間名,減少匯出時需transport_tablespace的麻煩
sed -i "s/源表空間名/目標表空間名/g" 備份庫檔名.dmp
#匯入
imp 目標使用者名稱/密碼@127.0.0.1:1521/ORCLCDB 
	fromuser=源使用者名稱 touser=目標使用者名稱 
	file=備份檔案.dmp 
	log=操作日誌.log 
	ignore=y

expdb匯出dmp使用impdp恢復,方法如下:

#建立備份目錄
mkdir -p /tmp/dbbackup
#登入sqlplus,建立邏輯目錄DB_BACKUP,對映物理目錄/tmp/dbbackup
create or replace directory DB_BACKUP as '/tmp/dbbackup';
#為備份的使用者授權邏輯目錄讀寫許可權
grant read,write on directory DB_BACKUP to 備份的使用者名稱;
#匯入
impdp 目標庫使用者名稱/密碼@127.0.0.1:1521/ORCLCDB 
    remap_tablespace=源表空間:目標表空間
    remap_schema=源使用者名稱:目標使用者名稱
    directory=DB_BACKUP
    dumpfile=備份庫檔名.dmp
    logfile=操作日誌.log

相關文章