逻辑导入导出exp/imp与数据泵expdp/impdp

Posted 路人佳

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了逻辑导入导出exp/imp与数据泵expdp/impdp相关的知识,希望对你有一定的参考价值。

传统的导入导出exp/imp

1.概述:

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

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

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

2.

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

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

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

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

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

实验:

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

[email protected] PROD>conn scott/tiger
Connected.
[email protected] PROD>create table emp1 as select * from emp;

Table created.

[email protected] PROD>create table dept1 as select * from dept;

Table created.

quit

drop table dept1 purge;

drop table emp1 purge;

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

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

-bash: syntax error near unexpected token `(‘

SQL> drop table emp1 purge;

SQL> drop table dept1 purge;

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

查看数据验证

2>sys导出scott表

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

drop table dept1 purge;

drop table emp1 purge;

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

3>导入导出用户

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

drop user test cascade;

grant connect,resource to test identified by test;

grant dba to test;

imp test/test file=/home/oracle/backup/test.dmp full=y;

如果用sys来完成也可以使用如下命令:

imp ‘sys/[email protected] as sysdba‘ file=/home/oracle/backup/scott.dmp fromuser=scott touser=scott

sys用户也可以将导出的scott的内容导入给其他用户

imp ‘sys/[email protected] as sysdba‘ file=/home/oracle/backup/scott.dmp fromuser=scott touser=tim

4>导入导出表空间


[email protected] PROD>create tablespace tb1 datafile ‘/u01/app/oracle/oradata/PROD/mytb1.dbf‘ size 5M;

scott用户下:

create table t1(year number(4),month number(2),amount number(2,1)) tablespace tb1;

insert into t1 values(1991,1,1.1);

insert into t1 values(1991,2,1.2);

insert into t1 values(1991,3,1.3);

insert into t1 values(1991,4,1.4);

commit;

alter tablespace tb1 read only;

exp \‘/ as sysdba\‘ tablespaces=tb1 transport_tablespace=y file=/home/oracle/backup/exp_tb1.dmp;

将数据文件/u01/app/oracle/oradata/PROD/mytb1.dbf和/u01/app/oracle/oradata/PROD/mytb1.dbf复制到另一台设备进行导入,这也是远程导入导出

imp userid=\‘/ as sysdba\‘ tablespaces=tb1 transport_tablespace=y file=/home/oracle/backup/exp_tb1.dmp datafiles=/u01/app/oracle/oradata/PROD/mytb1.dbf;

验证在这台设备有没有T1。

SQL>select tablespace_name,status from dba_tablespaces;

SQL>select * from scott.t1;

重设回读写方式

SQL>alter tablespace tb1 read write;

5>

什么叫自包含:

当前表空间中的对象不依赖该表空间之外的对象。

例如:有TEST表空间,里面有个表叫T1,如果在T1上建个索引叫T1_idx,而这个索引建在USERS表空间上,由于T1_idx索引是依赖T1表的,

那么,TEST表空间是自包含的,可以迁移,但会甩掉T1_idx索引,USERS表空间不是自包含的,不符合迁移条件。

检查表空间是否自包含可以使用程序包

如上面的例子

SQL> execute dbms_tts.transport_set_check(‘USERS‘);

SQL> select * from TRANSPORT_SET_VIOLATIONS;

VIOLATIONS

------------------------------------------------------------------------------------------------------------------------

ORA-39907: 索引 SCOTT.EMP1_IDX (在表空间 TEST 中) 指向表 SCOTT.EMP1 (在表空间 USERS 中)。

6>导出整个数据库

exp ‘sys/[email protected] as sysdba‘ file=/home/oracle/backup/full.dmp full=y


 

数据泵expdp/impdp

数据泵优点:

1)改进性能(较传统的exp/imp速度提高1-2个数量级)

2)重启作业能力

3)并行执行能力

4)关联运行作业能力

5)估算空间需求能力

6)操作网络方式

 

以上是关于逻辑导入导出exp/imp与数据泵expdp/impdp的主要内容,如果未能解决你的问题,请参考以下文章

oracle数据泵导入导出数据

OracleEXPDP和IMPDP数据泵进行导出导入的方法

ORACLE 数据泵导入导出数据

关于IMP EXP逻辑备份oracle

oracle(数据备份)

Oracle数据库备份详解