痛苦的 Oracle 导入 dmp 文件记录

本文详细介绍Oracle数据库中DMP文件的导入流程,包括创建表空间、用户、授予权限及使用imp和impdp命令导入DMP文件的具体步骤,解决常见错误如用户不存在等问题。

前言:不知道dmp 文件的 导出用户表空间 就别折腾了, 我折腾了半天, 网上方法都试了, 最后都报错"用户不存在"; 有知道的麻烦评论告诉小弟.

1. 打开 oracle 命令行

    sqlplus /nolog

   

2. 连接 Oracle

   conn /as sysdba;

   

 

3. 创建表空间

create tablespace oesv6 datafile 'D:\DevFiles\oracleLog\oesv6.dbf'size 2048m autoextend on next 512m maxsize 10240m;

 

4. 创建用户

create user oes identified by 密码 default tablespace oesv6 temporary tablespace temp profile default;

5. 给用户管理表空间权限

        grant connect,resource,alter system,debug connect session,create session,create any view,select any table,delete any table,drop any table,alter any table,dba,sysdba to oes;

 

6. 导入 dmp 文件 (这一步坑很多, 可能会失败, 具体参照提示自己解决吧)

(1) imp 导入方式

     imp usename/password@localhost/orcl(表示SID)  file= D:\360Downloads\xxxx.dmp  full=y ignore=y

(2) impdp 导入方式( imp导入报错: IMP-00038:无法转换为环境字符集句柄, 则用这种导入 )

     <1> 退出 Oracle 命令行, 使用新创建的用户再次登录

     <2> 创建临时目录, 即dmp文件所在文件夹(D:\360Downloads),路径最好不要有中文。

              create directory dpdata1 as 'D:\360Downloads';

      <3>退出 oracle 命令行, 在 cmd 命令行执行导入命令

        impdp oes/密码 dumpfile=20200219.dmp directory=dpdata1 remap_schema=onlinecol:oes remap_tablespace=ts_onlinecol_prod:OESV6

       其中:ts_onlinecol_prod:原先dmp文件的表空间名称,如果不知道原先的表空间名称是什么,先随便写个,到时候导入的时候会提示表空间不存在,把提示不存在的表空间名称写上去就可以。

        zaixianzs_data:需要导入到的表空间的名称(第一步创建的表空间名称)

        REMAP_SCHEMA: 该选项用于将源方案的所有对象装载到目标方案中。 

 REMAP_SCHEMA=source_schema:target_schema

       REMAP_TABLESPACE: 将源表空间的所有对象导入到目标表空间中。                   

 REMAP_TABLESPACE=source_tablespace:target:tablespace 

后语: 导入时如果提示  用户名/密码第一个字符+后面的.... ,    则执行一次  sqlplus /nolog,  然后  conn /as sysdba,  再 exit 退出来, 然后再导入就好了.

 

### Oracle 导入 DMP 文件方法或使用 impdp 导入 DMP 文件Oracle 数据库中,`impdp` 是一种强大的工具,用于导入通过 `expdp`(Data Pump Export)生成的 `.dmp` 文件。以下是关于如何使用 `impdp` 导入 `.dmp` 文件的详细指南。 #### 1. 准备工作 在执行导入操作之前,需要完成以下准备工作: - **连接到数据库**:确保可以成功连接到目标数据库实例。 - **创建用户**:如果目标模式存在,则需要创建与导出文件中的模式相对应的用户,并赋予必要的权限[^1]。 - **创建物理目录**:在文件系统中创建一个目录用于存放 `.dmp` 文件,例如 `f:\radio\dmp`,并将 `.dmp` 文件复制到该目录下[^2]。 - **创建 Oracle Directory 对象**:在数据库中创建一个指向上述物理目录的 Oracle Directory 对象。例如: ```sql CREATE OR REPLACE DIRECTORY dmp_dir AS 'f:\radio\dmp'; ``` - **创建表空间**(可选):如果需要将数据导入到特定的表空间,可以提前创建对应的表空间,并确保有足够的存储空间[^3]。 #### 2. 使用 impdp 命令导入 `impdp` 是 Data Pump Import 工具的命令行界面,支持多种参数以满足同的导入需求。以下是一个基本的 `impdp` 命令示例: ```bash impdp USER_NAME/user_password@SID_NAME directory=dmp_dir dumpfile=USER_NAME.DMP schemas=USER_NAME logfile=USER_NAME.log ``` - **`USER_NAME/user_password@SID_NAME`**:指定目标数据库的用户名、密码和 SID。 - **`directory=dmp_dir`**:指定 Oracle Directory 对象的名称。 - **`dumpfile=USER_NAME.DMP`**:指定要导入的 `.dmp` 文件名。 - **`schemas=USER_NAME`**:指定要导入的模式名称。 - **`logfile=USER_NAME.log`**:指定日志文件的名称,用于记录导入过程中的信息。 #### 3. 更改用户和表空间 如果需要将数据从源模式导入到目标模式,并更改表空间,可以使用以下参数: - **`REMAP_SCHEMA`**:将源模式的数据映射到目标模式。例如: ```bash REMAP_SCHEMA=olduser:newuser ``` - **`REMAP_TABLESPACE`**:将源表空间的数据映射到目标表空间。例如: ```bash REMAP_TABLESPACE=EXAMPLE:newtablespace ``` 完整命令示例如下: ```bash impdp system/admin@DNACLIENT directory=DATA_PUMP_DIR dumpfile=example.DMP REMAP_SCHEMA=olduser:newuser REMAP_TABLESPACE=EXAMPLE:newtablespace ``` #### 4. 验证导入结果 导入完成后,可以通过以下方式验证数据是否正确导入: - 检查日志文件,确保没有错误或警告信息。 - 查询目标模式中的表和数据,确保数据完整性。 --- ### 注意事项 - 确保目标数据库的字符集和 NLS 参数与源数据库兼容,否则可能会导致数据导入失败或数据损坏[^4]。 - 如果导入过程中遇到权限问题,可以尝试以管理员用户(如 `SYSTEM` 或 `SYS`)身份运行 `impdp` 命令。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值