做数据库实验EXPDP导出时,[/]@ora_service部分死活不对,折腾了很久终于确定是tnsnames.ora没配置好,故记录一下血泪教训。
没配置过的tnsnames.ora是这样的:
# tnsnames.ora Network Configuration File: D:\Orale21c\homes\OraDB21Home1\NETWORK\ADMIN\tnsnames.ora
# Generated by Oracle configuration tools.
LISTENER_ORCL =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
ORACLR_CONNECTION_DATA =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
(CONNECT_DATA =
(SID = CLRExtProc)
(PRESENTATION = RO)
)
)
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)
新建一个pdb容器的话就会新建一个service,比如我新建了orclsalesdb这个pdb,那就要手动配置一下tnsnames.ora,加上下面这段:
ORCLSALESDB =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orclsalesdb)
)
)
其中SERVICE_NAME可以用select name,pdb from v$services;
命令来查询。这样配完才能登录该pdb里的用户。
切换用户方法为
conn user/password@orcl_service_name
这样终于能用$ expdp username/password@pdbname schemas=shemaname directory=dumpname dumpfile=filename.dmp logfile=filename.log;来导出备份了。
(当然这里只说一下解决用户名/口令不正确的问题,用EXPDP导出还有一个很重要的点时=是创建directory逻辑目录前需要先自行创建好文件夹,不然会报错目录无效)
PS:在sqlplus里改了用户的密码记得去Navicat编辑链接改一下口令,不然Navicat会报错用户名/口令不正确。
0x5743b89041bee9dde5c69e81653d1cf712801765295afc2c43d858c3beeb2c7b5e1008ea8f4e2612a020360ee7a512a15d95c84e89e00f72fe7eb1ef09e001f4efce8546f90b392f8097513ac0bb0291fe6de29ba8d8d02493c895a515031b8e8e58ded4af33b8320488a32776947b44ee8dadde38219b5a0d1bf1c9a82c8976003e0adf2b5231e60cce14190b54da01b9757707b2ab458527ccd37b309fecf1ad609273832ea27301c286db69a4d880290fc4cba2fe108bb5845cdc4a8448024a1c2bc518d817f9878f4e7f25e7e75c45a7f993cf023021c945892b21b9f99d8bd8f9de00f3a0244987870639509f01c31544b0becb22e37798dd41852c9c84