Linux操作系統上用數據泵導庫


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=導出的表空間名稱:要導入的表空間名稱

 

例如:

[oracle@server36 ~]$ impdp system/oracle@XXX.XXX.XX.XXX/service_name directory=dp_dir remap_schema= EFMIS_23_YANSHI:efmis_23_20150511 dumpfile=EFMIS_23_YANSHI_201505110900.dmp

remap_schema=導出的用戶:預備導入的用戶

service_name:一般是orcl,可查詢:select instance_name from v$instance;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM