Oracle11g或19c imp/impdp导入记录

本文详细介绍了如何使用 imp 和 impdp 命令在 Oracle 数据库中进行数据导入导出,包括创建目录对象、指定导入参数以及解决常见问题。重点强调了目录路径、dump 文件处理和覆盖导入的操作步骤。

imp:
imp ‘bgisample/“密码”’@127.0.0.1/helowin file=/opt/backup/oracle/sample2020-08-15.dmp full=y ignore=y
imp简单不过多描述。

impdb:

  1. 先把dump传到你服务器上,如果是docker需要从宿主机传到docker中。
  2. 把dump或dmp文件传到/home/oracle下,确保oracle用户有权限
  3. 创建路径,impdb有点特殊。create directory IRMS_DP_PATH as ‘/home/oracle/backup/’;
    创建完后查询select * from dba_directories;
  4. .导入语句:
    impdp 用户名/密码@127.0.0.1/ORCLPDB1 directory=IRMS_DP_PATH dumpfile=exp0820_01.dmp,exp0820_02.dmp,exp0820_03.dmp,exp0820_04.dmp,exp0820_05.dmp,exp0820_06.dmp table_exists_action=replace transform=segment_attributes:n full=y

注意项项:
1)directory是你创建的数据库路径。
2)dumpfile如果有多个需要全部指定,否则报主表不存在
3)table_exists_action是覆盖导入
4)transform加上这个参数后,就会倒进用户默认的表空间,否则会报表空间或base object type TABLE:“xxxx” creation failed之类,参考:建议参考

其它问题:
cannot locate master table within provided dump files 参考以上第3条。

<think>嗯,用户提出了一个非常具体的Oracle数据库导入问题,涉及高版本(19c)向低版本(11g)的数据迁移。这类问题在实际运维中很常见,用户可能是个DBA者系统维护人员,正面临数据迁移的紧急任务。从引用内容看,用户已经做了功课:知道直接导入会报"头部验证失败"错误,也注意到版本兼容性问题。但引用资料给的解决方案比较零散,需要我整合成完整流程。用户最需要的应该是一个可操作的、步骤明确的指南。专业层面,这问题需要处理三个关键点:首先是版本冲突,核心解决方案是通过高版本数据库重新导出为低版本格式。引用3展示了用EXPDP的version参数,这是正确的技术方向,但需要补充完整语法。其次是用户权限问题,引用4提到目录权限设置很重要,这个细节新手容易忽略。最后是表空间兼容性,引用3创建临时表空间的例子值得参考,但要提醒用户注意11g的文件路径可能不同。在整理步骤时,应该强调几个风险点:1重新导出时要求源库版本必须高于目标库211g的EXPDP版本上限是11.2.0.4.0,对应导出参数用11.23必须严格检查表空间名称和路径用户可能不知道11g最高支持导入11.2格式,这点要重点说明。考虑到用户要实际操作,应该把导出命令拆解得更清晰:比如用具体例子展示version=11.2的用法,提醒替换schemas等参数。导入部分引用4的remap_schema示例很实用,但要说明源/目标用户名不同时的处理技巧。安全方面需要特别提醒:不要用SYSDBA执行常规导入导出,避免权限过大引发安全问题。表空间自动扩展的示例(引用3)可以保留,但要说明这是可选项。</think> 在 Oracle 11g 中导入 Oracle 19c 导出的 `.dmp` 文件,核心挑战是**高版本文件头部格式不被低版本识别**。以下是完整解决方案和操作步骤: --- ### **一、问题根源** - Oracle 低版本无法直接读取高版本导出的文件头信息(如 `EXPDP` 导出的 19c dmp 文件在 11g 中报错 `“不是有效的导出文件,头部验证失败”`)[^1]。 - **关键限制**:Oracle 11g 最高仅支持导入 `11.2.0.x` 格式的 dmp 文件。 --- ### **二、解决方案:降级导出文件版本** 必须先在 **Oracle 19c 源数据库** 执行导出时指定兼容版本参数: ```bash expdp system/密码@ORCL19C schemas=源用户 \ directory=DATA_PUMP_DIR \ dumpfile=expdp_19c.dmp \ logfile=expdp_19c.log \ version=11.2 ``` **参数详解**: - `version=11.2`:强制导出为 11g R2 兼容格式(11g 最高支持版本)[^2][^4]。 - `directory`:预先创建的逻辑目录(需在 19c 中授权用户读写权限,见引用[^4])。 --- ### **三、Oracle 11g 导入操作流程** #### **1. 准备逻辑目录** ```sql -- 创建逻辑目录(需管理员权限) CREATE DIRECTORY imp_dir AS '/path/to/dump_folder'; -- 授权目标用户读写权限 GRANT READ, WRITE ON DIRECTORY imp_dir TO 目标用户; ``` #### **2. 执行导入命令** ```bash impdp system/密码@ORCL11G \ remap_schema=源用户:目标用户 \ directory=imp_dir \ dumpfile=expdp_19c.dmp \ logfile=impdp_11g.log ``` **关键参数**: - `remap_schema`:若 11g 与 19c 用户名不同,需映射用户(相同可省略)[^4]。 - `remap_tablespace`(可选):若表空间名称冲突,需映射旧表空间到新表空间。 #### **3. 表空间兼容性处理** - **问题**:19c 导出的表空间可能在 11g 不存在。 - **解决方案**: ```sql -- 在 11g 创建同名表空间(确保路径存在) CREATE TABLESPACE 表空间名 DATAFILE '/path/to/datafile.dbf' SIZE 1G AUTOEXTEND ON; ``` --- ### **四、关键注意事项** 1. **版本硬性限制**: - 11g 无法导入版本号高于 `11.2` 的 dmp 文件[^1][^2]。 - 若无法访问源 19c 数据库,只能通过中间版本(如 12c)逐步降级导出。 2. **表空间与路径**: - 11g 需确保数据文件路径正确(引用[^3]中的路径示例需适配实际环境)。 - 使用 `REMAP_DATAFILE` 参数可重定义路径(若操作系统路径不同): ```bash impdp ... remap_datafile='19c_path.dbf':'11g_path.dbf' ``` 3. **权限要求**: - 执行 `IMPDP/EXPDP` 需具有 `DATAPUMP_EXP_FULL_DATABASE` 和 `DATAPUMP_IMP_FULL_DATABASE` 权限[^4]。 --- ### **五、替代方案(不推荐)** 若无法重新导出,可尝试 **SQL文件导出**: 1. 在 19c 使用 `exp`(传统导出): ```bash exp 用户/密码@ORCL19C file=exp_19c.dmp log=exp_19c.log ``` 2. 在 11g 用 `imp` 导入: ```bash imp 用户/密码@ORCL11G file=exp_19c.dmp full=y ``` ⚠️ **局限**:`exp/imp` 不支持部分新数据类型且性能较差,仅适用于小数据量迁移。 --- **结论**:通过 `expdp version=11.2` 降级导出是最高效可靠的方案。确保目标库创建同名表空间和逻辑目录,即可完成跨版本迁移[^1][^2][^4]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值