gpt4 book ai didi

database - Oracle 导出和导入

转载 作者:搜寻专家 更新时间:2023-10-30 20:34:23 25 4
gpt4 key购买 nike

一些背景:

在大约十年前(给予或接受)Oracle 10 的某个地方,Oracle 添加了一种导出和导入数据库的新方法,称为 Oracle Data Pump .除了愚蠢的名称外,功能大部分Original Export and Import Utility 相同。 .

Original Utility 的链接包含以下警告文本,看起来至少有些自相矛盾:

Original export is desupported for general use as of Oracle Database 11g. The only supported use of Original Export in 11g is backward migration of XMLType data to a database version 10g release 2 (10.2) or earlier. Therefore, Oracle recommends that you use the new Data Pump Export and Import utilities, except in the following situations which require Original Export and Import:

  • You want to import files that were created using the original Export utility (exp).

  • You want to export files that will be imported using the original Import utility (imp). An example of this would be if you wanted to export data from Oracle Database 10g and then import it into an earlier database release.

据我所知,ExpImp 无法正常运行的唯一原因是数据库使用了 11g 之后引入的功能。否则,旧的 ExpImp 命令应该可以正常工作,并且从上面的内容来看,它们确实得到了官方支持。

“数据泵”与“原始”导出的主要区别之一——这对我的应用程序很重要——是数据泵仅在服务器端运行,这意味着用户至少需要某种程度的服务器访问导出生成的文件的权限。最好的情况是,这很不方便,最坏的情况是,这会导致除 dba 之外的任何人都无法访问文件。

问题:

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

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. 是否有任何其他直接的方法来获取数据库的客户端导出?

最佳答案

  1. 为什么这个导出问题不断出现?

    由于问题是间歇性的,我猜它是由延迟的段创建引起的。从 11g 开始,表和分区可以配置为在有一些数据之前不分配任何空间。 (这可以为具有许多空分区的表节省大量空间。)但是 Exp 不理解这一点并假定每个表都必须有一个段。这意味着一些表格和相关功能可能看起来“随机”导致问题,具体取决于它们最近是否被填充或截断。

    您可以使用此查询找到那些表:

    select * from dba_tables where segment_created = 'NO';

    然后强制他们使用以下语句进行分割:

    alter table table_name allocate extent;
  2. Exp 和 Imp 是否实际上已正式弃用,以至于我们无法再可靠地使用它们?

    这是有争议的,但我会说是的,原来的 Exp 和 Imp 现在真的“弃用”了。确实感觉 Oracle 与弃用软件玩了很多游戏。例如,弃用 super 昂贵的 Goldengate 的免费更改数据捕获,或者当几乎没有人愿意使用其昂贵的容器时弃用非容器架构。但时间已经很长了,Exp 和 Imp 不再削减它了。

  3. 是否有任何其他直接的方法来获取数据库的客户端导出?

    尝试 OCP, Oracle CoPy .您仍然需要在服务器上生成导出。但是 OCP 允许您在没有任何服务器文件系统权限的情况下将文件从服务器文件系统下载到客户端文件系统。它仍然不像它应该的那样直截了当,但至少你不必为每个人授予服务器文件系统的权限。

关于database - Oracle 导出和导入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48465061/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com