你的位置:首页 > 数据库

[数据库]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;