甲骨文中的impdp。为啥它不创建用户?

Posted

技术标签:

【中文标题】甲骨文中的impdp。为啥它不创建用户?【英文标题】:impdp in Oracle. Why it does not create users?甲骨文中的impdp。为什么它不创建用户? 【发布时间】:2015-08-22 10:17:06 【问题描述】:

我是 oracle 的新手,我正面临impdp 的麻烦。我有一个生产服务器,我创建了一个新服务器用于测试目的,所以我安装了 centos、oracle 并创建了数据库"sire"。现在我使用以下命令从生产服务器进行转储:

expdp system/password@sire full=Y 
directory=pump_dir dumpfile=sire_dump.dmp logfile=sire.log

我来到新服务器,我执行impdp:

    impdp system/password@sire full=Y 
directory=pump_directorio dumpfile=sire_dump.dmp logfile=sire_imp.log

它开始进行导入,但随后我收到如下错误:

“用户 vberrios 不存在”。还有错误,因为它不能 找到了一些模式和表空间。

我的问题是:impdp full=Y 不应该导入所有用户和模式吗?我读过我必须在目标服务器中创建用户,但我在数据库中有大约 300 个用户。如何在空服务器中进行完全导入。我只想导入完整的数据库和用户以及所有对象。

【问题讨论】:

【参考方案1】:

当转储文件包含创建用户语句时,impdp 将创建使用的documentation states:

如果您要重新映射到的架构尚不存在,则导入 操作创建它,前提是转储文件集包含 必要的 CREATE USER 元数据,并且您正在导入足够的 特权。

因此,要么您的转储文件不完整(例如由于缺少权限),要么您缺少目标数据库的权限。

所以请检查您对源数据库和目标数据库的权限。请使用相应的信息更新您的问题。要使导出包含架构定义,您必须拥有DATAPUMP_EXP_FULL_DATABASE 权限。

【讨论】:

OP说他是用户system用户。需要比system 用户拥有的更大权限吗? system 用户有同样的问题。添加DATAPUMP_EXP_FULL_DATABASE 权限实际上有所帮助。我不认为system 用户默认拥有完整的 exp/imp 权限。

以上是关于甲骨文中的impdp。为啥它不创建用户?的主要内容,如果未能解决你的问题,请参考以下文章

impdp导入expdp导出数据库实例

Oracle里怎么查某个实例中都有哪些用户?

oracle如何给用户创建查询序列的权限?

Oracle数据迁移expdp/impdp

在oracle中如何创建用户?

oracle中使用impdp数据泵导入数据提示“ORA-31684:对象类型已经存在”错误的解决