全局观: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

相关文章
|
11月前
|
存储 消息中间件 SQL
Oracle-知识结构漫谈
Oracle-知识结构漫谈
55 0
|
SQL Oracle 关系型数据库
4.17以下对迁移Oracle到PoalrDB O的方法描述,不恰当的是哪些?
2.以下对迁移Oracle到PoalrDB O的方法描述,不恰当的是哪些 A. 应用只需要修改下驱动程序,其他不修改就能完全运行 B. 不需要掌握Oracle的性能情况,直接按照客户的口头描述进行数据库选型和数据库规格选型 C. 迁移Oracle到PoalrDB O,正确的做法是先全面评估源Oracle库的对象、SQL,性能现状、维护方式,服务器类型,再进行目标数据库选型 D. 迁移Oracle到PoalrDB O不止是数据迁移,要考虑业务应用如何适配目标数据库,面向业务准确性进行应用和数据库改造、调优 正确答案:AB
96 0
|
监控 Oracle 关系型数据库
|
SQL 存储 Oracle
Oracle 结构概况
一、数据库体系结构概况 Oracle Server由两个实体组成:实例(instance)与数据库(database)。 1、实例:实例是数据库启动时初始化的一组进程和内存结构 2、数据库:数据库则指的是用户存储数据的一些物理文件 这两个实体是独立的,不过连接在一起。
1002 0
|
SQL Oracle 关系型数据库
|
存储 Oracle 关系型数据库
|
存储 Oracle 关系型数据库
|
SQL Oracle 关系型数据库