导出服务器和导入服务器都需要有oracle用户密码(密码为空请忽略)
一、都需要用到的基础命令
# 切换到oracle用户,如果该用户设置了密码会提示输入密码
su - oracle
#切换到root用户,会提示你输入密码
su root
#给文件夹赋权限,因为有时候在进行导入导出时会遇到oracle用户没有对dmp文件的读写权限
chmod
chmod命令参考:chmod—菜鸟教程
二、导出dmp
第一步:首先执行如下sql,找到要导出文件所在的表空间名称(在导入时会用的到)
SELECT a.tablespace_name "表空间名",
total "表空间大小",
free "表空间剩余大小",
(total - free) "表空间使用大小",
total / (1024 * 1024 * 1024) "表空间大小(G)",
free / (1024 * 1024 * 1024) "表空间剩余大小(G)",
(total - free) / (1024 * 1024 * 1024) "表空间使用大小(G)",
round((total - free) / total, 4) * 100 "使用率 %"
FROM (SELECT tablespace_name, SUM(bytes) free
FROM dba_free_space
GROUP BY tablespace_name) a,
(SELECT tablespace_name, SUM(bytes) total
FROM dba_data_files
GROUP BY tablespace_name) b
WHERE a.tablespace_name = b.tablespace_name;
第二步:查询一些导出要用到参数:复制下图参数(导入导出都会用到)
第三步:导出命令
expdp
用户名/密码
dumpfile=xxx.dmp
logfile=xxx.log
directory=DATA_PUMP_DIR
exclude=TABLE:\"LIKE \'表名称%\'\"
- dumpfile:指定导出dmp文件名称
- logfile:指定导出时日志文件名称
- directory:指定dmp文件的存储目录(取第二步查询出来的值)
- exclude/include(非必须):导入选项,不包括/包括哪些表
至此导入成功
三、文件转移
数据泵导入导出,由于大多数情况下是跨服务器的,在这里介绍一个linux系统服务器间文件传输的命令
scp:
把当前一个文件copy到远程服务器上:
scp /home/a.txt root@主机ip:文件要复制到的路径
从远程主机copy文件到当前主机:
scp 要拷贝的文件名 root@远程主机ip:远程主机上该文件的目录 保存到本机的目录
四、数据泵导入
执行导出操作的第一步和第二步,获取导入需要的参数
导入命令
impdp
用户名/密码
remap_schema=导出用户名:导入用户名
directory=DATA_PUMP_DIR(即导入dmp文件的存放目录)
remap_tablespace=导出表空间:导入表空间
dumpfile=导入的文件名
logfile=导入日志
transform=OID:N(非必填,解决导入过程中创建对象报错等)
等待导入结束