我所面临的一个问题,我还没有找到一个优雅的解决办法:
我需要在同一个数据库中克隆一个模式,所以我使用datapump的remap_schema导入参数。
问题是PL/SQL包包含大量完全限定的对象名称(如select * from FROM_SCHEMA_A.table_name )。这些限定符被克隆。这使得克隆的包无效。
我显然可以用grant all on FROM_SCHEMA_A ... to TO_SCHEMA_A来解决问题,但这不是我想要的。我更想把名字也改一下。
输出参数为
content=metadata_only
directory=DATAPUMP_DIR
dumpfile=clone_schema.dmp
schemas=from_schema_a
exclude=trigger导入参数如下
directory=DATAPUMP_DIR
dumpfile=clone_schema.dmp
remap_schema=from_schema_a:to_schema_a
transform=OID:n发布于 2013-10-11 15:22:34
如果您授予特权(正如您前面提到的),问题可能会消失,但是在SCHEMA_B中执行的代码可能正在从SCHEMA_A中的表访问数据,除非这正是您想要的。
不幸的是,对于这个问题没有简单的答案,因为datapump的remap_schema选项并不真正支持您想要做的事情。但是,您可以尝试以下选项(我以前已经这样做过),
这很麻烦,但如果不能修复您的源模式,我认为您没有太多的选择。幸运的是,如果您所处的情况是代码不经常更改,则可以保留转换后的文件,并避免使用这些手动步骤,直到发生故障。
对了,如果您的pl/sql代码看起来像“创建或替换schema_a.package_name",那么remap_schema也不支持它(在11.2之前,我还没有在12c中进行测试)。
https://dba.stackexchange.com/questions/51267
复制相似问题