在oracle数据库12c中还原oracle 10g.dmp文件时出错



我用Oracle10g创建了一个.dmp文件,其中包含我的一个客户端的数据库。我一辈子都不能用我的12c装置来安装它。我可以使用https://localhost:5500/em 连接到我的数据库

我已经在我想要的PDB中创建了一个用户"BOB",并授予了导入、读取和写入权限。接下来我尝试使用以下命令导入:

impdp BOB/password@//localhost:1521/pdbname full=y directory=dpdump_dir dumpfile=BOB.dmp

然而,这给了我以下错误:

UDI-12541:操作生成ORACLE错误12541

ORA-12541:TNS:侦听器当前不知道连接描述符中请求的服务

在listener.oa和tnsnames.oa中,我有EZCONNECTOR和端口1521。有人知道如何让它发挥作用吗?

非常感谢,Bob

首先确保您可以为pdbname执行tnsping,以确保数据库连接:-$tnsping-bdbname若您通过tnsping获取连接字符串的详细信息,您可以尝试以下格式的命令:impdp波波头/password@127.0.0.1:1521/pdbname directory=dpdump_dir dumpfile=BOB.dmp

我已经删除了"full=y",因为如果你不恢复完整的数据库,这是不需要的,特别是它与imp/exp实用程序一起使用。

您应该记住,在您的示例中,pdbname被指定为dbname/service_name。您可以通过以下命令确认service_name:$lsnrctl服务;/*您可以获取服务名称并将其放在impdp命令中。*/

此外,您可以在不指定ip、端口和dbname的情况下尝试,因为您在localhost中工作:$impdp-bob/password directory=dpdump_dir dumpfile=bob.dmp

首先,您应该检查连接
sqlplus>BOB/password@localhost:1521/pdb名称

如果无法连接,请使用sys/as-sysdba连接然后使用命令:
SQL>更改会话集容器=pdbname
SQL>更改可插入数据库pdbname打开

然后退出并再次尝试您的命令。:)