我使用数据泵将转储文件导入到同一服务器上的另一个DB_B。服务器已包含与转储文件具有相似内容的相同DB_A。我使用DB_A执行了以下命令(下面)并且它工作正常,但是当我用它来制作DB_B时,我发现了几个最值得注意的错误。我们需要DB_A用于不同的目的,DB_B也有其目的,但我们在服务器上做空,所以我不得不将它们都放在一台服务器上。我知道错误会覆盖DB_A已经使用过的一些文件。但是,如何创建另一个具有自己的文件集并且未被DB_A共享的DB_B实例?对此有任何建议非常感谢。感谢
导入命令
C:\>impdp SYSTEM/password@DB_B directory=imp_dir dumpfile=dumpFile.dmp logfile=Log.log full=yes
错误记录
CREATE TABLESPACE "SOPLOG_IDX" DATAFILE 'D:\APP\ADMINISTRATOR\ORADATA\DB_A\IDX01.DBF' SIZE 104857600 AUTOEXTEND ON NEXT 1048576 MAXSIZE 32767M LOGGING ONLINE PERMANENT BLOCKSIZE 8192 EXTENT MANAGEMENT LOCAL AUTOALLOCATE DEF
ORA-39083: Object type TABLESPACE failed to create with error:
ORA-01119: error in creating database file 'D:\APP\ADMINISTRATOR\ORADATA\DB_A\LOG01.DBF'
ORA-27038: created file already exists
OSD-04010: <create> option specified, file already exists
我不认为我想要发生的事情没有解决办法。我发现this网站解释了我想要的内容。 我现在唯一的选择是创建一个将托管oracle数据库11g或更高版本的VM,并将我的转储文件导入该VM。然后我将只配置网络选项,以便其他人可以看到数据库。这样我就可以保留相同的表空间,模式,用户等,而无需重新映射或重命名整个事物。 这个link将下载Oracle DB VM,我可以导入我的数据库。虽然如果有任何建议,我仍然愿意接受建议:)
答案 0 :(得分:0)
您遇到此错误,因为您在DB_B中没有SOPLOG_IDX,因此导入数据池会尝试在DB_B上创建它,但它不能,因为您的服务器上已存在数据文件D:\APP\ADMINISTRATOR\ORADATA\DB_A\IDX01.DBF
是我们所期望的,因为它是DB_A的一部分。
您可以做的是在使用相同的名称但不同的数据文件执行它之前,在DB_B上创建导入所需的表空间。 标准差:
CREATE TABLESPACE "SOPLOG_IDX" DATAFILE 'D:\APP\ADMINISTRATOR\ORADATA\DB_**B**\IDX01.DBF' SIZE 104857600
或者您可以使用参数remap_tablespace将对象发送到DB_B上已存在的表空间。这将改变表空间(Mr.Obvious),但其余的将与另一个数据库相同。