Oracle数据泵逻辑备份恢复,全在这里了

798 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第26天,点击查看活动详情

📢📢📢📣📣📣
哈喽!大家好,我是【IT邦德】,江湖人称jeames007,10年DBA工作经验
中国DBA联盟(ACDU)成员,目前从事DBA及程序编程😜😜😜
擅长Oracle、MySQL、PG 运维开发,备份恢复,安装迁移,性能优化、故障应急处理等。
❤️❤️❤️感谢各位大可爱小可爱!❤️❤️❤️

摘要:本次对Oracle的逻辑备份恢复做了详细说明

  1. 数据泵技术

简称:expdp/impdp

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

\

SYS@PROD>col directory_name for a25

col DIRECTORY_PATH for a80

select directory_name,directory_path from dba_directories;

  1. 备份恢复实战

#创建目录
[oracle@MES ~]$ mkdir -p /home/oracle/dmpbak
#建立directory
SYS@PROD> create or replace directory dmpbak as '/home/oracle/dmpbak';
SYS@PROD> drop directory dmpbak;  --删除目录
#确认是否创建
SYS@PROD> select directory_name,directory_path from dba_directories;
#授权
SYS@PROD> 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

#模拟故障恢复表

表误删除:

SCOTT@PROD>drop table emp purge;

SCOTT@PROD>drop table dept purge;

导入恢复:

[oracle@MES ~]$ impdp scott/tiger directory=dmpbak dumpfile=expdp_emp_dept.dmp logfile=impdp_emp_dept.log

\

#拓展
导出表中部分行
expdp scott/tiger directory=dmpbak dumpfile=expdp_emp.dmp tables=emp query="'where deptno = 10'"

#remap_table
impdp scott/tiger directory=dmpbak dumpfile=expdp_emp.dmp logfile=impdp_remap.log remap_table=emp:emp10
2.2 用戶的备份恢复

#导出 scott用户

[oracle@MES ~]$ expdp system/oracle directory=dmpbak dumpfile=scott.dmp logfile=scott.log schemas=scott

#恢复用户

方法1:

[oracle@MES ~]$ impdp system/oracle directory=dmpbak dumpfile=scott.dmp logfile=impdp_scott.log remap_schema=scott:jeame

以上操作会创建新用户

SYSTEM@PROD> select a.username from dba_users a where a.username ='JEAME';

SYSTEM@PROD> conn jeame/tiger

JEAME@PROD> select table_name from user_tables;

方法2:

drop user scott cascade;

impdp system/oracle directory=dmpbak dumpfile=scott.dmp logfile=impdp_scott.log schemas=scott

SYS@PROD> select a.username from dba_users a where a.username ='SCOTT';

##拓展
#system默认:manager,sys默认:change_on_install
SYS,SYSTEM用户的密码都忘记,怎么办?
sqlplus /nolog;
connect / as sysdba
alter user sys identified by newpassword;
alter user system identified by newpassword;
2.3 数据库的备份恢复

#导出整个数据库

[oracle@MES ~]$ expdp system/oracle directory=dmpbak dumpfile=full.dmp full=y logfile=full.log

#导入整个数据库(向其他数据库做迁移)

[oracle@MES ~]$ impdp system/oracle directory=dmpbak dumpfile=full.dmp logfile=impdp_full.log full=y

相关推荐阅读: MySQL8.0新特性抢先看,性能又双叒提升了
MySQL武林秘籍,SQL学废必过考试
Linux7.6源码安装Mysql8
Oracle巡检脚本大全,服务器可直接部署
MySQL root密码忘记找回妙招
监控神器Zabbix,从部署到应用
Oracle监听日志清除

大家可以点赞、收藏、关注、评论我啦 、有数据库相关的问题随时联系我或交流哟~!