ORA-02019 错误处理

       ORA-02019 错误提示是未找到远程数据库的连接说明,通常发生在本地数据库无法连接到远程数据库。引发该问题的原因很多,比如网络连接,连接方式(tnsnames),dblinkc的创建等等。而下面的描述的故障则比较奇特。                                                                                                  

一、错误现象 

SQL> select * from scanfilename@dss.m85; select * from scanfilename@dss.m85 ORA-02019: 未找到远程数据库的连接说明 SQL> select * from xdoc_file@DSS.M85; select * from xdoc_file@DSS.M85 ORA-02019: 未找到远程数据库的连接说明

二、分析与解决   1.当前数据库版本   

SQL> select * from v$version; BANNER ---------------------------------------------------------------- Oracle8i Enterprise Edition Release 8.1.7.4.1 - Production PL/SQL Release 8.1.7.4.0 - Production CORE 8.1.7.2.1 Production TNS for 32-bit Windows: Version 8.1.7.4.0 - Production NLSRTL Version 3.4.1.0.0 - Production

 2.当前已创建的database link  

SQL> select * from dba_db_links; OWNER DB_LINK USERNAME HOST CREATED ------------------------------ ---------- ---------- --------------- ----------- DIMS DSS.M85 VIEWPIC PIC 2007-11-8 1 SQL> select * from v$dblink; -->当前没有正在使用的database link DB_LINK OWNER_ID LOGGED_ON HETEROGENEOUS PROTOCOL OPEN_CURSORS IN_TRANSACTION UPDATE_SENT COMMIT_POINT_STRENGTH ---------- ---------- --------- ------------- -------- ------------ -------------- ----------- ---------------------

3.下面的存储过程使用了分布式数据库

SQL> select text from dba_source where name='P_PROCESS_PIC_VALID'; TEXT -------------------------------------------------------------------------------- PROCEDURE "P_PROCESS_PIC_VALID" (processDate IN DATE --处理日期,如果不传入,就表示当天 ) AS recCount INT; pictureName NVARCHAR2(50); mntnOperMask VARCHAR2(10); --维护部操作人员账号前缀 oper NVARCHAR2(50); PicId NVARCHAR2(50); FilmId NVARCHAR2(50); v_maxid number; --20100720 BEGIN -------------------------------------------------20100720 -- 已导入的数据最大的ID select max(id) into v_maxid from T_scanfilename_m85; -- 导入新增的数据 execute immediate 'insert into T_scanfilename_m85 select * from scanfilename@dss.m85 TEXT -------------------------------------------------------------------------------- where id>:COL_1' using v_maxid; commit; -------------------------------------------------20100720 mntnOperMask := 'gl'; --从图系统导入有效片数据 INSERT INTO t_pic_xdoc_file(cph,cl,wldd,fx,wlrq,wlxm,lrsj,oper,picture_name SELECT T1.cph,T1.cl,T1.wldd,T1.fx,T1.wlrq,T1.wlxm,T1.lrsj,T1.oper,T2.FILE /*FROM xdoc_file@DSS.M85 T1,scanfilename@DSS.M85 T2*/ --20100720 FROM xdoc_file@DSS.M85 T1,T_scanfilename_m85 T2 WHERE T1.XH=T2.XH and t2.id>15717858 and not exists (select picture_name from t_pic_xdoc_file where pict AND substr(T1.oper,1,2)= mntnOperMask and (t1.lrsj >=sysdate-3); -- 将图文系统过来的有效片数据,分析处理后保存到统计表中 --处理有效片 FOR c IN(SELECT xf.*,ROWID FROM t_pic_xdoc_file xf WHERE status=1) LOOP SQL> select table_name,owner from dba_tables where table_name in ('SCANFILENAME','XDOC_FILE'); TABLE_NAME OWNER ------------------------------ ------------------------------ SCANFILENAME DIMS SQL> select * from dims.scanfilename where rownum<5; ID FILENAME XH --------------------------------------- -------------------------------------------------- ------------ 8606178 V1_00000020361002320070614095523017900004.jpg 8605441 V1_00000002101002120070614095523011900023.jpg 8605445 V1_00000002101002120070614095523011900025.jpg 8605449 V1_00000002101002120070614095523011900027.jpg

    4.尝试执行操作 

SQL> select * from scanfilename@dss.m85; select * from scanfilename@dss.m85 ORA-02019: 未找到远程数据库的连接说明 SQL> select * from xdoc_file@DSS.M85; select * from xdoc_file@DSS.M85 ORA-02019: 未找到远程数据库的连接说明 SQL> show user; User is "SYS" SQL> conn dims/dims_12345@dmsdb Connected to Oracle8i Enterprise Edition Release 8.1.7.4.1 Connected as dims SQL> select * from dba_db_links; OWNER DB_LINK USERNAME HOST CREATED --------------- --------------- --------------- --------------- ----------- DIMS DSS.M85 VIEWPIC PIC 2007-11-8 1 SQL> select * from user_db_links; DB_LINK USERNAME PASSWORD HOST CREATED --------------- --------------- ------------------------------ --------------- ----------- DSS.M85 VIEWPIC VIEWPIC PIC 2007-11-8 1

5.切换帐户后使用分布式数据库,提示监听不可用    

SQL> select * from xdoc_file@DSS.M85 ORA-12514: TNS: 监听进程不能解析在连接描述符中给出的 SERVICE_NAME SQL> select * from scanfilename@DSS.M85; select * from scanfilename@DSS.M85 ORA-12514: TNS: 监听进程不能解析在连接描述符中给出的 SERVICE_NAME pic = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 100.100.1.31)(PORT = 1521)) ) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = DSS) ) )

