我所知道的 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 到数据库所在服务器。
1
we6100 2023-08-09 13:17:47 +08:00 via iPhone
19c 远程备份的话,只能用 exp 了
|
2
we6100 2023-08-09 13:22:49 +08:00 via iPhone
可以导出或者导入的时候排除索引试试 indexes=N
|