Oracle数据泵恢复用户数据实例
我们测试环境经常会遇到恢复生产数据的情况,我一般比较习惯使用数据泵来搞,这个具体根据自己的业务形态选择适合自己的方式。
此次我们说的是完全恢复用户数据,具体步骤如下:
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数据泵恢复用户数据实例的更多相关文章
- Oracle使用数据泵导入/导出数据(expdp/impdp)
Oracle使用数据泵导入/导出数据(expdp/impdp) A电脑上的操作(expdp数据导出) 运行cmd: 登录数据库,输入命令:sqlplus 使用管理员角色登录需要在用户名后加" ...
- Oracle利用数据泵迁移用户
一.利用数据泵将数据导出 1.1.确定字符集: select * from v$nls_parameters; 或 select userenv('language') from dual; 1.2. ...
- 将Oracle 12c的某用户数据迁移至OracleXE的用户
前言:OracleXE全称为oracle database 11g express edition .Oracle Database 11g Express Edition是 Oracle 数据库的免 ...
- Oracle数据泵导入导出数据,建立表空
Oracle11g 数据导入到oracle10g 中:1.在oracle11g 服务器命令行中用expdp 导出数据expdp ts/ts@orcl directory=expdp_dir dumpf ...
- 基于多用户的Oracle数据泵导入导出数据
登陆SqlPlus: SqlPlus sys/syspwd@MyOrcl AS sysdba 其中:syspwd:sys的登陆密码:MyOrcl:所创建的数据库服务名. 创建数据泵: create o ...
- oracle11g 使用数据泵导出导入数据
终于搞定了 快写个笔记 记录下. 删除用户的时候提示已经登录了不能删除,这个需要把登录的session结束掉. select username,sid,serial# from v$session w ...
- Oracle数据泵远程导入数据
查看现存镜像目录 select * from dba_directories; 创建镜像目录 create or replace directory my_dir as 'local_dir' ; 把 ...
- oracle数据泵导入导出数据
expdp 导出 1.管理员用户登入sqlplus sqlplus system/manger@pdb1 2.创建逻辑导出目录 create directory dpdata as '/home/or ...
- PLSQL_数据泵导入导出数据Impdp/ Expdp(概念)
2014-08-31 Created By BaoXinjian
- Oracle数据泵的使用
几乎所有DBA都熟悉oracle的导出和导入实用程序,它们将数据装载进或卸载出数据库,在oracle database 10g和11g中,你必须使用更通用更强大的数据泵导出和导入(Data Pump ...
随机推荐
- Oracle 验证身份证号
--验证身份证号是否正确CREATE OR REPLACE FUNCTION fn_checkidcard (p_idcard IN VARCHAR2) RETURN INT IS v_regstr ...
- docker 部署mongodb 并建立用户和授权数据库
docker pull mongo:4.4.8 (拉取镜像) docker run --name mongo -v /data/mongo-data:/data/db -p 27018:27017 - ...
- Request processing failed;
用 ssm 框架修改数据库数据时,出现了 Request processing failed; nested exception is org.mybatis.spring.MyBatisSystem ...
- GET请求数据量大造成的问题
在实际的开发过程中,我们偶尔或者遇到过要导出列表中所有的数据.假设列表中有十万条数据,那么导出所有,意味着要大批量的走查询接口,通常我们的后台的API接口GET请求支持的查询长度不得大于1000,(比 ...
- CCF 201909-2 小明种苹果(续)
#include <iostream> #include <bits/stdc++.h> #include <string> using namespace std ...
- wget 多线程下载 mwget 工具安装
# for centos mini #yum -y install gcc-c++ intltool libssl-dev yum -y install gcc-c++ intltool openss ...
- Day23:个人小结的撰写&&对coderunner的熟悉
今日完成的任务: 1.完成个人小结的撰写 2.阅读Moodle文档,了解Moodle平台以及Moodle出题格式 明日计划: 1.撰写总报告中的结论 2.将插件安装完成 每日小结: 为了研究题库,特 ...
- springcloud(六) - 配置中心
功能介绍 设置和业务代码获取配置 功能实现 <!-- 添加configjar --> <dependency> <groupId>org.springframewo ...
- windows下MinGW64编译环境设置
windows下MinGW64编译环境设置 1. MinGW 介绍 MinGW 的全称是:Minimalist GNU on Windows .是将经典的开源 C语言 编译器 GCC 移植到了 Win ...
- python中的KeyError报错
from util import str_util #业务逻辑:兼容不同的结构体:resCode转化数据 #检查字典中是否存在键 if 'resCode' not in resultJson if ' ...