首页 > 其他分享 >ORA-02085

ORA-02085

时间:2023-08-23 16:45:18浏览次数:26  
标签:name database global db link names 02085 ORA

Table of Contents

1 现象

  SQL> create public database link tocrm connect to dd identified by "dd" using 'BOSS_CRM';

Database link created.

SQL> select count(*) from v$instance@tocrm;
select count(*) from v$instance@tocrm
                                *
ERROR at line 1:
ORA-02085: database link TOCRM connects to BOSS_CRM_DB

首先,tns 配置是没有问题的。可以通过 sqlplus dd/dd@boss_crm 正常登录。 那么问题到底是出在哪儿了呢?

2 原因

关于此错误官方给出的说明如下:

 oerr ora 2085
02085, 00000, "database link %s connects to %s"
// *Cause: a database link connected to a database with a different name.
//  The connection is rejected.
// *Action: create a database link with the same name as the database it
//  connects to, or set global_names=false.
//

从上面的信息来看,原因是: dblink 连接到一个数据库时,用了不同的名字。这个名字是什么名字?是在用什么名字做对比? 这个说明不清楚。不过可以从下面的解决方法中找到一点线索。

解决有两种:

  1. 创建一个dblink , 名字和要连的数据库保持一致。 其实这里也说得不清楚。从这段话里来看,是对dblink的命名有了要求。而从解决方法二中,我们判断出,前提条件是global_names = true 时才会报错的。 那么这个要求,是和要连的数据库的哪个名字保持一致呢?global_name? db_name ? service_name ? pdb_name ?
  2. 设置global_names=false. 那么这个建议是哪儿改呢?源端?目标端?还是两边儿都得改?

2.1 分析

同时global_names = true的话,global_name = db_name + db_domain 。这又涉及到一个db_domain . 当db_domain 不为空的的话,service_name = global_name , PDB 中 db_link 创建好后,会自动补充db_domain ,而在cdb 中不会。 而dblink时,经测试,目标端是用pdb.name 或者是用db_name 与源端的db_link_name 进行匹配的。

各种乱糟糟的匹配,让我一点儿耐心也没有了。

2.2 结论

经过测试,得到如下结论:

待最终验证
最靠谱的方法就是在源端将global_names 设置为false. 目标端不用改。
alter system set global_names=false scoipe=both sid='*';

Validate

标签:name,database,global,db,link,names,02085,ORA
From: https://www.cnblogs.com/halberd-lee/p/17652089.html

相关文章

  • 1、oracle表空间
    目录oracle表空间1、查询表空间目录2、创建表空间2.1、linux创建表空间文件根路径以及表空间文件2.2、plsql执行创建表空间3、删除表空间(谨慎操作)3.1、删除非空表空间,包含物理文件3.2、删除非空表空间,不包含物理文件3.3、删除空的表空间,不包含物理文件3.4、删除空表空间,包含物理文......
  • 3、linux的oracle更改表空间路径
    目录linux的oracle更改表空间路径1、查看当前表空间路径2、复制原有的表空间路径3、查询表空间状态4、修改表空间4.1、修改表空间为Offline4.2、修改表空间指向地址5、修改表空间为Onlinelinux的oracle更改表空间路径1、查看当前表空间路径psql登录sys用户selectt1.name,t2.n......
  • 2、oracle表空间文件追加
    oracle表空间文件追加1、查看使用SELECTT.TABLESPACE_NAME,D.FILE_NAME,D.AUTOEXTENSIBLE,D.BYTES,D.MAXBYTES,D.STATUSFROMDBA_TABLESPACEST,DBA_DATA_FILESDWHERET.TABLESPACE_NAME=D.TABLESPACE_NAMEORDERBYTABLESPACE_NAME,FILE_NAME;2、追加表空间altertab......
  • Oracle数据库字符集概述及修改方式
    1、字符集概述Oracle语言环境的描述包括三部分:language、territory、characterset(语言、地域、字符集)language:主要指定服务器消息的语言,提示信息显示中文还是英文territory:主要指定服务器的数字和日期的格式characterset:是指字符集,一般国内数据库实际使用的字符集主......
  • Linux安装Oracle 11gR2
    简介OracleDatabase,又名OracleRDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。安装环境名称参数linux版本CentOS-7-x86_64oracle版本linux.x64_11gR2,点击下载安装前准备如下操作都需要root用户执行创建oracle数据库的系统用户和用户......
  • Oracle-TiDB迁移-生僻字乱码问题
    作者:longzhuquan背景某去O场景业务上线测试,再执行某张表缩字段时报错。现象执行缩字段语句ALTERTABLEschemaname.tablenameMODIFYCOLUMNlicensenovarchar(50)CHARACTERSETutf8mb4COLLATEutf8mb4_binNULLCOMMENT'发动机号';报错信息"incorrectstringvalu......
  • 6、oracle迁移到postgres-分页问题
    目录oracle迁移到postgres-分页问题1、oracle使用rownum进行分页2、postgres使用limit进行分页3、使用FETCH统一的分页方式oracle迁移到postgres-分页问题1、oracle使用rownum进行分页select*fromss_stuwhererownum<=10;2、postgres使用limit进行分页select*froms......
  • 1、oracle创建新用户
    目录oracle创建新用户1、创建表空间2、创建临时表空间3、创建用户4、授权oracle创建新用户1、创建表空间CREATETABLESPACE"USER_SPACE"LOGGINGDATAFILE'/u01/app/oracle/oradata/UAT/USER_SPACE.DBF'SIZE32MREUSEAUTOEXTENDONNEXT200MMAXSIZEUNLIMITE......
  • 使用 lorax 创建引导文件(boot.iso)
    简介:RedHatEnterpriseLinux的安装系统是由一个名为lorax的工具创建的。lorax 工具用于创建 Anaconda 安装程序boot.iso如以及基本的发布树和.treeinfo元数据文件。其依赖关系相当轻量级,因为它需要能够在模拟chroot中运行环境。最好从与目标相同的版本运行lora......
  • 3、oracle迁移到postgres-执行动态sql传参不同
    目录oracle迁移到postgres-执行动态sql传参不同1、oracle使用的是:12、postgres使用的是$1oracle迁移到postgres-执行动态sql传参不同在sql字符串中,会动态传入值,使用阿拉伯数据定义传参的个数。1、oracle使用的是:1executeimmediate'select*fromsys_stuwherestu_name=......