一、使用exp/imp导出导入
1、exp导出
1)导出某个用户下的一个或多个指定的表
exp hr/hr file=table.dmp tables=(employees,department) indexes=y log=table.log
参数 file 导出后生成的名字 tables 要导出的表 indexes 导出索引 log 记录日志
2)导出hr用户下的所有对象
exp hr/hr file=user.dmp owner=hr grants=y log=user.log statistics=none rows=n
参数 owner 所有者下的所有对象 grants 导出权限 statistics 导出时忽略报错 row 导出数据行
3)导出整个数据库
exp hr/hr file=data.dmp full=y log=data.log direct=y
参数 full 导出所有 direct 直接导出
4)使用参数文件 parfile
先创建参数文件par.txt,内容如下
hr/hr file=data.dmp full=y log=data.log direct=y statistics=none
执行 exp parfile= par.txt
2、imp导入
1)导入一张指定的表
imp hr/hr file=emp.dmp tables=emp log=tables.log ignore=y
参数 ignore 忽略导入错误
2)导入某个用户下的所有对象
imp hr/hr file=user.dmp fromuser=hr touser=scott log=user.log
参数 fromuser 导出文件的用户 touser 导入到那个用户
3)导入整个数据库
imp system/oracle file=data.dmp full=y
二、使用数据泵expdp导出
使用expdp/impdp数据泵,必须先创建目录对象
1、创建目录对象
a. 在系统上创建文件存储目录
mkdir /home/oracle/dir
b. 在数据库中创建对象
create directory dir as ‘/home/oracle/dir’;
c. 授权
grant write,read directory to hr;
2、导出某个指定的表
expdp hr/hr directory=dir dumpfile=exp%U.dmp tables=(employees)
directory为导出的存放目录
dumpfile为导出后命名的文件
tables 为要导出的文件
3、导出某个或几个用户
expdp system/oracle directory=dir dumpfile=users%U.dmp schemas=(hr,scott)
schemas 为要导出的用户名
4、导出整个数据库
expdp system/oracle directory=dir dumpfile=data%U.dmp full=y parallel=4 filesize=2G
full=y 为导出整个数据库
parallel 为并行进程
filesize为生成多的2G的文件
5、指定不导出的对象
expdp system/oracle directory=dir dumpfile=users%U.dmp parfile=exp_par.txt
参数文件内容如下
exclude=table:”like ‘exmp%’ ”
exclude=table:”= ‘exmp‘”
schemas=hr
parfile为调用参数文件
exclude为排除以外的导出(大小写敏感)
6、导出指定类型的对象
使用该选项的时候必须使用参数文件
expdp system/oracle directory=dir dumpfile=sch.dmp parfile=exp_par.txt
参数文件内容如下
include = function
include = procedure
include = package
include = view:”like ‘PRODUCT%’ “
schemas = (hr,scott)
7、指导处数据,不导出表的定义
expdp system/oracle directory=dir dumpfile=a%U.dmp schemas=hr content=data_onle
content导出的内容
三个参数值
metadata_only 只导出对象的定义信息,不导出数据
data_only 只导出实际数据
all 定义和数据都导出
8、只导出符合指定条件的数据行
必须通过参数文件完成
expdp hr/hr directory=dir dumpfile=a%U.dmp parfile=exp_par.txt
我们先编辑好exp_par.txt参数文件内容如下
tables=(emp)
query=emp:”where department_id = 40 ”
query指定条件
三、使用impdp导入
使用expdp/impdp数据泵,必须先创建目录对象
1、创建目录对象
a. 在系统上创建文件存储目录
mkdir /home/oracle/dir
b. 在数据库中创建对象
create directory dir as ‘/home/oracle/dir’;
2、导入某个指定的表
impdp hr/hr directory=dir dumpfile=exp01.dmp table=(emp) remap_schema=scott:hr remap_tablespace=user01:user01
将之前在scott下emp表用expdp导出的表到exp01.dmp文件后,在通过impdp命令导入到hr用户下同时在源数据库中emp位 于user01表空间中,导入到目标数据库的user02表空间中。
3、导入某个或某几个用户
impdp system/oracle directory=dir dumpfile=user01.dmp remap_schemas=scott:hr
4、导入整个数据库
impdp system/oracle director=dir dumpfile=data01.dmp full=y
5、也可以使用exclude,inclued,query