我们测试环境经常会遇到恢复生产数据的情况,我一般比较习惯使用数据泵来搞,这个具体根据自己的业务形态选择适合自己的方式。

此次我们说的是完全恢复用户数据,具体步骤如下:

1.备份数据

expdp test/test dumpfile=test.dmp logfile=test.log directory=DBBAK cluster=no schemas=test,user01

1.删除用户及用户下的数据

drop user user01 cascade;

一般我们会遇到如下报错,说明还有此用户的链接,我们要联系管理员关闭应用接口程序。

drop user tuser01 cascade
*
ERROR at line 1:
ORA-01940: cannot drop a user that is currently connected

再次尝试成功

drop user user01 cascade;

User dropped.

注:如果删除项目较多较大的用户,卡在drop user user01 cascade 这个状态下的时间会比较久,我们可以通过下面语句查看项目是否在被删除

select count(*) from dba_objects where owner='USER01';

如果发现项目数很久不减少,可尝试重启实例后再执行删除操作(如生产环境需保证其他用户处于停机时间中)

2.创建用户

SQL> create user user01 identified by oracle default tablespace USERS temporary tablespace TEMP;

User created.

如果表空间不存在,需要先创建表空间

create tablespace 表间名 datafile '数据文件名' size 表空间大小
create tablespace test datafile '/oracle/oradata/test/test01.dbf' size 3000M;

添加数据文件

alter tablespace TEST add datafile '/oracle/oradata/test/test02.dbf' size 2000M;

临时表空间

alter tablespace TEMP add tempfile '/oracle/oradata/test/temp02.dbf' size 2000M;

3.给用户赋权

SQL> grant connect,resource,dba to user01;

Grant succeeded.

4.创建数据泵目录(此目录必须存在并赋权oracle用户)

SQL> create directory DBBAK as '/bak';

Directory created.

5.查看目录是否存在

SQL> select * from all_directories;

如果目录已存在,可以删除原有目录

SQL> drop directory DBBAK;

Directory dropped.

6.将目录赋权给用户

SQL> grant read,write on directory DBBAK to user01;

Grant succeeded.

7.导入用户数据

[oracle@test1 ~]$  impdp user01/oracle dumpfile=test20200616.dmp logfile=test20200616.log directory=DBBAK

如果需要指定表  tables=t1,t2

remap_table=t1:t11,t2:t22

注:我的dmp文件只备份的test用户数据,所以没使用schemas参数。

REMAP_SCHEMA=orcl:test    --orcl用户下面数据导入到test用户下  使用此参数

remap_tablespace=tablespace01:tablespace02     --如果导入用户对应的表空间为tablespace02 则使用此参数

TRANSFORM

导入和导出的时候,有些表空间不一样。比如导出的时候该对象是在A表空间,导入到另一个库没有表空间A就会报错。但是使用这个参数就会正常导入,该对象会存储在该用户下的默认表空间中。

常用TRANSFORM=segment_attributes:n

如果expdp时使用了parallel并行参数配合%U

RQ=`date +20%y-%m-%d`

expdp test/test dumpfile=test-$RQ-%U.dmp logfile=test-$RQ.log parallel=4 directory=BAK1 cluster=N schemas=user01,user02

impdp test/test dumpfile=test-2021-05-25-%U.dmp logfile=test20210525.log parallel=4 directory=BAK1 schemas=user01,user02

有时会用到transform=OID:N参数

数据泵参数详见ORACLE数据库数据泵备份与恢复

8.可以用下面这个SQL检查一下两边一致性

select OBJECT_TYPE,COUNT(*) from all_objects where OWNER='TEST' group by OBJECT_TYPE;

