【问题标题】:How Can I import or open a .dmp file?如何导入或打开 .dmp 文件?
【发布时间】:2018-07-26 12:04:29
【问题描述】:

更新:

I tried the impdp command and it's giving me that it cannot create a user. I tried creating the user as well

This is how my .par file looks like

This is a snip of .sh file

我以前从未使用过oracle 数据库。我有一个 50 GB 的 .dmp 文件。我不知道它是如何导出的,也不知道它是从哪个版本导出的。我下载了 Oracle 12c 第 2 版并尝试进行导入,但出现错误“.dmp 可能是数据泵导出转储文件”。我需要做什么才能最终在其上运行 SQL 查询?请看附图。

更新: 我尝试了命令: IMP SYSTEM/密码 SHOW=Y FILE=DBO_V7WRIGLEY_PROD_20180201_TECHOPS-5527.dmp fromuser=SYSTEM touser=SYSTEM

它给了我一条消息说导入成功终止并出现警告。这是做什么的?另外,如果数据是导入的,我现在在哪里可以查看数据?

【问题讨论】:

    标签: oracle impdp imp oracle-dump


    【解决方案1】:

    sqlplus 中作为 SYSTEM

    CREATE DIRECTORY IMPDIR as 'C:\Users\negink\Documents\databasewrigley';
    

    返回命令行:

    impdp SYSTEM/Password DUMPFILE=IMPDIR:DBO_V7WRIGLEY_PROD_20180201_TECHOPS-5527.dmp logfile=IMPDIR:DBO_V7WRIGLEY_PROD_20180201_TECHOPS-5527.log FULL=Y
    

    完成后,您可以删除 DIRECTORY 对象

    在 CDB 数据库中(这是您的情况),这将不起作用,除非您 运行此命令后,在 SQLPLUS 中预先创建所有用户和角色:

    alter session set "_ORACLE_SCRIPT"=true;
    create user x identified by pwdx;
    create user y identified by pwdy;
    create role r1;
    create role r2;
    ...
    

    另外,您可以在 CDB 中创建一个 PDB,然后将 DMP 文件导入 PDB。在这种情况下,您需要如下修改 IMPDP 命令中的连接(将 SYSTEM/Password 更改为 SYSTEM/Password@//localhost/pdb_name):

    impdp SYSTEM/Password@//localhost/pdb_name DUMPFILE=IMPDIR:DBO_V7WRIGLEY_PROD_20180201_TECHOPS-5527.dmp logfile=IMPDIR:DBO_V7WRIGLEY_PROD_20180201_TECHOPS-5527.log FULL=Y
    

    【讨论】:

    • 它给了我以下消息:Job "SYSTEM"."SYS_IMPORT_FULL_01" 在 Thu Feb 15 16:11:52 2018 elapsed 0 00:00:14 完成了 1149 个错误。我现在在哪里可以找到所有文件?
    • 日志文件中的内容是什么?
    • 它说:主表“SYSTEM”。“SYS_IMPORT_FULL_01”成功加载/卸载启动“SYSTEM”。“SYS_IMPORT_FULL_01”:SYSTEM/******** DUMPFILE=IMPDIR:DBO_V7WRIGLEY_PROD_20180201_TECHOPS-5527 .dmp logfile=IMPDIR:DBO_V7WRIGLEY_PROD_20180201_TECHOPS-5527.log FULL=Y 处理对象类型 SCHEMA_EXPORT/USER ORA-39083: 对象类型 USER:"DBO_V7WRIGLEY_PROD" 未能创建错误:ORA-65096: 无效的普通用户或角色名称
    • 和这个类似吗? asktom.oracle.com/pls/apex/…
    • #!/bin/bash SCHEMA=${PWD##*/} DATE=$(date +%Y%m%d) COMMENT=comment EXPDPKEYS="\DIRECTORY=DATA_PUMP_DIR \SCHEMAS= $SCHEMA\DUMPFILE=$SCHEMA""$DATE""$COMMENT.DMP\LOGFILE=$SCHEMA""$DATE""$COMMENT.LOG" expdp 用户/ pass@server:port/SID $EXPDPKEYS 该命令用于导出
    【解决方案2】:

    首先,您应该使用 impdp 而不是 imp。并且不要忘记在做任何事情之前进行备份。此外,您应该将 dmp 文件放在服务器的本地目录中。我见过有人试图导入位于他们计算机硬盘上的 dmp 文件。事情不是这样运作的。

    如果您要导入现有架构以获得更好的结果,我建议您删除架构。

    要删除现有架构,请使用管理员帐户登录 sqlplus

    sqlplus 用户名/密码@connect_identifier

    然后您可以使用此命令删除架构:

    DROP USER <SCHEMA_NAME> CASCADE;
    

    查询您的数据库以查看是否定义了数据泵目录

    SELECT directory_name, directory_path FROM dba_directories WHERE directory_name='DATA_PUMP_DIR'
    

    如果没有定义目录使用这个命令定义(顺便说一句“D:\orcl12”是我的oracle实例路径,你应该使用你自己的路径)

    CREATE OR REPLACE DIRECTORY DATA_PUMP_DIR AS 'D:\orcl12c/admin/<ORA_INSTANCE_NAME>/dpdump/';
    

    退出 sqlplus 到命令提示符并使用管理员凭据运行 impdp(确保源目录上没有其他同名的日志文件 - 如果这样,操作将中止)

    impdp 用户名/密码@connect_identifier directory=DATA_PUMP_DIR dumpfile=filename.dmp logfile=filename.log

    如果操作成功,您可能必须手动更新用户定义的数据类型,因为它们没有正确导入。

    【讨论】:

    • 感谢您的更新。我会试试这个,但我的计算机上有本地的 .dmp 文件。它不在任何服务器上
    • 它应该与服务器在同一台机器上。如果您的计算机上安装了服务器,则可以。
    • 对不起,我有点困惑。你指的是哪台服务器?我在我的桌面上本地做所有事情
    • 您的 Oracle DB 是安装在本地计算机上还是远程计算机上?您的 .dmp 文件必须位于安装 Oracle DB 的同一台计算机上。
    • 它在安装了 db 的本地计算机上
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-25
    • 2011-11-20
    • 2022-10-24
    • 2012-06-26
    • 2013-09-06
    • 2020-03-19
    相关资源
    最近更新 更多