V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
coderstory
V2EX  ›  数据库

oracle19c 数据库如何在客户端导出备份数据库?

  •  
  •   coderstory · 2023-08-07 16:54:33 +08:00 · 783 次点击
    这是一个创建于 508 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我所知道的 oracle 提供了 2 个命令行工具导出数据库。一个是 exp ,这个是在客户端执行的,一个是 expdp ,这个是服务端执行的。很明显 expdp 的执行效率要高。

    目前使用 exp 发现一个问题,导出的备份文件无法正常导入,

    正在导入表
    "menus"导入了
    IMP-00017:由于 ORACLE 错误 906 ,以下语句失败:
    "ALTER TABLE"menus" ADDPRIMARY KEY"
    IMP-00003:遇到 ORACLE 错误 906
    ORA-00906: 缺失左括号
    

    chatgpt 给出的解答:

    在 Oracle19c 数据库中,使用 exp 工具导出表时,可能会导致主键设置失败的原因是因为 exp 工具不支持自动识别和导出 IDENTITY 列。
    
    在上述创建表的 DDL 语句中,"id"列被定义为 IDENTITY 列,这意味着它是一个自增列,由数据库自动分配和管理。但是,exp 工具不会自动识别 IDENTITY 列,并且在导出数据时,不会正确处理 IDENTITY 列的值。
    
    为了解决这个问题,可以使用 expdp 工具来导出表,它是 Oracle 数据库的推荐导出工具。expdp 工具支持导出 IDENTITY 列,并且可以正确处理这些列的值。
    

    按他说的 exp 工具是无法使用了,但实际这个 expdp 导出的文件是在数据库所在的服务器上的,我有数据库的管理员账号,但也没法直接从服务器上下载文件。

    所以,有没有别的方案,能在我的电脑上获得数据库的备份文件。假设我不能直接 ssh 到数据库所在服务器。

    2 条回复    2023-08-09 13:22:49 +08:00
    we6100
        1
    we6100  
       2023-08-09 13:17:47 +08:00 via iPhone
    19c 远程备份的话,只能用 exp 了
    we6100
        2
    we6100  
       2023-08-09 13:22:49 +08:00 via iPhone
    可以导出或者导入的时候排除索引试试 indexes=N
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2845 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 08:53 · PVG 16:53 · LAX 00:53 · JFK 03:53
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.