在Oracle 12c容器数据库中,客户端必须指定服务名称才能连接到PDB。具有早期版本的Oracle数据库的许多数据库客户端可能具有硬编码的连接描述符,以使用SID连接到数据库。现在,如果他们选择将非CDB插入CDB,他们一定需要在tnsnames.ora显示的配置USE_SID_AS_SERVICE_LISTENER = on来解决该问题.


  • 1.首先配置使用SID作为服务名来连接Oracle12c,默认是关闭的
    tnsnames.ora中添加USE_SID_AS_SERVICE_LISTENER = on如下图:
    在这里插入图片描述

  • 2.重启监听服务
    lsnrctl reload

    查看状态
    lsnrctl status


  • 3.配置JDBC连接或者远程可视化工具
    注意: 配置了使用SID作为服务名来连接Oracle12c的意思是在写SID值的地方依然使用ServiceName,只是URL连接协议格式使用的是SID的格式.(比如这里的yveshe是指的服务名称而不是SID)
    在这里插入图片描述
    下面是使用直接连接服务名的例子:
    在这里插入图片描述
    对比我们可以发现下面在@后面多了//而且在端口后面的分隔符为/

建议:
一些8i的应用配置使用sid来连接,升级到12c后就出现问题,建议还是改用服务名来连接.


参考:
http://oracleinaction.com/12c-use_sid_as_service_listener_name/

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