传统的导入导出exp/imp

数据泵使用EXPDP和IMPDP时应该注意的事项:

1、在Linux上 创建物理目录dp_dir,存放数据库.dmp文件;

要使用数据泵必须先创建数据库目录

1.概述:

EXP和IMP是客户端工具程序,它们既可以在客户端使用,也可以在服务端使用。

用root用户登录,切换到oracle用户,用oralce身份创建物理目录如下:

       数据库目录只允许sys创建

传统的导出导入程序指的是exp/imp,用于实施数据库的逻辑备份和恢复。

EXPDP和IMPDP是服务端的工具程序,他们只能在ORACLE服务端使用,不能在客户端使用。

[root@server36 oracle]# su – oracle

       普通用户使用 必须授权

导出程序exp将数据库中对象的定义和数据备份到一个操作系统二进制文件中。

IMP只适用于EXP导出的文件,不适用于EXPDP导出文件;IMPDP只适用于EXPDP导出的文件,而不适用于EXP导出文件。

[oracle@server36 ~]$ mkdir /home/oracle/dp_dir

假设scott 用户是导出导入用户

导入程序imp读取二进制导出文件并将对象定义和数据载入数据库中

expdp或impdp命令时,可暂不指出用户名/密码@实例名
as 身份,然后根据提示再输入,如:

将数据库文件备份到 /home/oracle/dp_dir下,方法:可以用WinSCP远程登录主机后,.DMP文件拖拽到目录下,但显示该.DMP文件的所有者是root,所属组是root;故需要更换文件所属用户、所属组,如下:

      

2.

expdp schemas=scott dumpfile=expdp.dmp
DIRECTORY=dir;
环境
windows2003SP2

切换到root用户:

SQL> ! mkdir dp_dir

导出和导入数据库对象的四种模式是:

oracle11gR1
使用expdp和impdp
1.命令行打开sqlplus
sqlplus /nolog
conn / as sysdba
2.创建逻辑目录,该命令不会在操作系统创建真正的目录(最好手工先建好),最好以administrator等管理员创建。
create directory dir as ‘d:\dump’; //dir名称可以随便命名
需要手工创建d:\dump
3.查看管理理员目录(同时查看操作系统中是否存在,因为Oracle并不关心该目录是否存在,如果不存在,则出错)
select * from dba_directories;
4.给scott用户赋予在指定目录的操作权限,最好以system等管理员赋予。
grant read,write on directory dir to scott;
5、导出数据

[root@server36 /]# cd  /home/oracle/dp_dir

SQL> create directory dp_dir as ‘/home/oracle/dp_dir’;

1,数据库模式:导出和导入整个数据库中的所有对象

1)按用户导

[root@server36 dp_dir]# ls -l

Directory created.

2,表空间模式:导出和导入一个或多个指定的表空间中的所有对象,10g新增添可传输表空间。

expdpscott/tiger@orclschemas=scott dumpfile=expdp.dmp DIRECTORY=dir
logfile=expdp.log

?昏. 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文件所属用户*/

SQL> grant read,write on directory dp_dir to scott;

3,用户模式:导出和导入一个用户模式中的所有对象

2)并行进程parallel

[root@server36 dp_dir]# ls -l

 

4,表模式:导出和导入一个或多个指定的表或表分区

expdpscott/tiger@orcldirectory=dir dumpfile=scott3.dmp parallel=40
job_name=scott3

-rw-r–r– 1 oracle root       95219712 05-11 15:35
hqoatest_20150511.dmp

Grant succeeded.

实验:

3)按表名导

[root@server36 dp_dir]# chgrp oinstall hqoatest_20150511.dmp  
 /*更换.dmp文件所属用户组*/

 

1>scott表的导入导出自己的表

expdpscott/tiger@orclTABLES=emp,dept dumpfile=expdp.dmp
DIRECTORY=dir;

[root@server36 dp_dir]# ls -l

数据泵导出方法: 导出scott用户

SYS@ PROD>conn scott/tiger
Connected.
SCOTT@ PROD>create table emp1 as select * from emp;

4)按查询条件导

-rw-r–r– 1 oracle oinstall   95219712 05-11 15:35
hqoatest_20150511.dmp

       expdp     

Table created.

expdpscott/tiger@orcldirectory=dir dumpfile=expdp.dmp Tables=emp
query=’WHERE deptno=20′;

[root@server36 dp_dir]# chmod +x hqoatest_20150511.dmp  
 /*对.dmp文件添加可执行权限*/

导出案例1,按表导出

SCOTT@ PROD>create table dept1 as select * from dept;

5)按表空间导

[root@server36 dp_dir]# ls -l 

expdp scott/tiger directory= dp_dir  dumpfile=tab.dmp logfile=scott.log
tables=dept,emp

Table created.

expdp system/manager DIRECTORY=dir
DUMPFILE=tablespace.dmp TABLESPACES=temp,example;

-rwxr-xr-x 1 oracle oinstall   95219712 05-11 15:35
hqoatest_20150511.dmp

 

quit

6)导整个数据库

 

导出案例2,按用户导出

drop table dept1 purge;

expdp system/manager DIRECTORY=dir
DUMPFILE=full.dmp FULL=y;
6、还原数据

2、创建数据库逻辑目录dp_dir

expdp scott/tiger directory= dp_dir  dumpfile=dumpscott.dmp
schemas=scott

drop table emp1 purge;

1)导到指定用户下

