1. 程式人生 > >詳解oracle 12c通過數據泵expdp/impdp工具實現對數據備份、恢復

詳解oracle 12c通過數據泵expdp/impdp工具實現對數據備份、恢復

工具實現 數據庫 RoCE app eat source .com blog con

簡介

Oracle Database 10g引入了最新的數據泵(Data Dump)技術,數據泵導出導入(EXPDP和IMPDP)的作用
1.實現邏輯備份和邏輯恢復
2.數據庫用戶之間移動對象
3.數據庫之間移動對象
4.實現表空間搬移

實驗環境

系統環境:centos7.4
Oracle服務IP地址:192.168.100.99
光盤掛載目錄:/mnt/sr0
安裝相關目錄:/opt

命令步驟

一、創建測試用戶並授權

1、創建數據備份目錄

[root@oracle ~]# mkdir /opt/app/bak #註意一定要保證oracle管理用戶擁有寫入權限

2、新建directory

[oracle@oracle ~]$ sqlplus / as sysdba #使用管理員身份進行登錄

SQL> create directory dump_dir as ‘/opt/app/bak‘;     #新建目錄對象dump_dir,將目錄"/opt/app/bak"進行映射

目錄已創建。

3、創建"c##scott"測試用戶並授權

SQL> create user c##scott identified by scott123
  2  default tablespace users
  3  temporary tablespace temp
  4  quota unlimited on users;

用戶已創建。
SQL> grant connect,resource,dba to c##scott;   #授權連接、管理數據庫以及dba管理員權限

授權成功。
SQL> grant read,write on directory dump_dir to c##scott;  #授權用戶對directory目錄進行讀、寫執行權限

授權成功。

4、導入測試數據

SQL> conn c##scott/scott123   #使用"scott"用戶連接數據庫    
已連接。
SQL> @/home/oracle/test.sql   #導入數據
SQL> select table_name from user_tables;  #查看當前用戶所存在的表

TABLE_NAME
--------------------------------------------------------------------------------
BONUS
DEPT
EMP
SALGRADE

5、創建"c##jack"測試用戶

SQL> conn system/123 as sysdba  #使用管理員身份連接
已連接。
SQL> create user c##jack identified by abc123;   #創建"jack"測試用戶

用戶已創建。
SQL> grant connect,resource to c##jack;              #授權"jack"測試用戶

授權成功。
SQL> grant read,write on directory dump_dir to c##jack; 

授權成功。
SQL> grant unlimited tablespace to c##jack;     #不限制"jack"用戶磁盤配額限制

授權成功。

二、備份數據

1、導出數據

SQL> exit   #退出oracle

[oracle@Oracle ~]$ expdp c##scott/scott123 directory=dump_dir
dumpfile=scotttab.dmp tables=emp,dept #導出scott用戶下的表

解析:
directory    #指定其路徑映射的別名名稱,導出數據的路徑
dumpfile   #指定轉儲文件的名稱,默認名稱為expdat.dmp
tables           #指定表模式導出

2、查看導出的數據文件

[oracle@oracle ~]$ ls /opt/app/bak/
技術分享圖片

三、恢復"c##scott"用戶數據

1、模擬故障

[oracle@oracle ~]$ sqlplus c##scott/scott123 #使用"scott"用戶登錄

SQL> drop table emp;     #模擬故障刪除其中一張表

表已刪除。

2、恢復數據

SQL> exit   #退出oracle

[oracle@oracle ~]$ impdp c##scott/scott123 directory=dump_dir dumpfile=scotttab.dmp tables=emp #恢復emp表及其數據

[oracle@oracle ~]$ sqlplus c##scott/scott123 #登錄"scott"用戶

SQL> select table_name from user_tables; 

技術分享圖片

四、恢復"c##jack"用戶數據(數據遷移)

1、查看用戶數據信息

[oracle@oracle ~]$ sqlplus c##jack/abc123 #登錄"scott"用戶

SQL> select table_name from user_tables;         #"scott"用戶下並數據

未選定行
SQL> exit   #退出oracle

2、導入數據

[oracle@oracle ~]$ impdp system/123 directory=dump_dir dumpfile=scotttab.dmp tables=c##scott.dept,c##scott.emp remap_schema=c##scott:c##jack; #將"scott"用戶中的"dept","emp"表導入到"jack"用戶中

3、再次查看用戶數據信息

[oracle@oracle ~]$ sqlplus c##jack/abc123

SQL> select table_name from user_tables; 

技術分享圖片

五、其他方式備份與恢復

1、指定用戶模式

[oracle@oracle ~]$ expdp c##scott/scott123 directory=dump_dir dumpfile=scottschema.dmp schemas=c##scott #導出c##scott用戶模式

[oracle@oracle ~]$ impdp c##scott/scott123 directory=dump_dir dumpfile=scottschema.dmp schemas=c##scott #導入c##scott用戶模式

2、指定用戶導入所有對象

[oracle@oracle ~]$ impdp system/123 directory=dump_dir dumpfile=scottschema.dmp schemas=c##scott remap_schema=c##scott:c##jack;
#將c##scott中所有對象導入c##jack中

3、備份、恢復表空間

[oracle@oracle ~]$ expdp system/123 directory=dump_dir dumpfile=tablespaceusers.dmp tablespaces=users #導出users表空間

[oracle@oracle ~]$ impdp system/123 directory=dump_dir dumpfile=tablespaceusers.dmp tablespaces=users #導入users表空間

4、備份、恢復整個庫

[oracle@oracle ~]$ expdp system/123 directory=dump_dir dumpfile=full.dmp full=y #導出整個數據庫

[oracle@oracle ~]$ impdp system/123 directory=dump_dir dumpfile=full.dmp full=y #導入整個數據庫

詳解oracle 12c通過數據泵expdp/impdp工具實現對數據備份、恢復