事情是这样,给某客户培训构建hands-on实验环境时,因测试环境有限,在同一环境做了一套ADG环境;

数据库是单实例,版本19.21,使用了多租户选件;

其中一个测试的PDB,名为demo1,其中建好测试用户jingyu,遇到的问题是:

使用sqlplus连接时,会随机连接到主库或者备库。

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

  1. 监听服务如下:
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配置如下:
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服务名,也一样。

所以当使用:

sqlplus jingyu/pwd@demo1

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

而我们应该指定到底是连接主库还是备库。

正确的方法是查阅Oracle官方文档说明,可以找到这个参数:

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指定要连接的实例。

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

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)
)
)

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

--连接主库:
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的检索增强,一定会得到越来越可靠的答案给我们做参考,但目前看起来很长一段时间内,都还需要专家来严格把关最终结果。

难道AI不知道tnsnames.ora的instance_name配置吗?的更多相关文章

  1. 修改tnsnames.ora文件中配置内容中的连接别名后,连接超时解决办法

    1.tnsnames.ora文件中配置内容中的连接别名:由upaydb修改为IP地址 2.连接超时 定位原因: PLSQL登录界面的数据库列表就是读的tnsname.ora中连接的别名,这个文件中连接 ...

  2. 在TNSNAMES.ORA文件中配置本机装的oracle

    首先,感谢这两位网友:http://zhidao.baidu.com/link?url=eGYeoEa-EhQdVitSGqjE36uNfVmEsryXH1WUjPue6YvArDSx-Y1N9_rd ...

  3. Oracle的tnsnames.ora配置(PLSQL Developer)

    首先打开tnsnames.ora的存放目录,一般为D:\app\Administrator\product\11.2.0\client_1\network\admin,就看安装具体位置了. 步骤阅读 ...

  4. 转载《Oracle的tnsnames.ora配置(PLSQL Developer)》

    源地址:https://www.cnblogs.com/qq3245792286/p/6212617.html. 首先打开tnsnames.ora的存放目录,一般为D:\app\Administrat ...

  5. TNSNAMES.ORA 配置

    上面的sqlnet.ora文件说明:SQLNET.AUTHENTICATION_SERVICES= (NTS)——这个表示采用os认证,在数据库服务器上,可以利用sqlplus “/ as sysdb ...

  6. 安装了多个Oracle11g的客户端,哪个客户端的tnsnames.ora会起作用?

    如果我们由于需要安装了多个Oracle的client,哪个客户端的tnsnames.ora会起作用呢? 答案是: 在安装好clinent端后,安装程序会把client的bin目录放到path里面,pa ...

  7. oracle的listener.ora sqlnet.ora tnsnames.ora三个文件的关联性

    学习:http://www.cnblogs.com/william-lee/archive/2010/10/20/1856261.html 之前因为安装的是windows server 2008 r2 ...

  8. oracle的sqlnet.ora , tnsnames.ora , Listener.ora 文件的作用(转)

    oracle网络配置三个配置文件 listener.ora.sqlnet.ora.tnsnames.ora ,都是放在$ORACLE_HOME/network/admin目录下.1. sqlnet.o ...

  9. Oracle RAC客户端tnsnames.ora相关配置及测试

    1.Oracle RAC服务端/etc/hosts部分内容如下 2.查看服务端的local_listener和remote_listener参数 3.客户端tnsnames.ora配置参考 3.1 1 ...

  10. tnsnames.ora配置注意(连接新的数据库)

    文件地址D:\app\think\product\11.2.0\instantclient_11_2\network\admin\tnsnames.ora# tnsnames.ora Network ...

随机推荐

  1. ABP的版本升级,从7.2.2升级到7.2.3

    1.升级ABP CLI 见前面的文章:ABP开发需要用到的命令 更新最新版本: ~~~ dotnet tool update -g Volo.Abp.Cli ~~~ 2.升级ABP Suite 见前面 ...

  2. 【Azure Developer】Java代码访问Key Vault Secret时候的认证问题,使用 DefaultAzureCredentialBuilder 或者 ClientSecretCredentialBuilder

    问题描述 使用Java SDK获取Key Vault Secret机密信息时,需要获取授权.通常是使用AAD的注册应用(Client ID, Tenant ID, Client Secret)来获取  ...

  3. [Python] 子线程退出孙线程不退出

    遇到了一个大坑! 如图,在子线程ThreadFunc退出之后,ThreadFunc2依旧在运行... 根本不会结束 但是官方文档中说明了,只要设置了daemon不为None 就能设置子线程是守护线程, ...

  4. Java 重写引入

    1 package com.bytezero.override; 2 /* 3 * 方法的重新(override/overwrite) 4 * 5 * 1.重写:子类继承父类以后,可以对父类中同名同参 ...

  5. 如何查看apk安装包源代码??Android反编译apk,解包,打包,签名一体化实测 ,修改图片音频软件名称版本号等入门

    首先下载反编译工具包 下载地址 链接:  https://zly520.lanzoui.com/ibtuxhf7rab 一.反编译工具介绍 首先 如果你想改动图片音频之类的,见末尾! 1.apktoo ...

  6. chatGPT初体验

    chatGPT NLP技术,通过统计的手段模拟出更正确的答案. 他与以前的NLP不一样,他有上下文语义,他能够模拟场景,能够总结很多文章信息. 因此对于谷歌等搜索引擎就很有攻击性了,因为chatGPT ...

  7. 3DCAD图纸转2D(DXF)图纸通用解决方案文稿

    本文地址:https://gitee.com/dvaloveu/lovedva/issues/I6B5YC 视频演示(1.25倍速&原速):Acfun Bilibili 脚本地址:https: ...

  8. 逆向通达信Level-2 续七 (调试内置WebView)

    通过窗口找WebView,打开DevTool调试 在WebView hack入控制台.那个,我已经打开了DevTool,算了. 通过pad面板找WebView. 逆向通达信Level-2 续十一 (无 ...

  9. AOSP中获取系统签名

    制作系统签名: 1.将AOSP源码路径下build\target\product\security\platform.pk8和platform.x509.pem复制出来放在同一目录下 2.执行命令 后 ...

  10. ‘MsBuild.exe‘ 不是内部或外部命令,也不是可运行的程序

    方法一: 在系统环境变量中的path变量中添加一条路径: 32位环境   C:\Windows\Microsoft.NET\Framework\v4.0.30319  64位环境   C:\Windo ...