我们正在实现我们的数据库生产对象的单元测试系统,如包,过程,触发器和公司。要做到这一点,我们有一个容器,它从https://github.com/oracle/docker-images/tree/master/OracleDatabase创建数据库。然后我们执行脚本,创建模式,用户,授予一些特权,创建良好的表空间......然后我们使用数据泵Oracle expdp和impdp模式。这些步骤是成功的。
当我们尝试对我们的过程和包执行测试时出现问题。由于编译错误“ORA-38824:CREATE OR REPLACE命令不能更改现有对象的EDITIONABLE属性”。
但是如果我们删除测试的过程,然后重新创建它,错误就不会再出现了。事情是我们不想手动删除并重新创建过程。
我们的环境和容器数据库之间的唯一区别是,当我们从头开始创建一个过程/包时,对象详细信息中的Editionable参数在容器中位于'N',而在我们的环境中位于'Y'。
似乎对象的Editionable参数必须在数据库级别设置。但问题是它可以在哪里设置?
我们尝试'ALTER USER X ENABLE EDITIONS;'未成功,因为它导致'ORA-38813:架构X '不支持版本。
Impdp和Expdp是否造成了麻烦?
我们尝试使用'source_edition'和'target_edition'作为我们的expdp/impdp进程。我们显然遗漏了一些东西或做错了一些事情,但我们无法找到什么。
我在互联网上搜索过,但没有太多人面临这个问题。
你能帮我们吗?
先谢谢你了文森特。
3条答案
按热度按时间klr1opcd1#
我检查了Oracle支持网站(应该早点这样做),这个错误与12c中的一个错误有关。例如,在一个这样的文档(Meta Link Document)中,它是这样说的。所以请通过提出SR将这个问题提交给Oracle,他们很可能会返回Oracle版本升级的建议:
请应用合并修补程序错误27314007:在12.2.0.1.0之上针对错误25557064 26645487的合并请求
使用以下步骤进行升级:
1.停止当前的DBUA会话。
1.下载此修补程序并将其应用于12.2 Oracle主目录。
1.还原12.1数据库。
1.重新运行从12.1到12.2的升级。
谢啦
kb5ga3dv2#
我最近经历了这个,分析它,我们不会使用
EDITIONABLE
功能,所以我运行下面的命令,留下NONEDITIONABLE
对象,因为这样对象就被替换了。在DBA_OBJECTS
表中,EDITIONABLE
列是N
,所以当需要执行imp时,没有问题。d7v8vwbk3#
不是大问题,只是授予访问权限问题。从SYS/Admin用户运行此查询
授权创建过程;