Oracle:linux环境下数据泵导入导出

导出服务器和导入服务器都需要有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(非必填,解决导入过程中创建对象报错等)

等待导入结束

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章