6.使用tnsping测试    

C:\>tnsping pic TNS Ping Utility for 32-bit Windows: Version 8.1.7.4.0 - Production on 26-7月 -2 011 15:32:35 (c) Copyright 1997 Oracle Corporation. All rights reserved. Attempting to contact (ADDRESS=(PROTOCOL=TCP)(HOST=100.100.1.31)(PORT=1521)) OK(20毫秒) C:\>sqlplus viewpic/viewpic@pic -->sqlplus 不能登陆 SQL*Plus: Release 8.1.7.0.0 - Production on 星期二 7月 26 15:33:15 2011 (c) Copyright 2000 Oracle Corporation. All rights reserved. ERROR: ORA-12514: TNS: 监听进程不能解析在连接描述符中给出的 SERVICE_NAME

7.查看本地tnsnames.ora 

pic = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 100.100.1.31)(PORT = 1521)) ) (CONNECT_DATA = (SERVER = DEDICATED) (SID = DSS) -->(原来为service_name,将其改为SID) ) ) C:\>sqlplus viewpic/viewpic@pic -->再次使用sqlplus登陆正常 SQL*Plus: Release 8.1.7.0.0 - Production on 星期三 7月 27 09:49:57 2011 (c) Copyright 2000 Oracle Corporation. All rights reserved. 连接到: Oracle8i Enterprise Edition Release 8.1.7.0.0 - 64bit Production With the Partitioning and Parallel Server options JServer Release 8.1.7.0.0 - 64bit Production SQL> select * from v$version; BANNER ---------------------------------------------------------------- Oracle8i Enterprise Edition Release 8.1.7.0.0 - 64bit Production PL/SQL Release 8.1.7.0.0 - Production CORE 8.1.7.0.0 Production TNS for IBM/AIX RISC System/6000: Version 8.1.7.0.0 - Developmen NLSRTL Version 3.4.1.0.0 - Production SQL> select * from scanfilename@DSS.M85 where rownum < 5; ID FILENAME XH ---------- -------------------------------------------------- -------------------- 8606178 V1_00000020361002320070614095523017900004.jpg 8605441 V1_00000002101002120070614095523011900023.jpg 8605445 V1_00000002101002120070614095523011900025.jpg

    8.是什么原因造成了需要将service_name改为SID,以前使用service_name一直正常。由于DSS.M85在故障前前曾重未做任何更改。Oracle 8之后推荐使用service_name,但实际上在Oracle 8使用service_name也可以正常使用。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏乐沙弥的世界

使用带dblink方式的datapump迁移Oracle 10g到11g

      对于从Oracle 10g下迁移数据库到Oracle 11g,除了使用RMAN方式之外,我们可以使用带dblink的datapump方式来实现基于逻...

7310
来自专栏杨建荣的学习笔记

海量数据迁移之外部表加载(100天)

本地有一个小的环境,今天照例登上sqlplus,突然发现报了如下的错误。一看原来归档满了。我记得前几天做一个批量操作临时把temp文件resize了很大,限于本...

34480
来自专栏杨建荣的学习笔记

创建index 使用Online导致的问题(95天)

在本地的测试库中,本来空间就不足,结果创建了一个表有600多万条记录,想创建一个index. 物理段有340多M. 临时段大小有100M,结果想创建一个索引,总...

378130
来自专栏杨建荣的学习笔记

归档问题导致的数据库无法启动 (80天)

本地有一个小的环境,今天照例登上sqlplus,突然发现报了如下的错误。一看原来归档满了。我记得前几天做一个批量操作临时把temp文件resize了很大,限于本...

342100
来自专栏数据和云

返璞归真:如何判断一个初始化参数是否来自默认设置

? 杨廷琨(yangtingkun) 云和恩墨 CTO 高级咨询顾问,Oracle ACE 总监,ITPUB Oracle 数据库管理版版主 Oracle初...

28970
来自专栏杨建荣的学习笔记

关于dual表的破坏性测试(r3笔记第60天)

关于dual表的破坏性测试,既然是破坏性测试,就需要确定这个测试仅限于测试或者个人学习所用,可能有些sql看似极为简单,但是一旦运行就会导致整个业务系统崩溃。 ...

407130
来自专栏Jerry的SAP技术分享

使用ABAP代码创建S/4HANA里的Sales Order

其中红色区域的值是我代码里硬编码的,而蓝色是函数SD_SALESDOCUMENT_CREATE自己创建的。

12160
来自专栏数据和云

诊断案例:从实例挂起到归档失败和内存管理的蝴蝶效应

杨廷琨(yangtingkun) 云和恩墨 CTO 高级咨询顾问,Oracle ACE 总监,ITPUB Oracle 数据库管理版版主 编辑手记:在很多数据...

32890
来自专栏乐沙弥的世界

Heap size 80869K exceeds notification threshold (51200K)

      前阵子的alert日志获得了所需堆尺寸的大小超出指定阙值的提示,即Heap size 80869K exceeds notification thr...

10730
来自专栏乐沙弥的世界

Linux/Unix shell 脚本中调用SQL,RMAN脚本

        Linux/Unix shell脚本中调用或执行SQL,RMAN 等为自动化作业以及多次反复执行提供了极大的便利,因此通过Linux/Unix ...

8710

扫码关注云+社区

领取腾讯云代金券