数据库目录只允许sys创建,普通用户使用时,必须被授权,才可使用;

 

exp scott/tiger file=/home/oracle/backup/empdept1.dmp
tables=”(emp1,dept1)”;

impdpscott/tiger@orclDIRECTORY=dir DUMPFILE=expdp.dmp SCHEMAS=scott
logfile=impdp.log

假设dyl用户是导入导出用户;

导出案例3,全库导出,且并行导出

当在tables后面不加双引号时会报错:

2)改变表的owner

[root@server36 dp_dir]# su – oracle
[oracle@server36 ~]$ sqlplus / as sysdba

expdp scott/tiger directory= dp_dir  dumpfile=full.dmp parallel=4
full=y

-bash: syntax error near
unexpected token `(‘

impdp system/manager DIRECTORY=dir
DUMPFILE=expdp.dmp TABLES=scott.dept REMAP_SCHEMA=scott:system;

SQL*Plus: Release 11.2.0.3.0 Production on Mon May 11 17:34:11 2015

备份文件在/home/oracle/dp_dir/ 目录下

SQL> drop table emp1 purge;

3)导入表空间

Copyright (c) 1982, 2011, Oracle. All rights reserved.

 

SQL> drop table dept1 purge;

impdp system/manager DIRECTORY=dir
DUMPFILE=tablespace.dmp TABLESPACES=example;

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

数据泵导入方法: 导入scott用户

imp scott/tiger file=/home/oracle/backup/empdept1.dmp

4)导入数据库

SQL>select * from dba_directories;    /*查询逻辑目录*/

       Impdp  将文件拷贝到/home/oracle/dp_dir/ 目录下

查看数据验证

impdb system/manager DIRECTORY=dump_dir
DUMPFILE=full.dmp FULL=y;

SQL> create directory dp_dir as ‘/home/oracle/dp_dir’;  
 /*创建数据库逻辑目录*/

 

2>sys导出scott表

5)追加数据

Directory created.

导入案例1,按表导入,从scott到scott2

exp \’sys/system as sysdba\’ file=/home/oracle/backup/sysscott.dmp
tables=”(scott.emp1,scott.dept1)”;

impdp system/manager DIRECTORY=dir
DUMPFILE=expdp.dmp SCHEMAS=system TABLE_EXISTS_ACTION

 

impdp scott2/tiger directory=dp_dir  dumpfile=tab.dmp
tables=scott.dept,scott.emp remap_schema=scott:scott2

drop table dept1 purge;

****************************************************************************************
LINUX环境(RHEL5)
oracle10g和oracle11g
使用expdp和impdp
1.命令行打开sqlplus
sqlplus /nolog
connect system/oracle
2.创建逻辑目录,该命令不会在操作系统创建真正的目录(最后手工先建好),最好以system等管理员创建。
create directory dpdata1 as ‘/home/oracle/dump’;
3.查看管理理员目录(同时查看操作系统是否存在,因为Oracle并不关心该目录是否存在,如果不存在,则出错)
select * from dba_directories;
4.给scott用户赋予在指定目录的操作权限,最好以system等管理员赋予。
grant read,write on directory dpdata1 to scott;
5.导出数据
1)按用户导
expdpscott/tiger@orclschemas=scott dumpfile=expdp.dmp
DIRECTORY=dpdata1;
2)按表空间导
expdp system/manager DIRECTORY=dpdata1 DUMPFILE=tablespace.dmp
TABLESPACES=temp,example;
3)导整个数据库
expdp system/manager DIRECTORY=dpdata1 DUMPFILE=full.dmp FULL=y;
6.还原数据
1)导到指定用户下
impdp scott/tiger DIRECTORY=dpdata1 DUMPFILE=expdp.dmp SCHEMAS=scott;
3)导入表空间
impdp system/manager DIRECTORY=dpdata1 DUMPFILE=tablespace.dmp
TABLESPACES=example;
4)导入数据库
impdb system/manager DIRECTORY=dump_dir DUMPFILE=full.dmp FULL=y;
*************************************************************************************
expdp/impdp 不同用户,不同表空间的使用
假设a用户的默认表空间是a,导出用户a所有数据:

3、创建新用户,并对新用户附可执行.dmp文件权限

 

drop table emp1 purge;

SQL> conn / as sysdba
SQL> create directory dir as ‘/home/oracle/’;
SQL> grant read,write on directory dir to system;

SQL>create user dyl identified by 1;     /*创建新用户,密码为1*/

导入案例2,按用户导入,从scott到scott2

imp \’sys/system as sysdba\’ file=/home/oracle/backup/sysscott.dmp
fromuser=scott;

$expdp system/oracle directory=dir
dumpfile=data.dmp schemas=a logfile=data.log

User created.

impdp scott/tiger directory= dp_dir  dumpfile=schema.dmp
remap_schema=scott:scott2

3>导入导出用户

impdp
导入a用户所有数据到b,并且转换表空间a为b:

SQL> grant read,write on directory dp_dir to dyl;    
/*对用户dyl附加对目录dp_dir可读可执行的权限,用system身份附权限*/

 

exp test/test file=/home/oracle/backup/test.dmp owner=test;

SQL> conn sys / as sysdba
SQL> create directory dir as ‘/home/oracle/’;
SQL> grant read,write on directory dir to system;

Grant succeeded.

Author

发表评论

电子邮件地址不会被公开。 必填项已用*标注