开发者社区> 科技探索者> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

全局观:ORACLE问题解决一例

简介:
+关注继续查看
     今天协助同事解决了同一个数据库上的几个问题,记录下且总结下吧。
         首先是同事让我帮助他看看他碰到的一个问题:
        
    在某个数据库的用户下,有一个dblink,如果直接执行使用dblink的查询就会报ORA-02019错误,例如:
    select * from tab@dbjs;
    但是以前利用该dblink建立的SYNONYM执行查询却没有没有问题。
        
        看看ORA-02019的错误说明
connection description for remote database not found

Cause: An attempt was made to connect or log in to a remote database using a connection description that could not be found.

Action: Specify an existing database link. Query the data dictionary to see all existing database links. See your operating system-specific Net8 documentation for valid connection descriptors.

        显然dblink已经出现了问题,所有的相关查询都应该有问题,不可能有好有坏。经检查其实问题出现在SYNONYM(同义词)上。为什呢,原来在数据库上有相同名称的同义词,只是用户不同是基于PUBLIC的!所以其实这些所谓没有出问题的SYNONYM其实根本已经有了问题,只是我们默认使用的是PUBLIC下的名称相同的同义词!
        SYNONYM确实给开发和管理提供了非常的便利,但是这个怪异的家伙同时也会有很多的副作用产生。就像这次碰到的问题,一个基于PUBLIC的同名SYNONYM,因为其关联的是另外一个用户,而并非我们需要操作的用户,一旦执行起删除、修改等操作后果不堪设想。
        解决完该问题后,同事准备重新建立新的dblink,但是原来的却无论怎样也无法删除,报ORA-02024。看看ORACLE的错误说明;
       
database link not found

Cause: Database link to be dropped is not found in dictionary

Action: Correct the database link name
  
       很怪异,怎么会呢?名字不会错的。后来突然想起来,这个数据库曾经试图做stream,所以修改过global_name,名字是带后缀的(ORCL.CPLATFORM)。所以现在就无法删除了,除非这个dblink的名字也使用相同的后缀呀!
         只能通过基表进行删除了:
       
SQL> delete from link$ WHERE OWNER#=46 and name='DBJS';

1 row deleted

SQL> commit;

Commit complete

        OWNER#对应的是USER_ID,NAME对应的是dblink的名字。OK!,问题解决。
        
        这里我们不难看出,作为数据库中每一项技术都会有好的地方,同时也都会或多或少的存在些问题(局限性)。作为一个数据库管理人员或设计人员需要有一个较高层次的大局观,否则可能会图一时方便,一时快速解决问题,为今后的数据库或者是应用的运行带来极大的问题甚至是故障!

         想想现在解决眼前,然后请再想想以后保证未来。毕竟各种应用系统都是动态发展的。-:)

本文转自Be the miracle!博客51CTO博客,原文链接http://blog.51cto.com/miracle/118337如需转载请自行联系原作者


Larry.Yue

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
apollo系列之apollo2 mcu开发(驱动篇)之2.1-flash开发
apollo系列之apollo2 mcu开发(驱动篇)之2.1-flash开发
53 0
AnswerOpenCV(1001-1007)一周佳作欣赏
外国不过十一,所以利用十一假期,看看他们都在干什么。一、小白问题 http://answers.opencv.org/question/199987/contour-single-blob-with-multiple-object/ Contour Single blob with multiple object Hi to everyone.
1311 0
详解 Weex JS Framework 的编译过程
之前写了一篇文章[《Weex 框架中 JS Framework 的结构》](http://www.atatech.org/articles/60600)概述了 JS Framework 的整体结构,其中编译过程写的有些简略,这里再详细介绍一下。 一句话概括 JS Framework 的编译过程就是: **将 JS Bundle 转换成 Virtual DOM 发送到原生模块渲染。**
8588 0
apache软件no_ssl和openssl两种类型的区别
apache软件同一版本有两种类型:no_ssl和openssl: openssl多了个ssl安全认证模式,它的协议是HTTPS而不是HTTP,这就是带有SSL的服务器与一般网页服务器的区别了。 一般情况下,我们下载no_ssl版本的就ok了。
736 0
5487
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载