首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >甲骨文进出口

甲骨文进出口
EN

Stack Overflow用户
提问于 2018-01-26 16:04:54
回答 1查看 1.4K关注 0票数 2

一些背景:

大约十年前,甲骨文在Oracle10附近添加了一种名为Oracle数据泵的导出和导入数据库的新方法。除了愚蠢的名称之外,该功能的工作原理与原进出口效用基本相同。

指向原始实用程序的链接包含以下警告文本,它似乎至少有些自相矛盾:

原始导出是从Oracle数据库11g开始为一般使用而设计的。在11g中唯一支持使用原始导出的方法是将XMLType数据反向迁移到数据库版本10g第2版(10.2)或更早版本。因此,Oracle建议您使用新的数据泵导出和导入实用程序,但需要原始导出和导入的下列情况除外:

  • 您希望导入使用原始导出实用程序(exp)创建的文件。
  • 您希望导出将使用原始导入实用程序(imp)导入的文件。例如,如果您希望从Oracle数据库10g导出数据,然后将其导入到早期的数据库发行版中。

据我所知,ExpImp不能正确操作的唯一原因是数据库是否使用了11g中引入的特性。否则,看起来旧的ExpImp命令应该工作得很好,而且从上面看,它们确实得到了官方的支持。

“数据泵”与“数据泵”的主要区别之一。“原始”导出--这对我的应用程序来说很重要--是数据泵只运行服务器端,这意味着用户至少需要一定程度的服务器权限才能访问导出产生的文件。充其量,这是不方便的,在最坏的情况下,这会导致除dba以外的任何人都无法访问的文件。

发行:

当我们从11g升级到12c时,我们在使用原始导出实用程序时遇到了问题。它将成功地运行到导出触发器的程度,然后产生如下错误:

代码语言:javascript
复制
EXP:00056 ORACLE error 4063 encountered
ORA-06508: package body XDB.DBMS_XDBUTIL_INT has errors
ORA-06508: PL/SQL: could not find program unit being called:
"XDB.DBMS_XDBUTIL_INT"

问题:

这个问题在不同的背景下至少出现了十几次,我们在玩这个游戏--一只鼹鼠。最近一次解决这个问题的尝试是重新编译服务器上的每个包,大约需要半个小时。

  1. 为什么这个出口问题会不断出现?
  2. ExpImp实际上被官方否决了,以至于我们不再能够可靠地使用它们了吗?
  3. 还有其他直接的方法来获取数据库的客户端导出吗?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-27 05:54:36

  1. 为什么这个出口问题不断出现? 由于问题是断断续续的,我想这是由延迟段创建引起的。从11g开始,表和分区可以配置为在有数据之前不分配任何空间。(这可以为具有许多空分区的表节省大量空间。)但是Exp不理解这一点,并假设每个表都必须有一个段。这意味着一些表和相关特性可能出现“随机”问题,这取决于它们最近是否被填充或截断。 您可以通过以下查询找到这些表: 从dba_tables中选择*,其中segment_created = 'NO'; 然后强迫他们用这句话来做一个片段: 修改表table_name分配范围;
  2. 实际上是Exp和Imp的,官方反对,这样我们就不能再可靠地使用它们了? 这是有争议的,但我想说是的,原来的Exp和Imp现在真的是“不推荐”了。它确实让人觉得甲骨文玩了很多反推荐软件的游戏。例如,对于超级昂贵的Goldengate不推荐免费的更改数据捕获,或者当几乎没有人想使用昂贵的容器时,不推荐使用非容器架构。但是已经很长时间了,Exp和Imp不再削减它了。
  3. 还有其他直接的方法来获取数据库的客户端导出吗? 试试OCP,Oracle CoPy。您仍然需要在服务器上生成导出。但是OCP允许您在没有任何服务器文件系统权限的情况下将文件从服务器文件系统下载到客户端文件系统。它仍然不像应该的那样直截了当,但至少您不必在服务器文件系统上给每个人特权。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48465061

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档