Oracle使用数据泵导入/导出数据(expdp/impdp)
此类博客太多的坑,都不完整,要不执行着就报错执行不下去了,要不说的不清不楚,整理的一步步截图,100%成功。
expdp数据导出
- 远程登录数据库所在服务器(DBA权限用户)
sqlplus system
ps:使用的是linux,如果使用windows只需要用cmd来连接即可
- 创建目录路径
create directory data_dir as '/home/oracle/back/data';
data_dir为路径名称,可自命名。路径是导出的dmp文件存放的路径必须存在。windows需要给路径换一下。
查询用户创建目录
select * from dba_directories;
删除创建的目录(如果需要更换目录需要先删除在创建,不需要更换不用删除)
drop directory data_dir ;
注意… 注意:上面命令只是指定了导出文件存放的路径,但是这个路径需要自己手动创建。手动创建导出指定的路径,修改这个路径隶属用户组,修改权限。
mkdir /home/oracle/back/data
chown -R oracle:oinstall /home/oracle/back/data/
cd /home/oracle/back
chmod 777 data
3.修改权限
为oracle用户授予访问数据目录的权限,dbuser为你想要导出的那个用户名,这个用户有权限向你创建的目录下读写。
Grant read,write on directory data_dir to dbuser;
为oracle用户授予导入导出操作授权,dbuser为你想要导出的那个用户名,这个用户有权限使用导入导出命令。
grant exp_full_database,imp_full_database to dbuser;
退出,输入命令:exit;
4.导出dmp文件
expdp dbuser/123456@orcl schemas=dbuser dumpfile=expdp.dmp directory=data_dir logfile=expdp.log
导出的命令有很多限制,上面是导出整个库。
比如:按照条件导出指定的表,导出指定表的指定满足where条件的数据等等……
自行百度查一下
expdp [为用户名]/[密码]@[服务名]
schemas=[为用户名]
dumpfile=[导出数据库文件(可自命名)]
directory=[目录名]
logfile=[日志文件文件名(可自命名)]
注意:命令结束不需要加“;
expdp数据导入
导入其实重复导出的步骤,创建读取的文件路径,修改权限,创建目录……
- 远程登录数据库所在服务器(DBA权限用户)
sqlplus system
ps:使用的是linux,如果使用windows只需要用cmd来连接即可
- 创建目录路径
create directory data_dir as '/home/oracle/back/data';
data_dir为路径名称,可自命名。路径是导出的dmp文件存放的路径必须存在。windows需要给路径换一下。
查询用户创建目录
select * from dba_directories;
删除创建的目录(如果需要更换目录需要先删除在创建,不需要更换不用删除)
drop directory data_dir ;
注意… 注意:上面命令只是指定了导出文件存放的路径,但是这个路径需要自己手动创建。手动创建导出指定的路径,修改这个路径隶属用户组,修改权限。
mkdir /home/oracle/back/data
chown -R oracle:oinstall /home/oracle/back/data/
cd /home/oracle/back
chmod 777 data
3.修改权限
为oracle用户授予访问数据目录的权限,dbuser为你想要导出的那个用户名,这个用户有权限向你创建的目录下读写。
Grant read,write on directory data_dir to dbuser;
为oracle用户授予导入导出操作授权,dbuser为你想要导出的那个用户名,这个用户有权限使用导入导出命令。
grant exp_full_database,imp_full_database to dbuser;
退出,输入命令:exit;
4.把导出的dmp文件通过FTP传输到需要导入的主机上面,因为上面已经创建好了目录,所以需要给dmp上传到导入的主机上的/home/oracle/back/data目录下,然后在给这个目录赋权限777
impdp bill/hmhd@orcl REMAP_SCHEMA = bill:bill table_exists_action = replace directory=data_dir dumpfile=expdp.dmp logfile=expdp.log
impdp [用户名]/[密码]@[服务名]
REMAP_SCHEMA=[源用户名1]:[目标用户名2]
table_exists_action=replace /存在的表动作(覆盖)/
directory=[目录名]
dumpfile=[.dmp文件名]
logfile=[.log文件名]