难道AI不知道tnsnames.ora的instance_name配置吗?
事情是这样,给某客户培训构建hands-on实验环境时,因测试环境有限,在同一环境做了一套ADG环境;
数据库是单实例,版本19.21,使用了多租户选件;
其中一个测试的PDB,名为demo1,其中建好测试用户jingyu,遇到的问题是:
使用sqlplus连接时,会随机连接到主库或者备库。
排查定位也很简单,因为这样的环境,监听lsnrctl status可以看到对应的服务下,是存在两个实例的,一个是主库,一个是ADG备库,但是,修改配置tnsnames.ora时,指定具体实例的语法怎么写,AI误导我走了弯路。
- 监听服务如下:
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...
- 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配置吗?的更多相关文章
- 修改tnsnames.ora文件中配置内容中的连接别名后,连接超时解决办法
1.tnsnames.ora文件中配置内容中的连接别名:由upaydb修改为IP地址 2.连接超时 定位原因: PLSQL登录界面的数据库列表就是读的tnsname.ora中连接的别名,这个文件中连接 ...
- 在TNSNAMES.ORA文件中配置本机装的oracle
首先,感谢这两位网友:http://zhidao.baidu.com/link?url=eGYeoEa-EhQdVitSGqjE36uNfVmEsryXH1WUjPue6YvArDSx-Y1N9_rd ...
- Oracle的tnsnames.ora配置(PLSQL Developer)
首先打开tnsnames.ora的存放目录,一般为D:\app\Administrator\product\11.2.0\client_1\network\admin,就看安装具体位置了. 步骤阅读 ...
- 转载《Oracle的tnsnames.ora配置(PLSQL Developer)》
源地址:https://www.cnblogs.com/qq3245792286/p/6212617.html. 首先打开tnsnames.ora的存放目录,一般为D:\app\Administrat ...
- TNSNAMES.ORA 配置
上面的sqlnet.ora文件说明:SQLNET.AUTHENTICATION_SERVICES= (NTS)——这个表示采用os认证,在数据库服务器上,可以利用sqlplus “/ as sysdb ...
- 安装了多个Oracle11g的客户端,哪个客户端的tnsnames.ora会起作用?
如果我们由于需要安装了多个Oracle的client,哪个客户端的tnsnames.ora会起作用呢? 答案是: 在安装好clinent端后,安装程序会把client的bin目录放到path里面,pa ...
- oracle的listener.ora sqlnet.ora tnsnames.ora三个文件的关联性
学习:http://www.cnblogs.com/william-lee/archive/2010/10/20/1856261.html 之前因为安装的是windows server 2008 r2 ...
- oracle的sqlnet.ora , tnsnames.ora , Listener.ora 文件的作用(转)
oracle网络配置三个配置文件 listener.ora.sqlnet.ora.tnsnames.ora ,都是放在$ORACLE_HOME/network/admin目录下.1. sqlnet.o ...
- Oracle RAC客户端tnsnames.ora相关配置及测试
1.Oracle RAC服务端/etc/hosts部分内容如下 2.查看服务端的local_listener和remote_listener参数 3.客户端tnsnames.ora配置参考 3.1 1 ...
- tnsnames.ora配置注意(连接新的数据库)
文件地址D:\app\think\product\11.2.0\instantclient_11_2\network\admin\tnsnames.ora# tnsnames.ora Network ...
随机推荐
- 【LeetCode回溯算法#11】解数独,这次是真的用回溯法处理二维数组
解数独 力扣题目链接(opens new window) 编写一个程序,通过填充空格来解决数独问题. 一个数独的解法需遵循如下规则: 数字 1-9 在每一行只能出现一次. 数字 1-9 在每一列只能出 ...
- Java链接Mysql数据库整理,尽管很简单,但还是分享出来,希望对那些初级朋友有所帮助!!!
Java MySQL 连接 Java MySQL 连接 本章节我们为大家介绍 Java 如何使用 使用 JDBC 连接 MySQL 数据库. Java 连接 MySQL 需要驱动包,最新版下载地址为: ...
- STL-string模拟实现
1 #pragma once 2 3 #include<iostream> 4 #include<string.h> 5 #include<assert.h> 6 ...
- Jmeter 之正则表达式的使用
1 背景及用途: html.json数据都可以转化为文本,提供给正则去提取,使用正则可以提取全部数据,这就是正则表达式非常强大的一点. html格式响应更适合用xpath提取,性能比正则好一点 jso ...
- 设计原则 --- SOLID
引言 SOLID是五个常见的面向对象设计原则的缩写,其目的是帮助开发者设计易于维护和扩展的软件系统 其中包含单一职责原则(SRP),开闭原则(OCP),里氏替换原则(LSP),接口隔离原则(ISP), ...
- node开发命令行脚本 / commander
1. 脚本第一行添加 #!/usr/bin/env node // index.js #!/usr/bin/env node console.log('hello world') 2. package ...
- 微信自动信息发送助手WMR
某信自动信息发送助手WMR 最近放假闲来无事,捣鼓了一下pyqt5,正好手上有每天定时大量群发消息的需求,正好就用pyqt5做个小应用练练手. 包含到的主要库:pyqt5.pyperclip.pyau ...
- CodeForces Hello 2024 个人题解(A~C)
A. Wallet Exchange 时间限制: 1秒 内存限制: 256兆 输入: 标准输入 输出: 标准输出 Alice and Bob are bored, so they decide to ...
- C#的播放资源文件里的音频例子 - 开源研究系列文章
今天无聊,想起原来开发的待办列表TodoList里还缺个提醒声音,于是就添加了提供声音模块代码.然后想着记录一下,让更多的读者能够复用这个模块代码,于是就有了此博文.这个例子只是用于播放资源文件里的w ...
- 使用maven命令 创建基于Scala的flink项目
windows下 mvn archetype:generate ^ -DarchetypeGroupId=org.apache.flink ^ -DarchetypeArtifactId=flink- ...