当前位置: 代码网 > it编程>数据库>Oracle > Oracle数据库Schema备份与导入导出的全攻略

Oracle数据库Schema备份与导入导出的全攻略

2025年10月22日 Oracle 我要评论
一、schema 基础认知1. schema 的定义在 oracle 中,schema(模式)与用户(user)一一对应,一个用户默认对应一个 schema,用于存储表、视图、索引等数据库对象。例如s

一、schema 基础认知

1. schema 的定义

在 oracle 中,schema(模式)与用户(user)一一对应,一个用户默认对应一个 schema,用于存储表、视图、索引等数据库对象。例如scott用户对应的scottschema,包含该用户创建的所有对象。

2. 区分系统 schema 与业务 schema

  • 系统 schema:oracle 内置的核心组件,如syssystemmdsys等,用于支撑数据库运行,无需手动备份。
  • 业务 schema:用户创建的用于存储业务数据的 schema,如iuap_yondif_前缀的 schema,是备份的核心对象。

二、schema 备份工具:oracle data pump

oracle 推荐使用data pump(数据泵) 工具进行 schema 备份,相比传统exp/imp,其速度更快、功能更强大,支持按 schema、表、用户等维度灵活导出。核心命令为:

  • expdp:导出(备份)数据
  • impdp:导入(恢复)数据

三、schema 备份(expdp)实操指南

1. 准备工作:创建逻辑目录

data pump 需通过逻辑目录映射操作系统路径,步骤如下:

-- 以sysdba身份登录
sqlplus / as sysdba
 
-- 创建逻辑目录(示例:映射到/u01/backup)
create or replace directory backup_dir as '/u01/backup';
 
-- 授予导出用户读写权限(如system用户)
grant read, write on directory backup_dir to system;

2. 单个 schema 备份

命令格式:

expdp 用户名/密码@服务名 schemas=目标schema directory=逻辑目录 dumpfile=备份文件名.dmp logfile=日志名.log

示例(备份iuap_yms_data):

expdp system/ufgov1234@ufgovdb1 schemas=iuap_yms_data directory=backup_dir dumpfile=iuap_yms_data.dmp logfile=iuap_yms_data_exp.log

3. 多个 schema 批量备份

通过schemas参数指定多个 schema(逗号分隔):

expdp system/ufgov1234@ufgovdb1 
  schemas=iuap_yms_data,iuap_ipaas,yondif_ams_db 
  directory=backup_dir 
  dumpfile=multi_schemas.dmp 
  logfile=multi_schemas_exp.log 
  compression=all  # 启用压缩(11g及以上支持)

4. 处理大文件:自动拆分

当备份文件过大时,使用%u自动拆分(如超过 4gb):

expdp system/ufgov1234@ufgovdb1 
  schemas=业务schema列表 
  directory=backup_dir 
  dumpfile=all_schemas_%u.dmp  # 生成all_schemas_01.dmp、02.dmp等
  logfile=all_schemas_exp.log 
  parallel=4  # 并行导出,加快速度

四、schema 大小查询

备份前需了解 schema 占用空间,以便规划存储。查询所有 schema 大小(单位:gb):

select 
  u.username as schema_name,
  round(nvl(sum(s.bytes)/(1024*1024*1024), 0), 2) as size_in_gb
from 
  dba_users u
left join 
  dba_segments s on u.username = s.owner
group by 
  u.username
order by 
  size_in_gb desc;

五、schema 导入(impdp)操作

1. 导入单个备份文件

impdp system/ufgov1234@ufgovdb1 
  directory=backup_dir 
  dumpfile=multi_schemas.dmp 
  logfile=multi_schemas_imp.log

2. 导入多个不同名称的文件

通过dumpfile参数列出所有文件(逗号分隔):

impdp system/ufgov1234@ufgovdb1 
  directory=backup_dir 
  dumpfile=schema1.dmp,schema2.dmp,schema3.dmp 
  logfile=import_multi.log 
  parallel=3  # 并行度与文件数匹配

3. 关键参数说明

  • remap_schema:映射源 schema 到目标 schema(如remap_schema=old:new
  • table_exists_action:处理已存在对象(replace覆盖、append追加)
  • skip_unusable_indexes:跳过不可用索引,加速导入(skip_unusable_indexes=y

六、常见问题与解决方案

1. 导出失败:系统 schema 报错

部分系统 schema(如syssystemmdsys)禁止直接导出,需从备份列表中排除,仅保留业务 schema(如iuap_yondif_系列)。

2. 单个文件过大

  • 风险:超出文件系统限制、传输困难、恢复风险高。
  • 解决:使用%u自动拆分,或filesize指定单文件大小(如filesize=10g)。

3. 权限问题

  • 导出用户需exp_full_database角色,导入需imp_full_database角色。
  • 逻辑目录需授予读写权限(grant read, write on directory 目录名 to 用户)。

七、最佳实践总结

  1. 备份策略:业务低峰期执行,核心 schema 每日全量备份,搭配增量备份。
  2. 文件管理:启用压缩(compression=all),拆分大文件,避免单个文件超过 10gb。
  3. 日志校验:备份 / 导入后查看日志,确认successfully completed标识。
  4. 权限控制:严格区分系统与业务 schema,仅备份业务数据。

通过本文的方法,可高效完成 oracle schema 的备份与恢复,确保数据安全性与可恢复性。

以上就是oracle数据库schema备份与导入导出的全攻略的详细内容,更多关于oracle schema备份与导入导出的资料请关注代码网其它相关文章!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com