前几天安装了oracle 19c,用图形化界面DBCA创建了一个数据库,
用PLSQL进行连接时,报错"ORA-12154:TNS: 无法解析指定的连接标识符"
在网上找了一下,大部分是说监听服务未启动
进入服务器,执行lsnrctl status
结果显示监听服务已启动,但是显示无服务
最后发现是由于缺少监听器的SID_LIST描述项引起的,采用netca进行配置的时候经常不会生成SID_LIST,导致连接出现问题
在lsnrctlstatus命令结果中找到
Listener Parameter File /u01/app/oracle/…/network/admin/listener.ora
可以看到确实没有SID_LIST这一项
在该文件中添加:
SID_LIST_LISTENER=
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = 数据库名)
(SID_NAME = 数据库SID)
)
)
添加完成后,重启监听器:
lsnrctl stop
lsnrctl start
或者直接lsnrctlreload
重启后再次查看状态:lsnrctl status
已经有在监听服务了,然后再次使用PLSQL连接数据库就不再报错了。
另外,用plsql连接数据库时如果不想每次都输入IP+端口+数据库名的话,
可以在安装的client的安装目录下的\network\admin\tnsnames.ora文件中进行配置,则下次登录可直接在下拉框中选择而不用输入数据库了。
配置方法:
TEST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 服务器地址)(PORT = 端口号,oracle默认1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = 数据库名)
)
)