一、Oracle逻辑备份概念
1.1 物理备份概述
物理备份是所有物理文件的一个副本,包括数据文件、日志文件、控制文件、归档文件等。这些文件存储在本地磁盘或相应存储设备上,可分为:
- 冷备份:在非归档模式下进行,需要关闭数据库
- 热备份:在归档模式下进行,数据库可保持运行状态
1.2 逻辑备份
逻辑备份是通过导出表、索引、存储过程等对象到二进制文件的方式实现。使用Oracle的exp/expdp工具导出,再通过imp/impdp工具导入数据库。逻辑备份主要应用于数据迁移场景,是对物理备份的重要补充。
1.3 Oracle exp/imp工具介绍
作为Oracle最古老的命令行工具,exp/imp在以下场景中发挥重要作用:
- 小型数据库转储
- 表空间迁移
- 表数据抽取
- 逻辑和物理冲突检测
但随着TB级数据库和数据仓库的普及,exp/imp逐渐被RMAN和第三方工具取代。
1.4 Oracle expdp/impdp工具介绍
Oracle 10g引入的数据泵(expdp/impdp)工具,通过并行处理大幅提升了效率,现已基本替代传统的exp/imp工具。
1.5 数据泵实现功能
- 逻辑备份和逻辑恢复
- 数据库用户间对象迁移
- 数据库间对象迁移
- 表空间搬移
1.6 数据泵与传统导出导入的区别
特性exp/impexpdp/impdp运行位置客户端/服务端仅服务端文件兼容性不兼容expdp文件不兼容exp文件导出方式导出表、方案、表空间、数据库四种导出方式1.7 数据泵工作流程
- 命令行执行命令
- 调用dbms_datapump PL/SQL包
- 自动选择数据传输机制(direct path或external table)
- 元数据通过dbms_metadata包以XML格式存储
- 支持客户端断开后服务端继续执行
1.8 expdp/impdp命令参数详解
主要参数说明:
ATTACH- expdp scott/tiger attach=scott.export_job
复制代码 在客户会话与已存在导出作业间建立关联。
CLUSTER
11gR2后worker进程会在多个instance启动,需确保DIRECTORY在共享磁盘上。
COMPRESSION- COMPRESSION=ALL # 压缩元数据和对象数据
- COMPRESSION=DATA_ONLY # 仅压缩对象数据
- COMPRESSION=METADATA_ONLY # 仅压缩元数据
- COMPRESSION=NONE # 不压缩
复制代码 CONTENT- CONTENT=ALL # 导出对象定义及数据
- CONTENT=DATA_ONLY # 仅导出数据
- CONTENT=METADATA_ONLY # 仅导出结构
复制代码 DIRECTORY- CREATE OR REPLACE DIRECTORY backup AS '/opt/oracle/utl_file';
- GRANT READ,WRITE ON DIRECTORY backup TO system;
复制代码 重要参数列表:
- DUMPFILE:指定转储文件名
- ENCRYPTION:数据加密选项
- ESTIMATE:估算磁盘空间方法
- EXCLUDE/INCLUDE:排除/包含特定对象
- PARALLEL:并行进程数(通常为CPU的2倍)
- QUERY:数据过滤条件
- REMAP_DATA:数据转换函数
二、项目案例实践
2.1 按用户迁移数据案例
源端环境分析
表空间信息:- SELECT DISTINCT tablespace_name
- FROM dba_segments
- WHERE owner IN ('SMP','SMP2','WGSMS');
复制代码 数据量统计:- SELECT owner,tablespace_name,ROUND(SUM(bytes)/1024/1024,0) size_MB
- FROM dba_segments
- WHERE owner IN ('SMP','SMP2','WGSMS')
- GROUP BY owner,tablespace_name
- ORDER BY 1,3;
复制代码 对象数量检查:- SELECT owner,COUNT(*)
- FROM dba_objects
- WHERE owner IN ('SMP','SMP2','WGSMS')
- GROUP BY owner;
复制代码 目标端准备
创建表空间示例:- -- 创建TS_EVENT_IDX1表空间
- CREATE TABLESPACE TS_EVENT_IDX1
- DATAFILE '+DATA/NGS4ADB/DATAFILE/ts_event_idx1001.dbf'
- SIZE 30G AUTOEXTEND OFF;
- -- 大表空间添加数据文件
- ALTER TABLESPACE RA_TBS
- ADD DATAFILE '+DATA/NGS4ADB/DATAFILE/ra_tbs002.dbf'
- SIZE 30G AUTOEXTEND OFF;
复制代码 数据迁移操作
源端导出:- expdp dw_wl/sweet_0807 directory=dump_dir dumpfile=WGSMS_20201103.dmp \
- logfile=WGSMS_20201103.log schemas=wgsms cluster=no
- expdp dw_wl/sweet_0807 directory=dump_dir dumpfile=SMP_20201103.dmp \
- logfile=SMP_20201103.log schemas=SMP cluster=no parallel=4
复制代码 目标端导入:- impdp dw_wl/sweet_0807 directory=dump_dir dumpfile=WGSMS_20201103.dmp \
- logfile=IMWGSMS_20201103.log schemas=wgsms cluster=no
复制代码 2.2 通过DBLINK数据不落地迁移
环境配置
创建DBLINK:- CREATE PUBLIC DATABASE LINK to_100
- CONNECT TO VIDEO_MANAGE IDENTIFIED BY qwerasdf
- USING 'rzasm';
复制代码 测试连接:
[code]SELECT * FROM tab@to_100 WHERE ROWNUM |