一、schema 基础认知
1. schema 的定义
在 oracle 中,schema(模式)与用户(user)一一对应,一个用户默认对应一个 schema,用于存储表、视图、索引等数据库对象。例如scott用户对应的scottschema,包含该用户创建的所有对象。
2. 区分系统 schema 与业务 schema
- 系统 schema:oracle 内置的核心组件,如
sys、system、mdsys等,用于支撑数据库运行,无需手动备份。 - 业务 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(如sys、system、mdsys)禁止直接导出,需从备份列表中排除,仅保留业务 schema(如iuap_、yondif_系列)。
2. 单个文件过大
- 风险:超出文件系统限制、传输困难、恢复风险高。
- 解决:使用
%u自动拆分,或filesize指定单文件大小(如filesize=10g)。
3. 权限问题
- 导出用户需
exp_full_database角色,导入需imp_full_database角色。 - 逻辑目录需授予读写权限(
grant read, write on directory 目录名 to 用户)。
七、最佳实践总结
- 备份策略:业务低峰期执行,核心 schema 每日全量备份,搭配增量备份。
- 文件管理:启用压缩(
compression=all),拆分大文件,避免单个文件超过 10gb。 - 日志校验:备份 / 导入后查看日志,确认
successfully completed标识。 - 权限控制:严格区分系统与业务 schema,仅备份业务数据。
通过本文的方法,可高效完成 oracle schema 的备份与恢复,确保数据安全性与可恢复性。
以上就是oracle数据库schema备份与导入导出的全攻略的详细内容,更多关于oracle schema备份与导入导出的资料请关注代码网其它相关文章!
发表评论