Oracle數據庫備份與還原有兩套語句:exm/imp 和expdp/impdp
1. 使用expdp,impdp命令
準備:
1.創建邏輯目錄:
查看所有目錄:select * from dba_directories;
創建數據泵目錄:create or replace direcory dp_dir as 'D:\oradata\orcl';
創建一個dbp權限的數據泵用戶: grant dba to dp identified by dp;
用戶授權數據泵讀寫權限:grant read,write on directory data to dp
數據庫備份:建邏輯目錄,給用戶授予讀寫權限
備份: expdp dp/123456@orcl directory=dp_dir dumpfile=student.dmp logfile=student.log schemas =STU
數據庫還原: 將還原文件放到數據泵目錄裏: 創建和備份數據庫相同的用戶,創建表空間,爲用戶指定表空間:
還原: impdp dp/123456@orcl directory=dp_dir dumpfile=student.dmp logfile=student.log schemas = STU
常見幾種導出:
--按用戶導出表
expdp dp/123456@orcl directory=dp_dir dumpfile=student.dmp schemas=STU
--按表名導出表
expdp scott/tiger@orcl directory=dp_dir dumpfile=expdp.dmp tables=emp,dept ;
--按查詢條件導出表
expdp scott/tiger@orcl directory=dp_dir dumpfile=expdp.dmp tables=emp query=‘WHERE deptno=20‘;
--按表空間導出表
expdp system/manager directory=dp_dir dumpfile=tablespace.dmp tablespaces=temp,example;
--導整個數據庫
expdp system/manager directory=dp_dir dumpfile=full.dmp full=y;
常見幾種導入:
--按用戶導入
impdp dp/123456@orcl directory=dp_dir dumpfile=student.dmp schemas=STU
--按表空間導入
impdp system/manager direcotry=dp_dir dumpfile=tablespace.dmp tablespaces=example;
--導入數據庫
impdp system/manager directory=dp_dir dumpfile=full.dmp full=y;
--追加數據
impdp system/manager directory=dp_dir dumpfile=expdp.dmp schemas=system TABLE_EXISTS_ACTION
--改變表的owner
impdp system/manager directory=dp_dir dumpfile=expdp.dmp tables=scott.dept REMAP_SCHEMA=scott:system;
注:
12c推出了可插拔數據庫,在一個容器cdb中以多租戶的形式同時存在多個數據庫pdb。在爲pdb做數據泵導入導出時和傳統的數據庫有少許不同。
2,導入導出時需要在userid參數內指定其tansnames的值 比如 userid=user/pwd@tnsname
設置tnsnames.ora,增加pdborocl。SERVICE_NAME爲pdb的實例名,這裏爲pdborcl
位置:oracle\product\12.2.0\dbhome_1\network\admin
orclpdb =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = xqzt)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME =orclpdb)
)
)