文章目录
技术分类 | 特点 | 优点 | 缺点 | 备注 | |
---|---|---|---|---|---|
物理备份 | 冷备 | 以块为单位进行备份,简单轻易,完全恢复停机时刻点的 | 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导出
- 将数据库完全导出
exp "/ as sysdba\” file=/home/oracle/dmp01.dmp full=y - 将数据库中system⽤户与sys⽤户的表导出
exp "/ as sysdba\” file=/home/oracle/dmp/dmp02.dmp
owner=system,sys - 将数据库中的表table1 、table2导出
exp "/ as sysdba\” file=/home/oracle/dmp03.dmp
tables=table1,table2
IMP导入
- 将数据库完全导出
imp "/ as sysdba\” file=/home/oracle/dmp/dmp01.dmp full=y - 将数据库中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 - 将数据库中的表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. 使⽤数据泵
- 在服务器上创建⽬录
mkdir -p ~/dmp_dir
- 在数据库上创建逻辑⽬录
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; — 查看⽬录
- 执⾏数据泵
[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