詳解oracle 12c通過數據泵expdp/impdp工具實現對數據備份、恢復
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工具實現對數據備份、恢復