oracle12c解决plsql登录CDB和PDB问题
发表于:2025-11-24 作者:千家信息网编辑
千家信息网最后更新 2025年11月24日,今天闲来无事,在win10上安装了oracle12c,想着平时可以操作操作,在安装过程中有一个创建为容器数据库的勾选,虽然不明白是什么意思,我还是勾选了。后来在使用plsql登录的时候,发现没有sco
千家信息网最后更新 2025年11月24日oracle12c解决plsql登录CDB和PDB问题今天闲来无事,在win10上安装了oracle12c,想着平时可以操作操作,在安装过程中有一个创建为容器数据库的勾选,虽然不明白是什么意思,我还是勾选了。
后来在使用plsql登录的时候,发现没有scott用户,what?难道是12c取消了scott用户吗?网上转了一圈发现,原来12c引入了CDB和PDB的概念,具体内容可以自行去了解一下,这里就再详解了。现在的问题是,我正常连接的数据库是CDB,但是scott用户又是在PDB下的,我也不想去在CDB 下重新新建scott用户和相关表,所以试着去了解了下怎么用plsql直接登录到PDB,网上的方法基本是在sqlplus下切换CDB与PDB,我试了网上的方法:
1.在tns文件里添加
PDBORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = pdborcl.microdone.cn)
)
)
2.去sqlplus 执行
后来在使用plsql登录的时候,发现没有scott用户,what?难道是12c取消了scott用户吗?网上转了一圈发现,原来12c引入了CDB和PDB的概念,具体内容可以自行去了解一下,这里就再详解了。现在的问题是,我正常连接的数据库是CDB,但是scott用户又是在PDB下的,我也不想去在CDB 下重新新建scott用户和相关表,所以试着去了解了下怎么用plsql直接登录到PDB,网上的方法基本是在sqlplus下切换CDB与PDB,我试了网上的方法:
1.在tns文件里添加
PDBORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = pdborcl.microdone.cn)
)
)
2.去sqlplus 执行
alter session set container = PDBORCL;
然后sqlplus登录就可以查到scott用户了,但是我们日常使用肯定是plsql用的比较多,plsql登录会报错:ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务3.又按照网上说的方法谢了一个触发器,让pdb自动开启:
CREATE OR REPLACE TRIGGER open_all_pdbs AFTER STARTUP ON 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)) ) )
登录
用户
配置
数据
数据库
还是
时候
问题
方法
监听
原因
形式
文件
是在
触发器
闲来无事
个人
全局
内容
又是
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
pubg 国际服更换服务器
阿里还用数据库吗
微信小程序架设开发者服务器
互联网时代未成年人网络安全
关于网络安全宣传的黑板报
网络安全情报局
时间 数据库
上海推广软件开发联系方式
艺是网络技术有限公司怎么样
服务器设备怎么样
toto打印服务器
6.2哪个服务器人多
为机关工作提供网络技术支持
山东正规的浪潮存储服务器服务
为什么软件开发时间那么长
关于学校网络安全法
东城区品牌软件开发职责
软件开发选小程序还是app
用友网络安全绘画
软件开发版本的简单介绍
怎么设置数据库sa
数据库中的定义模式
深圳数睿网络技术有限公司
扫黄打非网络安全进课堂课件
房山服务器硬盘回收公司
关于网络安全的法律知识
csms网络安全管理系统
网易版的pvp生存服务器
iosapp软件开发服务企业
吴忠市开展网络安全应急演练