扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
alter session set container = PDBORCL;
然后sqlplus登录就可以查到scott用户了,但是我们日常使用肯定是plsql用的比较多,plsql登录会报错:
ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务
3.又按照网上说的方法谢了一个触发器,让pdb自动开启:
CREATE OR REPLACE TRIGGER open_all_pdbs AFTER STARTUPON DATABASE BEGIN EXECUTE IMMEDIATE 'alter pluggable database all open';END open_all_pdbs;登录还是报12514,好吧,先来看看这个报错能不能解决。
于是cmd窗口查看监听状态,lsnrctl status
结果是果然没有pdborcl这个监听,怎么办?继续找答案,最后才发现原来我在安装数据库的时候,全局数据库名使用的的是数据库名+域名的形式,比如我的是orcl.microdone.cn, 但是我添加的pdborcl却使用的是pdborcl,于是也改成pdborcl.microdone.cn,最后用plsql登录,perfect,完美登录,查询scott用户,查到了!!
接着我把触发器也删了,登录pdb也是没有问题的,说明直接原因还是tns配置的问题。
总结:我是在 http://www.itpub.net/thread-1847024-1-1.html 这篇文章中得到启发的,个人认为最终的原因还是在建实例的时候,CDB的global db name使用的是db name+domain的形式,而PDB使用的global db name是db name,导致在添加tns配置的时候也是只使用了db name,应该要加上domain。
但是文章中说的要配置listener.ora文件,我没有配置,还是原有的配置,这里到底需不需要配置,不是太明白,往后再研究。
SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (SID_NAME = CLRExtProc) (ORACLE_HOME = C:\app\oracle12c\product\12.1.0\dbhome_1) (PROGRAM = extproc) (ENVS = "EXTPROC_DLLS=ONLY:C:\app\oracle12c\product\12.1.0\dbhome_1\bin\oraclr12.dll") ) ) LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521)) (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521)) ) )
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流