Oracle Database 21C TNS:监听程序当前无法识别链接描述符中请求的服务
ORA-12514:TNS:监听程序当前无法识别链接描述符中请求的服务
简述
问题
- 全数据库名是以
[库名] . [域]
的格式。 - 添加scott用户过程中,导入 scott.sql 后使用
show user;
输出的用户名却是空的。 - 以
用户名/密码@主机名:监听的端口/全局数据库名或可读写库名
的方式无法登录,提示本文最上面的错误信息。 - 随手录,简单参考看看就好:
[bvideo bv="1ge4y1m7Jq"][/bvideo]
1.检查监听
首先要检查是否有正确监听。Windows开始菜单里找到“Oracle - OraDB21Home1”,选择“Net Manager”。目录树里展开本地,服务命名,选择 orcl
。如果是像下面图中的那样,以 全局数据库名(orcl) . 域(mshome.net)
的形式,如果当前数据库里没有重要数据,那么最简单粗暴的方式:直接卸载数据库,然后重新安装一遍。具体过程可以简单参考下面的内容。
2.卸载数据库实例
为了不必要的麻烦和多个不可控的因素干扰,由衷建议移除掉相关的监听配置。选择“Net Manager”。目录树里展开“本地”。
2.1 移除本地网络服务
展开服务命名,依次选中服务命名里的 orcale_connection_data 和 orcl ,然后左侧叉叉删除掉。
2.2 移除监听程序
同样的,展开监听程序,移除掉LISTENER。完成了之后,关闭“Net Manager”。
2.3 卸载实例
监听清除了以后,接下在Windows开始菜单里找到“Oracle - OraDB21Home1”,选择“Database Configuration Assistant”。
然后选择“删除数据库”,填写你的sys用户密码,然后下一步下一笔即可开始卸载。
3.安装数据库实例
数据库实例卸载了以后,就可以开始重新安装Oracle21C Database实例。
- 在Windows开始菜单里找到“Oracle - OraDB21Home1”,选择“Database Configuration Assistant”,然后选择“创建数据库”。
- 接下来不管是选择默认的“经典配置”还是“高级配置”,一定要注意的是:全局数据库名不管自动填写的是什么,请去掉域!比如自动填写:
orcl.mshome.net
,那么仅仅保留orcl
,后面的域一定要去掉。然后填写sys用户密码、可插入数据库名(如:orclpdb
)
这个很重要,因为如果是采用 [全局数据库名][域]
的形式,那么需要更改监听配置,而对于每个人而言,其引用的配置文件位置可能都不一样,所以对于本地学习、测试的环境,最简单省事的方式,仅保留 [全局数据库名]
的格式就ok了。
之后就没啥需要注意的,具体的可以参考之前水过的文章的“安装数据库实例”部分,这里就不再重复记录了吧,有需要的可以移步下面的链接。
4.添加监听
在Windows开始菜单里找到“Oracle - OraDB21Home1”,选择打开“Net Configuration Assistant”,默认选择“监听程序设置”,选择下一步,然后如果删除是可选的状态,那就不用添加了。反之不可选的状态则手动添加一下监听配置:
- 默认选择添加,选择下一步,接下来可以使用默认的监听程序名称:“LISTENER”,然后下一步
- 默认“TCP”协议,选择下一步
- 端口则视自己本身情况而定,默认标准端口:1521,选择下一步
- 最后是否添加另一个监听程序,选择“否”,然后下一步,
- 提示完成之后,选择下一步,最后选择“完成”自动关闭窗口。
5.测试效果
安装完成之后,一般情况下就不会有啥问题了。可以直接cmd简单测试一下:
#用户名/密码@主机名:监听的端口/全局数据库名或可读写库名
#as sysdba:以sysdba的身份登录
sqlplus sys/sys@localhost:1521/orcl as sysdba
碎碎念
如果操作完成,但依旧是输出“监听程序当前无法识别链接描述符中请求的服务”,那么可以留言一下,收到讯息后有空远程再帮忙看看。