1、在Linux上 創建物理目錄dp_dir,存放數據庫.dmp文件;
用root用戶登錄,切換到oracle用戶,用oralce身份創建物理目錄如下:
[root@server36 oracle]# su - oracle
[oracle@server36 ~]$ mkdir /home/oracle/dp_dir
將數據庫文件備份到 /home/oracle/dp_dir下,方法:可以用WinSCP遠程登錄主機後,.DMP文件拖拽到目錄下,但顯示該.DMP文件的所有者是root,所屬組是root;故需要更換文件所屬用戶、所屬組,如下:
切換到root用戶:
[root@server36 /]# cd /home/oracle/dp_dir
[root@server36 dp_dir]# ls -l
?昏. 2489816
-rw-r--r-- 1 oracle oinstall 28352512 05-08 09:33 EFMIS_23_YANSHI_201505080906.dmp
-rwxr-xr-x 1 oracle oinstall 29253632 05-11 09:06 EFMIS_23_YANSHI_201505110900.dmp
-rw-r--r-- 1 root root 95219712 05-11 15:35 hqoatest_20150511.dmp
-rw-r--r-- 1 oracle oinstall 436692 05-08 09:58 imp_EFMIS_23_YANSHI_201505080906.log
-rw-r--r-- 1 oracle oinstall 107675 05-08 09:45 imp_EFMIS_ZY_201505080910.log
-rw-r--r-- 1 oracle oinstall 464659 05-11 17:17 import.log
[root@server36 dp_dir]# chown oracle hqoatest_20150511.dmp /*更換.dmp文件所屬用戶*/
[root@server36 dp_dir]# ls -l
-rw-r--r-- 1 oracle root 95219712 05-11 15:35 hqoatest_20150511.dmp
[root@server36 dp_dir]# chgrp oinstall hqoatest_20150511.dmp /*更換.dmp文件所屬用戶組*/
[root@server36 dp_dir]# ls -l
-rw-r--r-- 1 oracle oinstall 95219712 05-11 15:35 hqoatest_20150511.dmp
[root@server36 dp_dir]# chmod +x hqoatest_20150511.dmp /*對.dmp文件添加可執行權限*/
[root@server36 dp_dir]# ls -l
-rwxr-xr-x 1 oracle oinstall 95219712 05-11 15:35 hqoatest_20150511.dmp
2、創建數據庫邏輯目錄dp_dir
數據庫目錄只允許sys創建,普通用戶使用時,必須被授權,才可使用;
假設dyl用戶是導入導出用戶;
[root@server36 dp_dir]# su - oracle
[oracle@server36 ~]$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.3.0 Production on Mon May 11 17:34:11 2015
Copyright (c) 1982, 2011, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL>select * from dba_directories; /*查詢邏輯目錄*/
SQL> create directory dp_dir as '/home/oracle/dp_dir'; /*創建數據庫邏輯目錄*/
Directory created.
3、創建新用戶,並對新用戶附可執行.dmp文件權限;
SQL>create user dyl identified by 1; /*創建新用戶,密碼為1*/
User created.
SQL> grant read,write on directory dp_dir to dyl; /*對用戶dyl附加對目錄dp_dir可讀可執行的權限,用system身份附權限*/
Grant succeeded.
4、數據泵導出數據
1)按用戶導
expdp system/manager schemas=scott DIRECTORY=dpdata dumpfile=expdp.dmp ;
2)並行進程parallel
expdp system/manager directory=dpdata dumpfile=scott3.dmp parallel=40 job_name=scott3
3)按表名導
expdp system/manager TABLES=emp,dept directory=dpdata dumpfile=expdp.dmp;
4)按查詢條件導
expdp system/manager directory=dpdata dumpfile=expdp.dmp Tables=emp query='WHERE deptno=20';
5)按表空間導
expdp system/manager DIRECTORY=dpdata DUMPFILE=tablespace.dmp TABLESPACES=temp,example;
6)導整個數據庫
expdp system/manager DIRECTORY=dpdata DUMPFILE=full.dmp FULL=y;
5、還原數據
1)導到指定用戶下
impdp system/manager DIRECTORY=dpdata DUMPFILE=expdp.dmp SCHEMAS=scott;
2)改變表的owner
impdp system/manager DIRECTORY=dpdata DUMPFILE=expdp.dmp TABLES=scott.dept REMAP_SCHEMA=scott:system;
3)導入表空間
impdp system/manager DIRECTORY=dpdata DUMPFILE=tablespace.dmp TABLESPACES=example;
4)導入數據庫
impdb system/manager DIRECTORY=dpdata DUMPFILE=full.dmp FULL=y;
5)追加數據
impdp system/manager DIRECTORY=dpdata DUMPFILE=expdp.dmp SCHEMAS=system TABLE_EXISTS_ACTION=append;
6)並行命令
從oss_scap_83(db_link名)導出scap用戶,然後導入到本地數據庫上scap用戶上
impdp system/oracle NETWORK_LINK=oss_scap_83 directory=dpdata SCHEMAS=scap job_name=expdmp parallel=4
附:
不同用戶不同表空間下的導入操作:
impdp 用戶名/密碼 directory='您創建的目錄的名稱' dumpfile='導出的文件名稱'
remap_schema=導出的用戶名稱:要導入的用戶名稱 remap_tablespace=導出的表空間名稱:要導入的表空間名稱
例如: