Oracle-EXP
使用数据泵技术实现逻辑备份
逻辑备份概述
逻辑备份时创建数据库对象的逻辑副本,并存入一个二进制转储文件的过程。从本质上来讲逻辑备份与恢复实际就是对数据库事实数据的导入和导出。
导出
导出就是数据库的逻辑备份,实质是读取一个数据库记录并将这个记录集写入一个文件(扩展名通常是dmp),这些记录的导出与物理位置无关
导入
导入即数据库的逻辑恢复,实质是读取被导出的二进制转储文件并将其恢复到数据库。
使用数据泵技术导入/导出
数据泵(DATA PUMP)是一种在数据库之间或在数据库与操作系统之间高速传输数据的技术。数据泵工具运行在服务器上,数据库管理员需要指定数据库目录来保存转储的数据。
数据棒导入导出案例前期操作
创建一个操作用户
create user scott identified by scott account unlock;
alter user scott default tablespace test_tbs;
alter user scott quota unlimited on test_tbs;
grant resource,connect to scott;
创建一个操作目录
create directory dump_dir as '/backup/expdp';

授予用户操作dump_dir目录的权限
grant read,write on directory dump_dir to scott;
如果有exp_full_database权限,能导出整个数据库的数据;

使用EXPDP命令导出数据(可以按照表导出,按照用户模式导出,按照表空间导出和全库导出),使用IMPDP命令导入数据(可以按照表导入,按照用户模式导入,按照表空间导出和全库导入)。
使用基于命令行的数据泵技术对数据库实施导入和导出。
col DIRECTORY_NAME for a20
col DIRECTOR_PATH for a60
col OWNER for a8
select * from dba_directories;

创建测试用户tom并授权
create user tom identified by oracle;
grant connect,resource to tom;
grant read,write on directory dump_dir to tom;
alter user tom default tablespace test_tbs;
alter user tom quota unlimited on test_tbs;
表导入导出案例
导出SCOTT用户下的tscott_test表
注:SCOTT要导出什么表需要有这张表的权限
oracle$ expdp scott/scott directory=dump_dir dumpfile=scott_test1.dump tables=scott_test;

以SCOTT用户连接,删除SCOTT用户下的scott_test表

导入scott_test表
impdp scott/scott directory=dump_dir dumpfile=scott_test1.dump tables=scott_test

scott_test表已经导入成功了。

将导出的SCOTT用户下的scott_test表导入到tom用户下
impdp system/oracle directory=dump_dir dumpfile=scott_test1.dump tables=scott.scott_test REMAP_SCHEMA=SCOTT:TOM

查看导入的结果,使用tom用户连接

表空间导入导出案例
创建表空间
create tablespace exptest_tbs datafile '+ORCL/orcl/datafile/exptest_tbs.dbf' size 100M autoextend on;

在exptest_tbs表空间上创建一个表aa,并为表插入记录

导出表空间
expdp system/oracle directory=dump_dir dumpfile=exptest_tbs.dmp tablespaces=exptest_tbs

删除表空间xx的同时删除数据文件
drop tablespace exptest_tbs including contents and datafiles;

aa表没有了。

导入表空间
导入表空间之前,需要创建一个表空间
create tablespace exptest_tbs datafile '+ORCL/orcl/datafile/exptest_tbs.dbf' size 100M autoextend on;

导入表空间 exptest_tbs
impdp system/oracle directory=dump_dir dumpfile=exptest_tbs.dmp tablespaces=exptest_tbs

验证,aa表恢复回来了。

全库导入导出案例
导出全库
expdp system/oracle directory=dump_dir dumpfile=full.dmp full=y

导入全库
impdp system/oracle directory=dump_dir dumpfile=full.dmp full=y

注意:如果你导入的数据与导入的库之间的版本有问题,请将原版本数据库的版本号不同
impdp system/oracle DIRECTORY= dump_dir DUMPFILE= expdp20191231.dmp SCHEMAS= school,iddbuser TABLE_EXISTS_ACTION=replace version=10.2.0.5.0
上面是列子:源数据的版本为10.2.0.5.0 导入库的版本为12.0.2.0 就需要将version版本号写出来