dmp文件导入数据库服务器

一、什么是dmp文件

在oracle中,dmp文件是数据库导出的文件,常用于数据库的备份和迁移。一般会用exp命令来导出,用imp命令来导入也就是恢复数据库。

二、dmp文件导入

常用于数据库迁移使用,当需要额外部署新的服务器时,需要将提前备份好的dmp文件导入到新的环境中。

创建用户

在导入之前,我们需要新建一个用户,用于存放我们的dmp数据
  • 登录到linux服务器 切换oracle用户

su - oracle
  • 登录到oracle数据库

sqlplus / as sysdba   --以操作系统权限认证的oracle sys管理员登陆
  • 切换到数据库存储端(pdb)

alter session set container=idms
​
alter session 切换容器
  • 创建数据库用户

create user <username> identified by <password> 
default tablespace <tablespace_name> -- 默认表空间
temporary tablespace temp -- 临时表空间
​
create user ecdsprodtest0412 identified by ecdsprodtest0412 default tablespace ITREASURY temporary tablespace temp;
  • 用户授权

授予角色语法:
grant <object/system privilege> to <role name>;
CONNECT 角色,--拥有Connect权限的用户只可以登录ORACLE(仅具有创建SESSION的权限),不可以创建实体,不可以创建数据库结构。
RESOURCE 角色,--是授予开发人员的。拥有Resource权限的用户只可以创建实体,不可以创建数据库结构。
DBA角色,--是授予数据库维护人员的。拥有全部特权,是系统最高权限,只有DBA才可以创建数据库结构。
​
grant connect,resource,dba to ecdsprodtest0412;
  • 创建dmp文件存储目录并赋权

新建directory的语法
CREATE [OR REPLACE] DIRECTORY directory  directoryName AS 'pathname';
​
create or replace  directory  dmpdir  as  '/oradata';
grant read ,write on directory dmpdir to ecdsprodtest0412;
  • 切换root用户,赋予读写权限

mkdir    /oradata
chmod -R 777 /oradata

导入dmp文件

  • 将dmp文件上传到/oradata目录下 切换到oracle用户 执行导入dmp命令

impdp  ecdsprodtest0412/ecdsprodtest0412  directory=dmpdir dumpfile=hbisdp_230411.dmp  remap_schema=hbisdp:ecdsprodtest0412  logfile=20230412.log;
​
directory     --此路径可以理解为实际绝对路径在oracle数据库里的别名,是导入文件的存储位置
DUMPFILE      --此参数为需要导入的dmp文件名
REMAP_SCHEMA  --当把用户A的对象导入到用户B时,使用此参数
REMAP_TABLESPACE  --用于进行数据的表空间迁移。把前一个表空间中的对象导入到冒号后面的表空间
LOGFILE       --指定导入日志名称

至此导入dmp文件完成

三、导入报错处理

需删除当前创建的用户,重新执行上面的导入步骤

删除用户命令

drop user ECDSPRODTEST0412 cascade;
​
表示删除用户ECDSPRODTEST0412,同时删除 ECDSPRODTEST0412 用户下的所有数据对象,如 table, view 等
​
cascade 介绍与用法 ( oracle)
级联删除,比如你删除某个表的时候后面加这个关键字,会在删除这个表的同时删除和该表有关系的其他对象

此时可能会出现这个问题,解决方案:

1)查看用户的连接状况

SELECT SID,SERIAL# FROM V$SESSION WHERE USERNAME='ECDSPRODTEST0412';

如果报错

则查询所有的oracle用户,找到要删除的用户对应的名字

select * from all_users;

再次执行

SELECT SID,SERIAL# FROM V$SESSION WHERE USERNAME='ECDSPRODTEST0412';

2)删除用户所有连接的session

alter system kill session '213,4036';

最后再次删除用户

drop user ECDSPRODTEST0412 cascade;
  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值