我们使用此命令在11g:中导入数据库
impdp system directory=DATA_PUMP_DIR dumpfile=ourdb.dmp full=n
password: ourpassword
现在我正试图在12c:中运行这个
impdp system/Oracle_1 directory=DATA_PUMP_DIR dumpfile=ourdb.dmp nologfile=Y
但它说用户不存在,所以一切都失败了。在11g中,它只会从正在导入的模式中创建USER。12c发生了什么?
我读到你必须确保你已经连接到pdb。所以如果我连接到pdb:
sqlplus sys/Oracle_1 as sysdba;
我现在在SQL提示符下。现在,如果我运行:
impdp system/Oracle_1 directory=DATA_PUMP_DIR dumpfile=ourdb.dmp nologfile=Y
它说,这不是sqlplus命令。您必须从常规命令行运行它。所以,如果我回到一个常规的命令行,我就没有连接,因为我在SQLPus中没有。我不明白。
有人能告诉我这里的台阶吗?我找不到一个好医生来指导我度过难关。
问题在于提供给impdp
的连接字符串。在像Oracle11g这样的常规数据库中,连接字符串是直接的。
例如:
impdp system/manager ...
但以Oracle 12c为例,它是一个多租户数据库。我们需要在连接字符串中提供容器。
例如:
impdp system/manager@pdb1 ...
另外,请注意impdp
是一个外部Oracle工具。它不是SQL*Plus命令。