2022 May 16 oracle Oracle数据库dump导入和导出 1. 导入命令介绍 Oracle dump数据导入导出有两种方式:imp/exp、impdp/expdp。两者区别:
1、exp/imp客户端程序,受网络,磁盘的影响;impdp/expdp服务器端程序,只受磁盘的影响。
2、exp常规方式是使用SELECT的方式查询数据库中的数据,是需要通过buffer cache并通过sql的语句处理层再转移至exp的导出文件。这个过程的数据流向是:(1)数据通过select的方式,将数据由文件系统加载至buffer cache(数据库缓存)(2)由pga(用户进程,每一个连接都会对应一个pga)将缓存的数据通过网络传输到客户端生成文件。Exp直接路径模式,则是直接从磁盘上将数据转移至exp的导出文件,所以速度更快。而expdp是exp的升级版,对文件进行了压缩和并行处理,所以速度最快。
2. 查询默认dump路径 查询默认dump路径(也可以自己创建一个dump目录,笔者使用默认的dump目录导出导入),导入导出需要指定此目录名’DATAPUMPDIR’,执行导出导入命令时会在此目录查找dumpfile。
sql select * from dba*directories where directory*name='DATA*PUMP*DIR';
3. Oracle导出dump文件 首先导入时登陆的用户需要有dump目录的读写权限,如果没有请使用dba用户使用以下命令授权用户读写
sql GRANT READ,WRITE ON DIRECTORY dump*dir TO username;
按用户导出(最常用)(此处使用的DIRECTORY为上面查出的默认dump目录’DATAPUMPDIR’,下同)
sql expdp username/password@XE schemas=username dumpfile=dump*file*name.dmp DIRECTORY=DATA*PUMP*DIR content=DATA*ONLY; 按表名导出
sql expdp username/password@XE TABLES=table*name*01,table*name*02,table*name*03 dumpfile=dump*file*name.dmp DIRECTORY=DATA*PUMP*DIR;
按查询条件导出
sql expdp username/password@XE TABLES=table*name*01 query='WHERE id=1' dumpfile=dump*file*name.dmp DIRECTORY=DATA*PUMP*DIR;
按表空间导出
sql expdp system/oracle@XE TABLESPACES=tablespace*name*01,tablespace*name*02 dumpfile=dump*file*name.dmp DIRECTORY=DATA*PUMP*DIR;
按数据库导出
sql expdp system/oracle@XE FULL=y dumpfile=dump*file*name.dmp DIRECTORY=DATA*PUMP*DIR;
导出附加参数
` 可选参数PARALLEL参数说明: PARALLEL=1 指定执行导出操作的并行进程个数,默认值为1
可选参数content参数说明: CONTENT用于指定要导入/出的内容.默认值为ALL CONTENT={ALL | DATAONLY | METADATAONLY} 1) 当设置CONTENT为ALL 时,将导出对象定义及其所有数据. 2) 为DATAONLY时,只导出对象数据, 3) 为METADATAONLY时,只导出对象定义 content=ALL `
4. Oracle导入dump文件(在目标Oracle上执行) 首先导入时登陆的用户需要有dump目录的读写权限,如果没有请使用dba用户使用以下命令授权用户读写
sql GRANT READ,WRITE ON DIRECTORY dump*dir TO username;
按用户导入(最常用)(此处使用的DIRECTORY为上面查出的默认dump目录’DATAPUMPDIR’,下同)
sql impdp username/password@XE schemas=username dumpfile=dump*file*name.dmp DIRECTORY=DATA*PUMP*DIR REMAP*SCHEMA=u1:u2 table*exists*action=truncate;
按表空间导入
sql impdp system/oracle@XE TABLESPACES=tablespace*name dumpfile=dump*file*name.dmp DIRECTORY=DATA*PUMP*DIR;
按数据库导入
sql impdb system/oracle@XE FULL=y dumpfile=dump*file*name.dmp DIRECTORY=DATA*PUMP*DIR;
导入附加参数说明
` 可选参数REMAPSCHEMA参数说明: REMAPSCHEMA 可以指定源数据库导出的用户u1改为导入目标数据库的u2 REMAP*SCHEMA=u1:u2
可选参数tableexistsaction参数说明: 使用imp进行数据导入时,若表已经存在,要先drop掉表,再进行导入。 而使用impdp完成数据库导入时,若表已经存在,有四种的处理方式: 1) skip:默认操作 2) replace:先drop表,然后创建表,最后插入数据 3) append:在原来数据的基础上增加数据 4) truncate:先truncate,然后再插入数据 tableexistsaction=truncate `
Refer Oracle使用数据泵方式导入/导出dump文件(impdp/expdp)