【问题标题】:Attempting to use SQL-Developer to analyze a system table dump created with 'exp'尝试使用 SQL-Developer 分析使用“exp”创建的系统表转储
【发布时间】:2012-04-04 03:40:13
【问题描述】:

我正在尝试从我之前执行的系统表转储中存在的特定表中恢复数据。我想将转储中存在的行附加到活动表中可能存在的任何行中。问题是,转储中的表名可能与数据库中当前存在的表名不同(它们是动态创建的,前缀为 ARC_TREND_)。另外,我不知道表的名称,因为它存在于转储中,我希望使用 SQL Developer 来分析转储文件,因为我可以通过它的列和现有的行来识别正确的表。

虽然我一直坚信 SQL Developer 可以使用我的转储文件,但在尝试打开它时,我收到了 Java Heap OutOfMemory 异常。我已经在 sqldeveloper.bat 和 sqldeveloper.conf 中将最大堆大小从 640m 调整为 1024m,但无济于事。

有人可以为我推荐一个操作过程来从 exp 创建的转储文件中存在的表中恢复数据吗?图形工具会很好,但我对命令行并不陌生。我需要分析转储中存在的表以选择正确的表。然后我假设我可以使用imp TABLE= 将其带回活动实例。它可能与现有表名不匹配,因此我将使用 SQL Developer 将导入表中的行复制到我需要它们所在的表中。

转储取自运行 10g 的 Linux 服务器,并将被导入(相同的服务器和数据库实例,已升级)同一数据库的 11g 实例。

谢谢

【问题讨论】:

    标签: oracle backup oracle-sqldeveloper exp imp


    【解决方案1】:

    由于您指的是imp 而不是impdp,我认为这不是通过数据泵导出的。不管怎样,我怀疑你会通过 SQL Developer 获得任何有用的东西。

    幸运的是,您尝试执行的大部分操作都可以通过命令行轻松完成;只需使用INDEXFILE parameter 运行imp,它将为您提供一个包含所有表(用REM 注释掉)和索引创建命令的文本文件。从中您应该能够从其列名中发现该表。

    但您实际上看不到任何行数据,因此如果有多个可能的匹配项,您可能需要导入多个表并在数据库中检查其中的数据,以查看您真正想要哪一个。

    【讨论】:

    • 太棒了。确实我没有用expdp导出数据,只是exp。在编写执行表转储的脚本时,我做了一些快速研究,除了用于读取和写入数据的方法外,我理解 exp 和 expdp 是相同的。我从你的评论中得知,他们有更大的不同。我将尝试通过INDEXFILE 识别表格。感谢您提供文档链接。
    • 底层引擎完全不同,dump格式不可互换,很多参数也不同。我想的原因是impdp 允许您即时重命名。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-05
    • 2016-02-19
    • 2010-09-30
    • 2023-03-04
    • 1970-01-01
    • 2013-06-21
    相关资源
    最近更新 更多