window centos oracle 11G使用impdp expdp 导入 导出数据库

之前刚开始使用oracle的时候 备份还原数据库使用 imp exp 后面发现问题不少,表空间映射 ,空表无法导出等小问题居多

后面使用oracle10G版本新加入的导入导出指令后,就在没使用过imp exp了

 

首先impdp expdp后需要在orace服务器端执行,不能远程执行,导入导出效率非常高

 

1.首先编写一个导出数据库模式的指令 

userName/password 分别为数据库用户名和密码

schemas=tablespace   tablespace 为用户分配的表空间,可使用该用户登录plsql选择一张表便捷查看

 dumpfile=xxxx.dmp 导出的文件名

 LOGFILE=xxxx.log  导出的日志名称

(expdp还有其他参数,我这边没使用到)

window centos oracle 11G使用impdp expdp 导入 导出数据库_第1张图片

expdp userName/password schemas=tablespace dumpfile=xxxx.dmp LOGFILE=xxxx.log

在数据库服务器cmd窗口执行impdp

window centos oracle 11G使用impdp expdp 导入 导出数据库_第2张图片

导出成功后查看文件存储路径

window centos oracle 11G使用impdp expdp 导入 导出数据库_第3张图片

 

2.把数据库dmp文件复制到需要导入的服务器指定路径

使用以下sql查询dpdump路径

select * from dba_directories where directory_name='DATA_PUMP_DIR';

window centos oracle 11G使用impdp expdp 导入 导出数据库_第4张图片

然后把导出的dmp文件复制进去

window centos oracle 11G使用impdp expdp 导入 导出数据库_第5张图片

3.新数据库创建用户名,表空间等用于存储数据

我一般都建立和原库一样的用户名,表空间,不用转换,也不易出错,生产环境表空间要设置为无限增长,

我这边开发环境了指定了最大值.

--创建表空间

CREATE TABLESPACE  PORTAL_HSS
DATAFILE  'D:\oradata\xxxdata\PORTAL_HSS.dbf'
    SIZE 1000M
AUTOEXTEND ON
NEXT 2000M MAXSIZE 2000M;

 

--以下sql可修改表空间不限制增长

ALTER DATABASE DATAFILE 'D:\oradata\xxxxdata\PORTAL_HSS.dbf' AUTOEXTEND ON NEXT 1000M MAXSIZE UNLIMITED;

--创建用户并设置表空间
CREATE USER portal_hss IDENTIFIED BY portal_hss
DEFAULT TABLESPACE PORTAL_HSS;

生产环境我直接给用户dba权限

--授予用户dba权限
GRANT 
  dba
TO portal_hss;

window centos oracle 11G使用impdp expdp 导入 导出数据库_第6张图片

4.编写impdp指令

portal_hss/portal_hss 分别为数据库用户名和密码

DIRECTORY=DATA_PUMP_DIR  设置从DATA_PUMP_DIR目录读取dmp文件

DUMPFILE=HSS20200529.DMP   导入的文件名

LOGFILE=HSS20200529log.log  执行生成的日志名称

remap_schema=portal_hss:portal_hss  用户名映射 :前面是原库的 :后面是新库的 我这边都按原库的名称创建的

 remap_tablespace=PORTAL_HSS:PORTAL_HSS 表空间名映射 :前面是原库的 :后面是新库的 我这边都按原库的名称创建的

(impdp还有其他参数,我这边没使用到)

impdp portal_hss/portal_hss DIRECTORY=DATA_PUMP_DIR DUMPFILE=HSS20200529.DMP LOGFILE=HSS20200529log.log remap_schema=portal_hss:portal_hss remap_tablespace=PORTAL_HSS:PORTAL_HSS

服务器执行导入指令

 

。由于我设置的表空间2G不足,导致导入失败,我这边把新库的用户名和表空间删掉重新建了一次

--删除USER。

DROP USER portal_hss CASCADE

--删除表空间。

DROP TABLESPACE PORTAL_HSS INCLUDING CONTENTS AND DATAFILES;

我发现oracle这个坑,原库有一张表数据量千万级,我把数据都清掉了,但是建表语句指定的索引等表空间占用大小没变,

数据清了还需要把这个表的表空间大小重新设置在导出dmp。我直接删除表在重建了

单这个表就不知道需要初始化多少G的表空间了。。。

window centos oracle 11G使用impdp expdp 导入 导出数据库_第7张图片

执行导入指令

window centos oracle 11G使用impdp expdp 导入 导出数据库_第8张图片

导入完毕后可登录查看下数据库数据是否正常

 

  (备注)如果是linux数据库,我这边是centos7测试的,用root用户登录该数据库服务器后
  ,直接采用impdp命令执行导入操作,会提示:KSH:impdp:not found。因为操作的用户不对,
  linux服务器下,执行expdp,impdp命令,必须以oracle用户登录,

 即执行指令su - oracle

  登录后在执行该命令就可以了。

你可能感兴趣的:(软件)