找回密码
 立即注册
首页 业界区 安全 Oracle逻辑备份与数据迁移技术详解

Oracle逻辑备份与数据迁移技术详解

搁胱 2025-11-21 11:50:01
一、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
  1. expdp scott/tiger attach=scott.export_job
复制代码
在客户会话与已存在导出作业间建立关联。
CLUSTER
11gR2后worker进程会在多个instance启动,需确保DIRECTORY在共享磁盘上。
COMPRESSION
  1. COMPRESSION=ALL          # 压缩元数据和对象数据
  2. COMPRESSION=DATA_ONLY    # 仅压缩对象数据
  3. COMPRESSION=METADATA_ONLY # 仅压缩元数据
  4. COMPRESSION=NONE         # 不压缩
复制代码
CONTENT
  1. CONTENT=ALL              # 导出对象定义及数据
  2. CONTENT=DATA_ONLY        # 仅导出数据
  3. CONTENT=METADATA_ONLY    # 仅导出结构
复制代码
DIRECTORY
  1. CREATE OR REPLACE DIRECTORY backup AS '/opt/oracle/utl_file';
  2. GRANT READ,WRITE ON DIRECTORY backup TO system;
复制代码
重要参数列表:

  • DUMPFILE:指定转储文件名
  • ENCRYPTION:数据加密选项
  • ESTIMATE:估算磁盘空间方法
  • EXCLUDE/INCLUDE:排除/包含特定对象
  • PARALLEL:并行进程数(通常为CPU的2倍)
  • QUERY:数据过滤条件
  • REMAP_DATA:数据转换函数
二、项目案例实践

2.1 按用户迁移数据案例

源端环境分析

表空间信息:
  1. SELECT DISTINCT tablespace_name
  2. FROM dba_segments
  3. WHERE owner IN ('SMP','SMP2','WGSMS');
复制代码
数据量统计:
  1. SELECT owner,tablespace_name,ROUND(SUM(bytes)/1024/1024,0) size_MB
  2. FROM dba_segments
  3. WHERE owner IN ('SMP','SMP2','WGSMS')
  4. GROUP BY owner,tablespace_name
  5. ORDER BY 1,3;
复制代码
对象数量检查:
  1. SELECT owner,COUNT(*)
  2. FROM dba_objects
  3. WHERE owner IN ('SMP','SMP2','WGSMS')
  4. GROUP BY owner;
复制代码
目标端准备

创建表空间示例:
  1. -- 创建TS_EVENT_IDX1表空间
  2. CREATE TABLESPACE TS_EVENT_IDX1
  3. DATAFILE '+DATA/NGS4ADB/DATAFILE/ts_event_idx1001.dbf'
  4. SIZE 30G AUTOEXTEND OFF;
  5. -- 大表空间添加数据文件
  6. ALTER TABLESPACE RA_TBS
  7. ADD DATAFILE '+DATA/NGS4ADB/DATAFILE/ra_tbs002.dbf'
  8. SIZE 30G AUTOEXTEND OFF;
复制代码
数据迁移操作

源端导出:
  1. expdp dw_wl/sweet_0807 directory=dump_dir dumpfile=WGSMS_20201103.dmp \
  2. logfile=WGSMS_20201103.log schemas=wgsms cluster=no
  3. expdp dw_wl/sweet_0807 directory=dump_dir dumpfile=SMP_20201103.dmp \
  4. logfile=SMP_20201103.log schemas=SMP cluster=no parallel=4
复制代码
目标端导入:
  1. impdp dw_wl/sweet_0807 directory=dump_dir dumpfile=WGSMS_20201103.dmp \
  2. logfile=IMWGSMS_20201103.log schemas=wgsms cluster=no
复制代码
2.2 通过DBLINK数据不落地迁移

环境配置

创建DBLINK:
  1. CREATE PUBLIC DATABASE LINK to_100
  2. CONNECT TO VIDEO_MANAGE IDENTIFIED BY qwerasdf
  3. USING 'rzasm';
复制代码
测试连接:
[code]SELECT * FROM tab@to_100 WHERE ROWNUM

相关推荐

您需要登录后才可以回帖 登录 | 立即注册