ORACLE的impdp和expdp命令【登录、创建用户、授权、导入导出】
使用EXPDP和IMPDP时应该注意的事项:
EXP和IMP是客户端工具程序,它们既可以在客户端使用,也可以在服务端使用。
EXPDP和IMPDP是服务端的工具程序,他们只能在ORACLE服务端使用,不能在客户端使用。
IMP只适用于EXP导出的文件,不适用于EXPDP导出文件;IMPDP只适用于EXPDP导出的文件,而不适用于EXP导出文件。
expdp或impdp命令时,可暂不指出用户名/密码@实例名 as 身份,然后根据提示再输入,如:
expdp schemas=scott dumpfile=expdp.dmp DIRECTORY=dpdata1;
一、创建逻辑目录,该命令不会在操作系统创建真正的目录,最好以system等管理员创建。
create directory dpdata1 as 'd:\test\dump';
二、查看管理理员目录(同时查看操作系统是否存在,因为Oracle并不关心该目录是否存在,如果不存在,则出错)
select * from dba_directories;
三、给scott用户赋予在指定目录的操作权限,最好以system等管理员赋予。
grant read,write on directory dpdata1 to scott;
四、导出数据(在CMD窗口下执行以下执行)
1)按用户导
expdp scott/tiger@orcl schemas=scott dumpfile=expdp.dmp DIRECTORY=dpdata1;
2)并行进程parallel
expdp scott/tiger@orcl directory=dpdata1 dumpfile=scott3.dmp parallel=40 job_name=scott3
3)按表名导
expdp scott/tiger@orcl TABLES=emp,dept dumpfile=expdp.dmp DIRECTORY=dpdata1;
4)按查询条件导
expdp scott/tiger@orcl directory=dpdata1 dumpfile=expdp.dmp Tables=emp query='WHERE deptno=20';
5)按表空间导
expdp system/manager DIRECTORY=dpdata1 DUMPFILE=tablespace.dmp TABLESPACES=temp,example;
6)导整个数据库
expdp system/manager DIRECTORY=dpdata1 DUMPFILE=full.dmp FULL=y;
五、还原数据(在CMD窗口下执行以下执行)
1)导到指定用户下
impdp scott/tiger DIRECTORY=dpdata1 DUMPFILE=expdp.dmp SCHEMAS=scott;
2)改变表的owner
impdp system/manager DIRECTORY=dpdata1 DUMPFILE=expdp.dmp TABLES=scott.dept REMAP_SCHEMA=scott:system;
3)导入表空间
impdp system/manager DIRECTORY=dpdata1 DUMPFILE=tablespace.dmp TABLESPACES=example;
4)导入数据库
impdb system/manager DIRECTORY=dump_dir DUMPFILE=full.dmp FULL=y;
5)追加数据
impdp system/manager DIRECTORY=dpdata1 DUMPFILE=expdp.dmp SCHEMAS=system TABLE_EXISTS_ACTION
自己的实践:(导入导出表空间)
/***0.登录数据库*********/ C:\Windows\system32>sqlplus sys/123456@orcl as sysdba
/**1创建表空间**/ create tablespace sbgl datafile 'F:\Oracle\sbgl.dbf'size 200M autoextend on next 50M force logging; /**2.创建用户***/ create user sbgl identified by sbgl default tablespace sbgl; /**3.授予sbgl操作权限**/ grant connect,resource,dba to sbgl; /***4.创建导出目录(之后手动创建目录)**/ create or replace directory pump_dir as 'F:\expdp'; /********5.向新创的用户授权******/ grant read,write on directory pump_dir to sbgl; /*******6.查看管理理员目录****/ select * from dba_directories; /*导入数据*/ 1、将SBGL20180129.EXPDP文件拷贝到d:\expdp; 2、在CMD窗口下执行以下命名 impdp sbgl/sbgl@orcl dumpfile=pump_dir:SBGL20180129.EXPDP table_exists_action=replace nologfile=y /*导出数据:*/ 在CMD窗口下执行以下命名: expdp sbgl/sbgl@orcl dumpfile=pump_dir:SBGL20180129.expdp schemas=sbgl nologfile=y
3.简单给出expdp命令行选项的注释 1)ATTACH 该选项用于与已存在导出作业建立关联。语法如下: ATTACH [=[schema_name.]job_name] schema_name表示用户名,job_name表示导出的作业名。注意,如果使用ATTACH选项,在命令行除了连接字符串和ATTACH选项外,不能指定任何其他选项。可以通过查询DBA_DATAPUMP_JOBS获得系统中现有的作业信息。 示例如下: expdp secooler/secooler ATTACH=secooler.export_job 2)COMPRESSION 表示是否压缩数据库对象的元数据,这里只提供两个选项:METADATA_ONLY和NONE。在10g这个版本中这个选项的意义不大,因为元数据本身很小,压缩与否对最终导出的文件大小的影响甚微。11g中对这个选项进行了增强,真正的提供了数据压缩的功能。具体请参考文章《【COMPRESS】11g中表压缩技术的长足进步》(http://space.itpub.net/519536/viewspace-662005)。 COMPRESSION=(METADATA_ONLY | NONE) 3)CONTENT 该选项用于指定要导出的内容。默认值为ALL。 CONTENT={ALL | DATA_ONLY | METADATA_ONLY} 当设置CONTENT为ALL时,会导出对象元数据及对象数据;当设置为DATA_ONLY时,只导出对象数据;当设置为METADATA_ONLY时,只导出对象元数据。 示例如下: expdp secooler/secooler DIRECTORY=dump_dir DUMPFILE=test.dump CONTENT=METADATA_ONLY 4)DIRECTORY 指定转储文件和日志文件所在的目录,给定的参数是一个DIRECTORY数据库对象,是通过CREATE DIRECTORY语句建立的。后文会有这方面的演示。 DIRECTORY=directory_object 示例如下: expdp secooler/secooler DIRECTORY=dump_dir DUMPFILE=test.dump 5)DUMPFILE 用于指定转储文件的名称,默认名称为expdat.dmp。 DUMPFILE=[directory_object:]file_name [, ...] directory_object用于指定目录对象名,file_name用于指定转储文件名。如果不给定directory_object,导出工具会自动使用DIRECTORY选项指定的目录对象。 这个参数可以结合FILESIZE参数一起使用,达到生成多个转储文件的目的。 注意,如果指定路径下已经存在待生成的导出文件,导出过程中将会报错退出。 expdp secooler/secooler DIRECTORY=dump_dir1 DUMPFILE=dump_dir2:test.dmp 6)ENCRYPTION_PASSWORD 该参数需要和Oracle的透明数据加密特性(TDE)一同使用,因为expdp本身是不支持加解密的。 ENCRYPTION_PASSWORD = password 7)ESTIMATE 用于估算被导出的表占用的空间大小(不包含表的元数据)。默认值是BLOCKS。 ESTIMATE={BLOCKS | STATISTICS} 设置为BLOCKS时,oracle会按照目标对象所占用的数据块个数乘以数据块尺寸估算对象占用的空间;设置为STATISTICS时,会根据最近的统计值给出对象占用空间,这种方法的误差会比较大。无论使用哪种选项值,都会有误差。 示例如下: expdp secooler/secooler DIRECTORY=dump_dir ESTIMATE=STATISTICS DUMPFILE=test.dump 8)EXTIMATE_ONLY 指定是否只估算导出作业所占用的磁盘空间,默认值为N ESTIMATE_ONLY={y | n} 设置为Y时,导出操作仅估算对象所占用的磁盘空间,不会执行导出作业,注意此时不要使用DUMPFILE选项;设置为N时,会估算对象所占用的磁盘空间,同时还会执行导出操作。 示例如下: expdp secooler/secooler ESTIMATE_ONLY=y 9)EXCLUDE 用于控制在导出过程中哪些数据库对象不被导出。 EXCLUDE=object_type[:name_clause] [, ...] object_type用于指定要排除的对象类型,name_clause用于指定要排除的具体对象名称。注意EXCLUDE选项和INCLUDE选项不能同时使用。 该选项支持模糊匹配,非常好用的功能。另外,被指定不被导出的表上的约束、索引、触发器等均不会被导出。 示例如下: expdp secooler/secooler DIRECTORY=dump_dir DUMPFILE=a.dup EXCLUDE=VIEW 10)FILESIZE 限定单个转储文件的最大容量,默认值是0,表示没有文件尺寸的限制。该选项与DUMPFILE选项一同使用。 FILESIZE=integer[B | K | M | G] 11)FLASHBACK_SCN 使用Flashback Query特性指定导出特定SCN时刻的表数据。 FLASHBACK_SCN=scn_value scn_value用于给出SCN值。注意:FLASHBACK_SCN选项和FLASHBACK_TIME选项不能同时使用。 示例如下: expdp secooler/secooler DIRECTORY=dump_dir DUMPFILE=test.dmp FLASHBACK_SCN=358523 12)FLASHBACK_TIME 使用Flashback Query特性指定导出特定时间点的表数据。 FLASHBACK_TIME="TO_TIMESTAMP(time-value)" 注意:FLASHBACK_TIME选项和FLASHBACK_SCN选项不能同时使用。 示例如下: expdp secooler/secooler DIRECTORY=dump_dir DUMPFILE=test.dmp FLASHBACK_TIME="TO_TIMESTAMP('23-09-2010 14:35:00','DD-MM-YYYY HH24:MI:SS')" 13)FULL 是否以全库模式导出数据库。默认为N。 FULL={y | n} 为Y时,表示执行数据库的全库导出。 14)HELP 指定是否显示expdp命令行选项的帮助信息,默认为N HELP = {y | n} 当设置为y时。会给出expdp的帮助信息,正如文章开始处使用的方法一样。 15)INCLUDE 指定导出哪些数据库对象类型或数据库对象。与EXCLUDE选项用法相同,功能相反。 注意INCLUDE选项和EXCLUDE选项不能同时使用。 INCLUDE = object_type[:name_clause] [, ...] 16)JOB_NAME 指定要导出作业的名称。默认为SYS_EXPORT_[mode]_[nn] JOB_NAME=jobname_string 对应的作业信息可以通过DBA_DATAPUMP_JOBS视图获得。 17)LOGFILE 指定导出过程中日志文件的名称,默认值为export.log。 LOGFILE=[directory_object:]file_name directory_object指定目录对象的名称,file_name用于指定导出日志文件的名称。如果不指定directory_object,会自动使用DIRECTORY选项的值。 expdp secooler/secooler DIRECTORY=dump_dir DUMPFILE=test.dmp logfile=test.log 18)NETWORK_LINK 结合数据库链,完成远程数据库对象的导出。 NETWORK_LINK=source_database_link 19)NOLOGFILE 控制是否禁止生成导出日志文件,默认值为N。 如果设置为Y,表示不输出日志。 NOLOGFILE={y | n} 20)PARALLEL 指定执行导出操作的并行度,默认值为1。 PARALLEL=integer 注意,这个参数给出的并行度是一个真正能启用进程数的最大值。具体会启用多少个进程并行处理会受很多因素影响,例如生成转储文件的多少(不能多于文件数)、导出的数据量大小、CPU资源还有系统I/O资源等因素影响。另外,这个参数只有在Oracle 10g的企业版本中才可以使用。 21)PARFILE 指定导出操作使用到的参数文件的名称。使用这个参数可以编写出比较通用的导出脚本。 PARFILE=[directory_path]file_name 22)QUERY 用来指定类似where语句限定导出的记录。相比exp命令的QUERY选项,这里更加的灵活,可以同时针对每张表进行条件限制。 QUERY = [schema.][table_name:] query_clause 因为该参数目的是限制导出数据的多少,因此不能和CONTENT=METADATA_ONLY、ESTIMATE_ONLY还有TRANSPORT_TABLESPACES一起使用。 示例如下: expdp secooler/secooler directory=dump_dir dumpfiel=test.dmp tables=emp query='WHERE deptno=66' 23)SAMPLE 给出导出表数据的百分比,参数值可以取.000001~100(不包括100)。不过导出过程不会和这里给出的百分比一样精确,是一个近似值。 语法如下: SAMPLE=[[schema_name.]table_name:]sample_percent 示例如下: SAMPLE="HR"."EMPLOYEES":50 24)SCHEMAS 按照SCHEMA模式导出,默认为当前用户。很常用,不做更多的解释。 SCHEMAS=schema_name [, ...] 25)STATUS 指定显示导出作业进程的详细状态,默认值为0。 STATUS=[integer] 示例如下: expdp hr/hr DIRECTORY=dpump_dir1 SCHEMAS=hr,sh STATUS=300 26)TABLES 以表模式导出数据。可以同时导出多个表;支持通配符格式的导出;也支持只导出分区表中的某个分区。 TABLES=[schema_name.]table_name[:partition_name] [, ...] schema_name用于指定用户名,table_name用于指定导出的表名,partition_name用于指定要导出的分区名。 27)TABLESPACES 指定需要导出哪个表空间中的表数据。注意:Only the tables contained in a specified set of tablespaces are unloaded.也就是说,只有表空间里的表数据会被导出。 TABLESPACES=tablespace_name [, ...] 28)TRANSPORT_FULL_CHECK 用来检查被传输的表空间是否为严格的自包含,默认为N。 29)TRANSPORT_TABLESPACES 指定传输表空间指定的表空间列表。 TABLESPACES=tablespace_name [, ...] 30)VERSION 该选项用来指定数据库生成的转储文件最低兼容的版本,默认值为COMPATIBLE。 VERSION={COMPATIBLE | LATEST | version_string} 当值为COMPATIBLE时,会以初始化参数中COMPATIBLE参数内容为准;为LATEST时,表示最高版本与数据库版本保持一致;version_string是用于指定具体数据库版本的字符串。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· Obsidian + DeepSeek:免费 AI 助力你的知识管理,让你的笔记飞起来!
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了