前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >难道AI不知道tnsnames.ora的instance_name配置吗?

难道AI不知道tnsnames.ora的instance_name配置吗?

作者头像
Alfred Zhao
发布2024-04-10 08:10:26
450
发布2024-04-10 08:10:26
举报

事情是这样,给某客户培训构建hands-on实验环境时,因测试环境有限,在同一环境做了一套ADG环境; 数据库是单实例,版本19.21,使用了多租户选件; 其中一个测试的PDB,名为demo1,其中建好测试用户jingyu,遇到的问题是: 使用sqlplus连接时,会随机连接到主库或者备库。

排查定位也很简单,因为这样的环境,监听lsnrctl status可以看到对应的服务下,是存在两个实例的,一个是主库,一个是ADG备库,但是,修改配置tnsnames.ora时,指定具体实例的语法怎么写,AI误导我走了弯路。

  1. 监听服务如下:
代码语言:javascript
复制
Service "demo1.sub00000000000.xxvcn.xxxxxxvcn.com" has 2 instance(s).
  Instance "DB0913", status READY, has 1 handler(s) for this service...
  Instance "DB0913_DG", status READY, has 1 handler(s) for this service...
  1. tnsnames.ora配置如下:
代码语言:javascript
复制
DEMO1 =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = demo.sub00000000000.xxvcn.xxxxxxvcn.com)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = demo1.sub00000000000.xxvcn.xxxxxxvcn.com)
    )
  )

这里面就是标准配置,HOST那里写主机名或IP地址,这里同一环境,所以主备库肯定一样,端口也是标准的1521,service_name是默认的pdb服务名,也一样。

所以当使用:

代码语言:javascript
复制
sqlplus jingyu/pwd@demo1

连接就会随机连接到主库或者备库。

而我们应该指定到底是连接主库还是备库。 正确的方法是查阅Oracle官方文档说明,可以找到这个参数:

代码语言:javascript
复制
6.9.7 INSTANCE_NAME
Purpose

To identify the database instance to access.

Usage Notes

Set the value to the value specified by the INSTANCE_NAME parameter in the initialization parameter file.

Put this parameter under the CONNECT_DATA parameter.

说的非常明白,在CONNECT_DATA参数下面,添加INSTANCE_NAME指定要连接的实例。

所以,正确的做法应该是这样配置:

代码语言:javascript
复制
P_DEMO1 =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = demo.sub00000000000.xxvcn.xxxxxxvcn.com)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = demo1.sub00000000000.xxvcn.xxxxxxvcn.com)
      (INSTANCE_NAME = DB0913)
    )
  )

S_DEMO1 =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = demo.sub00000000000.xxvcn.xxxxxxvcn.com)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = demo1.sub00000000000.xxvcn.xxxxxxvcn.com)
      (INSTANCE_NAME = DB0913_DG)
    )
  )

然后,指定清楚别名来区分主备库的连接:

代码语言:javascript
复制
--连接主库:
sqlplus jingyu/pwd@p_demo1

--连接备库:
sqlplus jingyu/pwd@s_demo1

非常简单对吧?

可是自己最开始偷懒,直接问了LLM的AI,结果前期得到各种风马牛不相及的答案。 比如让我去加(ROLE=PRIMARY)(ROLE=PHYSICAL STANDBY) 这样的参数,或者是(SID=DB0913)(SID=DB0913_DG)。 这次终于算是让我切身感受了LLM的幻觉问题有多严重。

由于前段时间通过AI快速辅助我解决了一个疑难问题,让我树立了对AI的信心。 可是这次,如此简单的问题,给出的答案经过测试却完全不对。

看来客观事实是,目前针对专业性问题,AI的局限性其实还是很大的,不怕你说不知道,就怕一本正经的胡说八道。。。 另外提供给AI非常精准的提示词也是非常有挑战的一件事情,比如这个问题,我相信如果提示词写的足够好,也可能会得到正确答案,但很可能前提是你知道这个参数。。比如我查阅了官方手册,再试图引导去问的时候,的确可以得出正确的答案,可这个意义还有多大很值得商榷。

AI这样的回答给人带来的迷惑性极大,导致明明很简单的一个技术问题,却浪费了很多时间。 不过,也不能因噎废食,相信随着技术的进步,通过更好的通用LLM,辅助加上专业领域知识RAG的检索增强,一定会得到越来越可靠的答案给我们做参考,但目前看起来很长一段时间内,都还需要专家来严格把关最终结果。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2024-04-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
腾讯云服务器利旧
云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档