天天看点

Oracle逻辑备份恢复-数据泵前言

作者:IT邦德
中国DBA联盟(ACDU)成员,目前从事DBA及程序编程
(Web\java\Python)工作,主要服务于生产制造
现拥有 Oracle 11g  OCP/OCM、
Mysql、Oceanbase(OBCA)认证
分布式TBase\TDSQL数据库、国产达梦数据库以及红帽子认证
从业8年DBA工作,在数据库领域有丰富的经验
B站主播Oracle、Mysql、PG实战课程,请搜索:jeames007

微信:jem_db
QQ:2243967774
详情关注公众号:IT邦德 
QQ群:168797397、587159446
           
Oracle逻辑备份恢复-数据泵前言

前言

本次给大家分享Oracle数据泵逻辑恢复的案例

关注公众号:IT邦德,获取更多资料

Oracle逻辑备份恢复-数据泵前言

1.数据泵技术

1.1 数据泵组成部分
①数据泵核心部分程序包:DBMS_DATAPUMP
②提供元数据的程序包:DBMS_MATADATA
③命令行客户机(实用程序):EXPDP,IMPDP

1.2 数据泵文件
①转储文件:此文件包含对象数据
②日志文件:记录操作信息和结果
③SQL 文件: 将导入作业中的 DDL 语句写入 SQLFILE 指定的参数文件中

1.3 数据泵的目录及文件位置
以 sys 或 system 用户完成数据泵的导入导出时,可以使用缺省的目录 DATA_PUMP_DIR
如果设置了环境变量 ORACLE_BASE,则 DATA_PUMP_DIR 缺省目录位置是:
$ORACLE_BASE/admin/database_name/dpdump
否则是:
$ORACLE_HOME/admin/database_name/dpdump
也可以指定自定义创建的 directory

[email protected]>col directory_name for a25
col DIRECTORY_PATH for a80
select directory_name,directory_path from dba_directories;

           
Oracle逻辑备份恢复-数据泵前言

2. 备份恢复实战

#创建目录
[[email protected] ~]$ mkdir -p /home/oracle/dmpbak
#建立directory
[email protected]> create or replace directory dmpbak as '/home/oracle/dmpbak';
[email protected]> drop directory dmpbak;  --删除目录
#确认是否创建
[email protected]> select directory_name,directory_path from dba_directories;
#授权
[email protected]> grant read,write on directory dmpbak to scott;
grant all on directory dmpbak to public;   --所有用户授权
#确认授权
select * from dba_tab_privs where GRANTEE = 'SCOTT';
#dump job执行查询
select * from dba_datapump_jobs
           

2.1 表的备份恢复

#导出 scott 的 的 emp dept 表
expdp scott/tiger directory=dmpbak dumpfile=expdp_emp_dept.dmp logfile=expdp_emp_dept.log tables=emp,dept
           
Oracle逻辑备份恢复-数据泵前言
#模拟故障恢复表
表误删除:
[email protected]>drop table emp purge;
[email protected]>drop table dept purge;
导入恢复:
[[email protected] ~]$ impdp scott/tiger directory=dmpbak dumpfile=expdp_emp_dept.dmp logfile=impdp_emp_dept.log
           
Oracle逻辑备份恢复-数据泵前言

2.2 用戶的备份恢复

#导出 scott用户
[[email protected] ~]$ expdp system/oracle directory=dmpbak dumpfile=scott.dmp logfile=scott.log schemas=scott
           
Oracle逻辑备份恢复-数据泵前言
#恢复用户
方法1:
[[email protected] ~]$ impdp system/oracle directory=dmpbak dumpfile=scott.dmp logfile=impdp_scott.log remap_schema=scott:jeame      
以上操作会创建新用户
           
Oracle逻辑备份恢复-数据泵前言
[email protected]> select a.username from dba_users a where a.username ='JEAME';
[email protected]> conn jeame/tiger
[email protected]> select table_name from user_tables;
           
Oracle逻辑备份恢复-数据泵前言
方法2:
drop user scott cascade;
impdp system/oracle directory=dmpbak dumpfile=scott.dmp logfile=impdp_scott.log schemas=scott
[email protected]> select a.username from dba_users a where a.username ='SCOTT';
           
Oracle逻辑备份恢复-数据泵前言

2.3 数据库的备份恢复

#导出整个数据库
[[email protected] ~]$ expdp system/oracle directory=dmpbak dumpfile=full.dmp full=y logfile=full.log
           
Oracle逻辑备份恢复-数据泵前言
#导入整个数据库(向其他数据库做迁移)
[[email protected] ~]$ impdp system/oracle directory=dmpbak dumpfile=full.dmp logfile=impdp_full.log full=y
           

本文如有错误或不完善的地方请大家多多指正,留言或 QQ 皆可,您的批评指正是我写作的最大动力!