文章目录

  • 1. 逻辑备份类型
  • 2. 备份方式
  • 3. EXPDP/IMPDP 数据泵
  • 4. 使⽤数据泵
  • 5. 查看和恢复备份⽂件
  • 模拟emp、dept表丢失
  • 模拟数据丢失,但数据表结构还在(空表)
  • 导出表中的部分行
  • remap_table 导⼊为其他表名
  • 按用户导出
  • 按表空间导出
  • 导出数据库
  • 查看程序运⾏情况


技术分类

特点

优点

缺点

备注

物理备份

冷备

以块为单位进行备份,简单轻易,完全恢复停机时刻点的

SCN数据一致,ARCH归档完整,容易维护

DB、OS版本必须一致,维护时业务需要下线

读写分离

热备RMAN

可以多种类型的备份,全备、差异、增量

可以并行,恢复速度快,备份时不影响业务,可以恢复到指定时间点

维护麻烦

读写分离

逻辑备份

EXP/IMP

语句级别备份

整理数据碎片,不可以并行,可以跨平台

无法追全数据

校验字符集,指定用户,,,,创建用户,重定义参数,如用户,表空间等。数据校验很困难。【OGG/DSG/shareplex数据校验困难。】

EXPDP/I MPDP

三种备份方式:表备份、用户备份、数据库备份

比EXP/IMP更加优化,以及定义灵活

用户以及表空间,还有存储位置,不重新创建或指定,是空的。

同上

数据容灾

物理方式:DG

逻辑方式:OGG

1. 逻辑备份类型

exp / imp
expdp / imp
EXP vs 数据泵
导出⼯具将数据库中数据备份压缩成⼀个⼆进制系统⽂件.可以在不同OS间迁移
10g 版本之前都是exp⼯具
11g版本后新增expdp

它有三种模式:

  • ⽤户模式: 导出⽤户所有对象以及对象中的数据;
  • 表模式: 导出⽤户所有表或者指定的表;
  • 整个数据库: 导出数据库中所有对象。

2. 备份方式

EXP导出

  1. 将数据库完全导出
    exp "/ as sysdba\” file=/home/oracle/dmp01.dmp full=y
  2. 将数据库中system⽤户与sys⽤户的表导出
    exp "/ as sysdba\” file=/home/oracle/dmp/dmp02.dmp
    owner=system,sys
  3. 将数据库中的表table1 、table2导出
    exp "/ as sysdba\” file=/home/oracle/dmp03.dmp
    tables=table1,table2

IMP导入

  1. 将数据库完全导出
    imp "/ as sysdba\” file=/home/oracle/dmp/dmp01.dmp full=y
  2. 将数据库中system⽤户与sys⽤户的表导出
    imp "/ as sysdba\” file=/home/oracle/dmp/dmp02.dmp owner=scott
    imp "/ as sysdba\” fromuser=scott touser=new_scott ignore=y
    file=home/oracle/dmp/dmp02.dmp full=y
  3. 将数据库中的表table1 、table2导出
    imp "/ as sysdba\” file=/home/oracle/dmp/dmp03.dmp
    tables=table1,table2
    exp help=y 帮助命令
    imp help=y

3. EXPDP/IMPDP 数据泵

用处

  • 将数据库从开发环境转到测试环境
  • 在不同操作系统平台上的Oracle数据库之间传递数据
  • 在修改重要的表之前进⾏备份
  • 备份数据库

相比EXP的优点

  • 并行处理数据
  • 把数据库对象从⼀个表空间移动到另⼀个表空间
  • 在数据库之间移植表空间
  • 重新组织零散的表数据
  • 提取表和其他对象的DDL

数据泵的组成部分

  • 数据泵核⼼部分程序包 : DBMS_DATAPUMP
  • 提供元数据的程序包 : DBMS_MATADATA
  • 命令⾏客户机(实⽤程序) : EXPDP,IMPDP

数据泵的文件

  • 数据1转储⽂件:此⽂件包含对象数据
  • ⽇志⽂件:记录操作信息和结果
  • SQL ⽂件: 将导⼊作业中的 DDL 语句写⼊ SQLFILE 指定的参数⽂件中

