我们使用此命令来导入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中没有。我不懂。
谁能告诉我这里的步骤? 我找不到一个好的文档来指导我完成这个。
答案 0 :(得分:1)
问题在于提供给impdp
的连接字符串。在像Oracle 11g这样的常规数据库中,连接字符串很简单。
例如:
impdp system/manager ...
但是对于Oracle 12c,这是一个multi-tenant database。我们需要在连接字符串中提供容器。
例如:
impdp system/manager@pdb1 ...
另请注意,impdp
是一个外部Oracle工具。它不是SQL * Plus命令。