Oracle:导入数据泵转储而不需要知识转储文件内容

Mic*_*sov 2 import oracle10g impdp

导出/导入整个模式的旧方法:

 exp user/pwdp@server FILE=export.dmp OWNER=user ROWS=Y
 imp newuser/pwd@server FULL=Y FILE=export.dmp
Run Code Online (Sandbox Code Playgroud)

新的方法:

 expdp user/pwdp@server DUMPFILE=export.dp DIRECTORY=exportfolder 
Run Code Online (Sandbox Code Playgroud)

但是导入有问题:

 impdp newuser/pwdp@server DUMPFILE=export.dp DIRECTORY=exportfolder
Run Code Online (Sandbox Code Playgroud)

不会导入任何东西:

Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
ORA-31655: no data or metadata objects selected for job
ORA-39154: Objects from foreign schemas have been removed from import
Master table "NEWUSER"."SYS_IMPORT_FULL_01" successfully loaded/unloaded
Starting "NEWUSER"."SYS_IMPORT_FULL_01":  newuser/********@server
DUMPFILE=export.dp DIRECTORY=exportfolder
Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA
Job "NEWUSER"."SYS_IMPORT_FULL_01" successfully completed at 19:13:04
Run Code Online (Sandbox Code Playgroud)

添加模式选项无济于事(结果相同,oracle不允许导入非拥有对象):

impdp newuser/pwdp@server DUMPFILE=export.dp DIRECTORY=exportfolder schemas=user
Run Code Online (Sandbox Code Playgroud)

我发现只有一种工作方法:

impdp newuser/pwdp@server DUMPFILE=export.dp DIRECTORY=exportfolder remap_schema=newuser:user
Run Code Online (Sandbox Code Playgroud)

那么问题是如何在不知道导出哪个模式的情况下导入模式数据泵转储?

(当然我可以查看第一个512字节的导出文件并找到像"USER"这样的字符串."SYS_EXPORT_SCHEMA_01"),但可能存在另一种方法吗?

Joe*_*wik 7

首先,从技术上讲,您没有正确使用full = y:

imp newuser/pwd@server FULL=Y FILE=export.dmp
Run Code Online (Sandbox Code Playgroud)

你应该做的事情:

imp newuser/pwd@server touser=newuser fromuser=user FILE=export.dmp
Run Code Online (Sandbox Code Playgroud)

这与impdp remap_schema命令类似.

但是,我确实理解您要做的是将模式从一个用户导入另一个用户,而不必事先了解源用户.我只是要提到这个,因为如果你不了解源用户,那么可以很容易地假设你不知道数据文件的内容; 如果您不知道数据文件的内容,您可能会通过发出full = y导入比您认为应该更多的用户和数据.

Point:full = y import意味着导入每个用户及其相关内容; 无论您使用何种用户登录数据库并开始导入.

说完我的免责声明后,impdp在完全导入方面具有完全相同的功能 - 只需使用full = y

impdp newuser/pwdp@server DUMPFILE=export.dp DIRECTORY=exportfolder full=y
Run Code Online (Sandbox Code Playgroud)

UPDATE

this will works in newuser have privilege: IMP_FULL_DATABASE

execution `grant IMP_FULL_DATABASE to newuser` solved it.
Run Code Online (Sandbox Code Playgroud)

参考文献:http: //download.oracle.com/docs/cd/B19306_01/server.102/b14215/dp_import.htm#sthref301