数据泵的⽬录

  • $ORACLE_BASE/admin/SID/dpdump
  • $ORACLE_HOME/admin/SID/dpdump
  • 也可以指定⾃定义创建的 directory

对expdp/impdp是在Oracle10G之后才出现;
相⽐exp/imp;在功能和效率⽅⾯有巨⼤的提升。
• ⽀持并⾏
• ⽀持任务的暂停和重启动
• ⽀持对象的

4. 使⽤数据泵

  1. 在服务器上创建⽬录

mkdir -p ~/dmp_dir

  1. 在数据库上创建逻辑⽬录
create directory dmp_dir as ‘/home/oracle/dmp_dir’;
grant read,write on directory dmp_dir to user01;
grant all on directory dmp_dir to public;
col directory_name for a25
_col DIRECTORY_PATH for a80
select directory_name,directory_path from dba_directories; — 查看⽬录
  1. 执⾏数据泵
[oracle@vm01 ~]$ expdp help=y
 Example: expdp scott/tiger DIRECTORY=dmpdir DUMPFILE=scott.dmp
You can control how Export runs by entering the 'expdp' command
followed
by various parameters. To specify parameters, you use keywords:
 Format: expdp KEYWORD=value or
KEYWORD=(value1,value2,...,valueN)
 Example: expdp scott/tiger DUMPFILE=scott.dmp DIRECTORY=dmpdir
SCHEMAS=scott
 or TABLES=(T1:P1,T1:P2), if T1 is partitioned tab
[oracle@vm01 ~]$ impdp help=y
 Example: impdp scott/tiger DIRECTORY=dmpdir DUMPFILE=scott.dmp
You can control how Import runs by entering the 'impdp' command
followed
by various parameters. To specify parameters, you use keywords:
 Format: impdp KEYWORD=value or
KEYWORD=(value1,value2,...,valueN)
 Example: impdp scott/tiger DIRECTORY=dmpdir DUMPFILE=scott.d

导出scott⽤户

expdp scott/tiger directory=dmp_dir dumpfile=expdp_scott1.dmp
tables=emp,dept

5. 查看和恢复备份⽂件

ls /home/oracle/dmp_dir

模拟emp、dept表丢失

drop table emp purge;
drop table dept purge;

  • 导⼊scott⽤户
    impdp scott/tiger directory=dmp_dir dumpfile=expdp_scott1.dmp
  • 仅导出user01下t1的数据,不导出表结构
    expdp dd/dd directory=dmp_dir dumpfile=expdp_user01.dmp tables=tabo
    _content=data_only reuse_dumpfiles=y

模拟数据丢失,但数据表结构还在(空表)

truncate table t1;

导⼊数据
impdp dd/dd directory=dmp_dir dumpfile=expdp_user01.dmp

导出表中的部分行

expdp scott/tiger directory=dmp_dir dumpfile=expdp_part.dmp
_tables=emp query="‘where deptno = 10’"

remap_table 导⼊为其他表名

impdp scott/tiger directory=dmp_dir dumpfile=expdp_part.dmp
remap_table=emp:emp10

按用户导出

expdp “/ as sysdba” SCHEMAS=dd
dumpfile=expdp_user_201812.dmp logfile=expdp_user_201812.log
directory=dmp_dir

使⽤ remap 将对象导⼊其他⽤户名
impdp “/ as sysdba” directory=dmp_dir
_dumpfile=expdp_user_201812.dmp remap_schema=dd:test

按表空间导出

expdp “/ as sysdba” tablespaces=users
dumpfile=expdp_tbs_users_201812.dmp
___logfile=expdp_tbs_users_201812.log directory=dmp_dir
job_name=exp_tab

使⽤ remap_tablespace 将对象导⼊其他⽤户名
impdp “/ as sysdba” directory=dmp_dir
_dumpfile=expdp_user_201812.dmp remap_tablespace
=users:new__users

导出数据库

expdp “/ as sysdba” dumpfile=expdp_full.dmp full=y
_logfile=expdp_db_201812.log directory=dmp_dir

impdp “/ as sysdba” dumpfile=expdp_full.dmp
_logfile=impdp_db_201812.log directory=dmp_dir

查看程序运⾏情况

expdp “/ as sysdba” attach=SYS_EXPORT_SCHEMA_01