Oracle数据泵恢复用户数据实例的更多相关文章

  1. Oracle使用数据泵导入/导出数据(expdp/impdp)

    Oracle使用数据泵导入/导出数据(expdp/impdp) A电脑上的操作(expdp数据导出) 运行cmd: 登录数据库,输入命令:sqlplus 使用管理员角色登录需要在用户名后加" ...

  2. Oracle利用数据泵迁移用户

    一.利用数据泵将数据导出 1.1.确定字符集: select * from v$nls_parameters; 或 select userenv('language') from dual; 1.2. ...

  3. 将Oracle 12c的某用户数据迁移至OracleXE的用户

    前言:OracleXE全称为oracle database 11g express edition .Oracle Database 11g Express Edition是 Oracle 数据库的免 ...

  4. Oracle数据泵导入导出数据,建立表空

    Oracle11g 数据导入到oracle10g 中:1.在oracle11g 服务器命令行中用expdp 导出数据expdp ts/ts@orcl directory=expdp_dir dumpf ...

  5. 基于多用户的Oracle数据泵导入导出数据

    登陆SqlPlus: SqlPlus sys/syspwd@MyOrcl AS sysdba 其中:syspwd:sys的登陆密码:MyOrcl:所创建的数据库服务名. 创建数据泵: create o ...

  6. oracle11g 使用数据泵导出导入数据

    终于搞定了 快写个笔记 记录下. 删除用户的时候提示已经登录了不能删除,这个需要把登录的session结束掉. select username,sid,serial# from v$session w ...

  7. Oracle数据泵远程导入数据

    查看现存镜像目录 select * from dba_directories; 创建镜像目录 create or replace directory my_dir as 'local_dir' ; 把 ...

  8. oracle数据泵导入导出数据

    expdp 导出 1.管理员用户登入sqlplus sqlplus system/manger@pdb1 2.创建逻辑导出目录 create directory dpdata as '/home/or ...

  9. PLSQL_数据泵导入导出数据Impdp/ Expdp(概念)

    2014-08-31 Created By BaoXinjian

  10. Oracle数据泵的使用

    几乎所有DBA都熟悉oracle的导出和导入实用程序,它们将数据装载进或卸载出数据库,在oracle  database 10g和11g中,你必须使用更通用更强大的数据泵导出和导入(Data Pump ...

随机推荐

  1. JavaSE——String

    String类概述 String 类代表字符串,Java 程序中的所有字符串文字(例如"abc")都被实现为此类的实例.也就是说,Java 程序中所有的双引号字符串,都是 Stri ...

  2. element-ui组件Table排序(sort-by),某些数据无需排序

    在列中设置 sortable 属性即可实现以该列为基准的排序, 接受一个 Boolean,默认为 false. 可以通过 Table 的 default-sort 属性设置默认的排序列和排序顺序. 可 ...

  3. 蓝牙mesh组网实践(厂商透传模型介绍)

    目录 CH582的官方EVT中,除了代理节点例程和天猫精灵例程外都提供了厂商定义的透传模型. 模型位于蓝牙mesh网络协议中的最上层,负责标准化用户应用场景的实例,比如说开关模型.亮度模型.风速模型. ...

  4. JS中两个数组对象筛选

    const arr1 = [ {id: 1, name: 'aaa'}, {id: 2, name: 'bbb'}, {id: 3, name: 'ccc'}, {id: 4, name: 'ddd' ...

  5. filebeat+Elk实现日志收集并使用kibana展示

    工作流程图 通过Filegeat收集日志,将日志的数据推送到kafka然后通过logstash去消费发送到Es,再通过索引的方式将数据用kibana进行展示: 1.部署测试机器规划 ip       ...

  6. Mac安装Nvm Node开发环境

    1.什么是nvm? nvm 是 Mac 下的 node 管理工具,可以在同一台电脑上安装多个Node.js版本灵活切换. 2.安装前的准备 a. 卸载已安装到全局的 node/npm  如果之前是在官 ...

  7. 个人css样式_2: 渐变色

    css的魅惑力 css渐变色用途还是 比较广的. ---------------------------- 效果图: html代码(三个div): <div class="div1&q ...

  8. C语言标准 —— C89(C90)、C99、C11、C17、C2X

    https://blog.csdn.net/u010217055/article/details/128957497

  9. 黑马程序员Javaweb综合案例错误总结整理

    案例整理(呕心沥血的教训) 其他的我大部分还是不知道那里出了问了,我这个新建的项目must3终于成功了 那个品牌名称和企业名称没有,是要在BrandMapper里加注解@ResultMap 一直报那个 ...

  10. echarts 之 source and clone函数问题hasOwnProperty is not defined

    图表渲染时报错如下: echarts 实例的 setOption 方法用来加载/更新图表数据,setOption 方法内部首先使用了 zrender 的 clone 函数对 options 进行了拷贝 ...