LLL的数据库培训—第二部分—Oracle基础知识培训—第9讲—Oracle11g的逻辑备份—impdp与expdp参数讲解
一、关于数据泵的解释
1、数据库备份种类模式:逻辑备份和物理备份
(1)逻辑备份工具:
exp/imp、expdp/impdp
(2)物理备份工具:
热备(rman)、冷备(cp-关闭数据库拷贝)
2、什么是数据泵?
数据泵是oracle数据备份的一种,可以将数据库的数据以逻辑结构导出做备份或迁移。oracle 10g后才被引入,称为data dump技术,工具是expdp和impdp。
3、为什么要引入数据泵?与exp/imp区别
在10g之前,常用的导入/导出软件是exp/imp,但是它有一些缺点。
(1)exp/imp的缺点
最大的缺点就是速度慢、效率低。当这种方式用于企业级的项目中的时候,缺点就暴露出来了。
(2)数据泵导入导出与传统导入导出的区别
--EXP和IMP是客户端工具程序,它们既可以在可以客户端使用,也可以在服务端使用。
--EXPDP和IMPDP是服务端的工具程序,他们只能在ORACLE服务端使用,不能在客户端使用。
--IMP只适用于EXP导出文件,不适用于EXPDP导出文件;IMPDP只适用于EXPDP导出文件,而不适用于EXP导出文件。
--expdp/impdp方式导入导出速度快
--expdp/impdp可以跨平台执行(如从linux导出,导入到windows等)
--当数据库在read-only状态时,exp可以导出,expdp无法直接导出表(需要向数据库写入参数,但是可以通过借助其他open模式的库,先写入此库,再导出)
(3)exp/imp与expdp/impdp耗时对比
4、数据泵导出4中方式:
(1)全库
(2)用户
(3)可传输表空间
(4)表
二、expdp数据导出准备
请自行修改目录路径和自定义的表名,否则出现错误很难查找~
1、一般expdp流程图:
2、新建逻辑目录:
最好以sys或system等管理员创建逻辑目录,登录后sql执行:
create directory backup_PRD as '/backup/expdp';
3、创建物理目录:
[root@yczbora~]# mkdir -p /backup/expdp [root@yczbora~]# chown -R oracle:oinstall /backup/expdp
4、授权目录给sys或system用户
GRANT READ,WRITE ON DIRECTORY backup_PRD to system; GRANT READ,WRITE ON DIRECTORY backup_PRD to mes_prd;
5、查看逻辑目录是否创建成功
sql>select * from dba_directories;
三、expdp导出数据语法详解
1、用法及解释:
expdp 用户名/密码@ip地址/实例 [属性] ip地址不写默认就是本地 userid=test/test --导出的用户,本地用户!! directory=dmpfile --导出的逻辑目录,一定要在oracle中创建完成的,并且给用户授权读写权限;供转储文件和日志文件使用的目录对象。 dumpfile=xx.dmp --导出的数据文件的名称,如果想在指定的位置的话可以写成dumpfile=/home/oracle/userxx.dmp logfile=xx.log --日志文件,如果不写这个参数的话默认名称就是export.log,可以在本地的文件夹中找到 schemas=userxx --使用dblink导出的用户不是本地的用户,需要加上schema来确定导出的用户,类似于exp中的owner,但还有一定的区别 EXCLUDE=TABLE:"IN('T1','T2','T3')" --exclude 可以指定不导出的东西,table,index等,后面加上不想导出的表名 network_link=db_local --这个参数是使用的dblink来远程导出,需要指定dblink的名称
案例:
(1)导全库
[oracle@yczbora expdp]$ expdp system/oracle directory=backup_PRD dumpfile=20210721-2_full_expdp.dmp logfile=20210721-2_full_expdp.log full=y
(2)按用户导
[oracle@yczbora expdp]$ expdp system/oracle directory=backup_PRD dumpfile=20210721_expdp.dmp logfile=20210721_expdp.log schemas=test
2、其他参数
(1)job_name:指定的任务的名称。
(2)content:
指定要导出的数据, 其中有效关键字值为: (ALL), DATA_ONLY 和 METADATA_ONLY,当设置content为ALL 时,将导出对象定义及其所有数据;
DATA_ONLY时,只导出对象数据;为METADATA_ONLY时,只导出对象定义 。
(3)reuse_dumpfiles:
如果导出文件已经存在,是否覆盖。
(4)compression:
压缩导出文件。
(5)estimate:
指定估算被导出表所占用磁盘空间分方法,默认值是BLOCKS
(6)estimate_only:
是否只估算导出占用的磁盘空间,而不进行真正的导出,默认是N。
(7)exclude:
用于指定执行操作时要排除对象类型或相关对象,用法:
EXCLUDE=object_type[:name_clause] [,….]
(8)include:
用于指定执行操作时要包含的对象类型或相关对象,用法:
INCLUDE=object_type[:name_clause] [,….]
(9)query:
导出符合条件的行。
(10)attch:
连接到现有的作业,可以用在中断导出任务后重新启动导出任务。
4、使用场景:
(1)导出用户及其对象
expdp scott/tiger@orcl schemas=scott dumpfile=expdp.dmp directory=dump_dir logfile=expdp.log;
(2)导出指定表
expdp scott/tiger@orcl tables=emp,dept dumpfile=expdp.dmp directory=dump_dir logfile=expdp.log;
(3)按查询条件导
expdp scott/tiger@orcl directory=dump_dir dumpfile=expdp.dmp tables=emp query='where deptno=20' logfile=expdp.log;
(4)按表空间导
expdp system/manager@orcl directory=dump_dir dumpfile=tablespace.dmp tablespaces=temp,example logfile=expdp.log;
(5)导整个数据库
用system,普通用户没有system数据的权限,如果给了普通用户dba权限,也可以可以导出的。
expdp system/123@127.0.0.1/orcl directory=dump_dir dumpfile=ly.dmp full=y logfile=expdp.log;
5、常用方式:
--全库导
expdp system/1qaz2WSX@mesorcl DIRECTORY=backup_prd DUMPFILE=jshy-20210315_full.dmpdp logfile=172.18.1.49-20210315_full_expdp-3.log full=y compression=all
--单用户导
expdp system/1qaz2WSX@mesorcl DIRECTORY=backup_prd DUMPFILE=jshy-20210315_full.dmpdp logfile=172.18.1.49-20210315_full_expdp-3.log schemas=mes_prd
导出完成后,物理路径下生成了一个 dmp文件;
四、IMPDP数据导入准备
1、IMPDP数据导入,
在正式导入数据前,要先确保要导入的用户已存在,如果没有存在,请先用下述命令进行新建用户
流程:
2、创建表空间
格式: create tablespace 表间名 datafile '数据文件名' size 表空间大小
create tablespace data_test datafile 'e:\oracle\oradata\test\test.dbf' size 2000M;
3、创建用户并授权
格式: create user 用户名 identified by 密码 default tablespace 表空间表;
create user mes_prd identified by study default tablespace data_test;
4、创建逻辑目录,物理目录
(1)新建逻辑目录:
最好以sys或system等管理员创建逻辑目录,登录后sql执行:
create directory backup_PRD as '/backup/expdp';
(2)创建物理目录:
[root@yczbora~]# mkdir -p /backup/expdp [root@yczbora~]# chown -R oracle:oinstall /backup/expdp
5、#给用户逻辑目录读写权限
sql>grant read,write on directory backup_PRD to mes_prd;
6、#给用户表空间权限
sql>grant dba,resource,unlimited tablespace to mes_prd;
五、impdp详解
1、用法及解释
impdp 用户名/密码@ip地址/实例 [属性]
ip地址不写默认就是本地
userid=test/test --导出的用户,本地用户!! directory=dmpfile --导出的逻辑目录,一定要在oracle中创建完成的,并且给用户授权读写权限;供转储文件和日志文件使用的目录对象。 dumpfile=xx.dmp --导出的数据文件的名称,如果想在指定的位置的话可以写成dumpfile=/home/oracle/userxx.dmp logfile=xx.log --日志文件,如果不写这个参数的话默认名称就是export.log,可以在本地的文件夹中找到 schemas=userxx --使用dblink导出的用户不是本地的用户,需要加上schema来确定导出的用户,类似于exp中的owner,但还有一定的区别 EXCLUDE=TABLE:"IN('T1','T2','T3')" --exclude 可以指定不导出的东西,table,index等,后面加上不想导出的表名 network_link=db_local --这个参数是使用的dblink来远程导出,需要指定dblink的名称
2、导入的重要参数
(1)content:
指定要加载的数据, 其中有效关键字值为: (ALL), DATA_ONLY 和 METADATA_ONLY,
当设置content为ALL 时,将加载对象定义及其所有数据;
DATA_ONLY时,只加载对象数据;为METADATA_ONLY时,只加载对象定义 。
(2)estimate:
估算所占用磁盘空间分方法.默认值是BLOCKS
(3)remap_schema:
用于将对象从一个用户下导入到另一个用户下。
(4)remap_tablespace:
用于将对象从一个表空间下导入到另一个表空间下。
(5)remap_datafile:
用于在不同文件系统的平台间,切换数据文件路径。
3、使用场景
(1)导入用户(从用户scott导入到用户scott)
impdp system/123@orcl directory=dump_dir dumpfile=expdp.dmp schemas=scott logfile=impdp.log;
(2)导入表(从scott用户中把表dept和emp导入到system用户中)
impdp system/manager@orcl directory=dump_dir dumpfile=expdp.dmp tables=scott.dept,scott.emp remap_schema=scott:system logfile=impdp.log table_exists_action=replace (表空间已存在则替换);
(3)导入表空间
impdp system/manager@orcl directory=dump_dir dumpfile=tablespace.dmp tablespaces=example logfile=impdp.log;
(4)导入整个数据库
impdb system/manager@orcl directory=dump_dir dumpfile=full.dmp full=y logfile=impdp.log;
4、常用方式:
--导入某个用户
impdp system/1qaz2WSX dumpfile=jshy-20210315_full.dmpdp logfile=jshy-20210315_full.dmpdp.log DIRECTORY=backup_mes SCHEMAS=MES_PRD EXCLUDE=STATISTICS
5、数据导入操作举例:
(1)创建备份/恢复目录
mkdir -p /backup/expdp
(2)创建表空间和数据文件
A、创建MES_PRD 永久表空间
create tablespace MES_PRD datafile '/oracle/app/oracle/oradata/mesorcl/MES_PRD_DATA.dbf' size 4000M autoextend on next 500M maxsize unlimited logging extent management local autoallocate segment space management auto; ALTER TABLESPACE MES_PRD ADD DATAFILE '/oracle/app/oracle/oradata/mesorcl/MES_PRD_DATA01.dbf' SIZE 4000M AUTOEXTEND ON NEXT 500M MAXSIZE UNLIMITED; ALTER TABLESPACE MES_PRD ADD DATAFILE '/oracle/app/oracle/oradata/mesorcl/MES_PRD_DATA02.dbf' SIZE 4000M AUTOEXTEND ON NEXT 500M MAXSIZE UNLIMITED; ALTER TABLESPACE MES_PRD ADD DATAFILE '/oracle/app/oracle/oradata/mesorcl/MES_PRD_DATA03.dbf' SIZE 4000M AUTOEXTEND ON NEXT 500M MAXSIZE UNLIMITED; ALTER TABLESPACE MES_PRD ADD DATAFILE '/oracle/app/oracle/oradata/mesorcl/MES_PRD_DATA04.dbf' SIZE 4000M AUTOEXTEND ON NEXT 500M MAXSIZE UNLIMITED; ALTER TABLESPACE MES_PRD ADD DATAFILE '/oracle/app/oracle/oradata/mesorcl/MES_PRD_DATA05.dbf' SIZE 4000M AUTOEXTEND ON NEXT 500M MAXSIZE UNLIMITED; ALTER TABLESPACE MES_PRD ADD DATAFILE '/oracle/app/oracle/oradata/mesorcl/MES_PRD_DATA06.dbf' SIZE 4000M AUTOEXTEND ON NEXT 500M MAXSIZE UNLIMITED;
B、创建MES_PRD_TEMP_NEW 临时表空间
create temporary tablespace MES_PRD_TEMP_NEW TEMPFILE '/oracle/app/oracle/oradata/mesorcl/MES_PRD_TEMP_NEW.dbf' size 1000M reuse autoextend on next 200M maxsize unlimited;
C、创建MES_MM 永久表空间文件
create tablespace MES_MM datafile '/oracle/app/oracle/oradata/mesorcl/MES_MM_DATA.dbf' size 4000M autoextend on next 500M maxsize unlimited logging extent management local autoallocate segment space management auto;
D、创建MES_MM_TEMP 临时表空间文件
create temporary tablespace MES_MM_TEMP TEMPFILE '/oracle/app/oracle/oradata/mesorcl/MES_MM_TEMP.dbf' size 500M reuse autoextend on next 20M maxsize unlimited;
E、创建用户
create user MES_PRD identified by mes800 default tablespace MES_PRD temporary tablespace MES_PRD_TEMP_NEW;
F、创建备份/恢复目录变量
create directory backup_PRD as '/backup/expdp';
G、给用户授权
grant connect,dba,resource to MES_PRD ; GRANT READ,WRITE ON DIRECTORY backup_PRD to MES_PRD; GRANT READ,WRITE ON DIRECTORY backup_PRD to system;
(3)数据导入:
impdp system/1qaz2WSX dumpfile=jshy-20210315_full.dmpdp logfile=jshy-20210315_full.dmpdp.log DIRECTORY=backup_mes SCHEMAS=MES_PRD EXCLUDE=STATISTICS
文章评论