热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

ORA00980:同义词转换不再有效

客户账号TB在操作软件时,报错:“[Microsoft][ODBCdriverforOracle][Oracle]ORA-00980:同义词转换不再有效

客户账号TB在操作软件时,报错:“[Microsoft][ODBC driver for Oracle][Oracle]ORA-00980: 同义词转换不再有效”。

 

使用拥有dba权限的账号sys的登录,进行相同的操作没有报错正常运行。

 

-------执行查找所有失效的同义词,生成删除脚本如下:

select 'drop '

 

       || decode(s.owner,

 

                 'PUBLIC',

 

                 'public synonym ',

 

                 'synonym ' || s.owner || '.')

 

       || s.synonym_name

 

       || ';' as "Dropping invalid synonyms:"

 

  from dba_synonyms s

 

 where table_owner not in ('SYSTEM', 'SYS')

 

   and db_link is null

 

   and not exists

 

 (select null

 

          from dba_objects o

 

         where s.table_owner = o.owner

 

           and s.table_name = o.object_name);

发现其中对应的存储过程zl_人员表_INSERT的同义词失效,处理办法删除重建:

SQL>Drop public synonym zl_人员表_INSERT;

SQL>Create public synonym zl_人员表_INSERT for zlhis.zl_人员表_INSERT;

 

----PS:查询当前用户下,没有创建同义词的对象有哪些?

Select *

 

  from dba_objects s

 

 where owner in ('ZLHIS') And object_type In('TABLE','PROCEDURE','FUNCTIONS')

 

   and Not exists

 

 (select null

 

          from dba_synonyms o

 

         Where o.table_owner = s.owner

 

           and o.table_name = s.object_name And o.db_link is null)

 

藉此引出了几个思考:

1、什么是同义词?为什么要创建同义词?同义词失效的影响?

2、哪些对象可以创建同义词?

3、同义词的操作? 

 

1同义词定义:Oracle的同义词(synonyms)从字面上理解就是别名的意思,和视图的功能类似,就是一种映射关系

常用于简化对象访问和提高对象访问的安全性。

同义词并不占用实际存储空间,只有在数据字典中保存了同义词的定义。

 

为什么要创建?

简单的说就是,为了直接使用特定用户(例如:用户ZS的表"人员表")的某个数据库对象!!!

ZS用户将表"人员表"的权限授予给用户LS,在没有创建公共同义词的前提下,LS用户登陆后要使用该表,需要在表名字前加"ZS.表名".

 

例如:

查询:SQL>select * from ZS.人员表;

为表创建公共同义词: SQL>create public synonym 人员表 for ZS.人员表;

创建表后可以直接访问SQL>select * from 人员表

 

2、在Oracle数据库中的大部分数据库对象,如表、视图、同义词、序列、存储过程、包等等,数据库管理员都可以根据实际情况为他们定义同义词。 

 

3、创建、删除、查询操作

(1).创建同义词语句:

create public synonym table_name for user.table_name;

(2).删除同义词:

drop public synonym table_name;

(3).3.查看所有同义词:

select * from dba_synonyms

 

导致“ORA-00980”错误的原因小结:

1.删除了数据库对象,但是忘记删除同名;

2.删除一个用户,但是忘记删除与此用户中相关的同名;

3.创建同名时,同名对应的数据库对象已经被删除掉了(这种情况很有意思)。

转:https://www.cnblogs.com/yuanchaoyong/p/10097019.html



推荐阅读
  • 包含phppdoerrorcode的词条 ... [详细]
  • MySQL Decimal 类型的最大值解析及其在数据处理中的应用艺术
    在关系型数据库中,表的设计与SQL语句的编写对性能的影响至关重要,甚至可占到90%以上。本文将重点探讨MySQL中Decimal类型的最大值及其在数据处理中的应用技巧,通过实例分析和优化建议,帮助读者深入理解并掌握这一重要知识点。 ... [详细]
  • PTArchiver工作原理详解与应用分析
    PTArchiver工作原理及其应用分析本文详细解析了PTArchiver的工作机制,探讨了其在数据归档和管理中的应用。PTArchiver通过高效的压缩算法和灵活的存储策略,实现了对大规模数据的高效管理和长期保存。文章还介绍了其在企业级数据备份、历史数据迁移等场景中的实际应用案例,为用户提供了实用的操作建议和技术支持。 ... [详细]
  • 本文旨在探讨信息安全专业的职业规划路径,结合个人经历和专家建议,为即将毕业的学生提供实用的指导。 ... [详细]
  • Oracle 用户锁定问题及解决方法
    本文介绍了如何在 Oracle 数据库中检查和处理用户锁定问题,包括查询被锁定的用户、解锁用户以及调整登录失败次数限制的方法。 ... [详细]
  • 本文详细介绍了MySQL数据库的基础语法与核心操作,涵盖从基础概念到具体应用的多个方面。首先,文章从基础知识入手,逐步深入到创建和修改数据表的操作。接着,详细讲解了如何进行数据的插入、更新与删除。在查询部分,不仅介绍了DISTINCT和LIMIT的使用方法,还探讨了排序、过滤和通配符的应用。此外,文章还涵盖了计算字段以及多种函数的使用,包括文本处理、日期和时间处理及数值处理等。通过这些内容,读者可以全面掌握MySQL数据库的核心操作技巧。 ... [详细]
  • 在什么情况下MySQL的可重复读隔离级别会导致幻读现象? ... [详细]
  • 在使用达梦数据库时,管理员可能会遇到连接频繁中断或特定SQL语句语法错误的问题。这些问题通常源于开发人员在创建对象时的不规范操作。为了解决这些问题,建议对数据库配置进行优化,并确保所有SQL语句符合达梦数据库的标准语法。此外,定期检查和维护数据库连接参数,以及对异常日志进行详细分析,也有助于及时发现并解决问题。 ... [详细]
  • 您的数据库配置是否安全?DBSAT工具助您一臂之力!
    本文探讨了Oracle提供的免费工具DBSAT,该工具能够有效协助用户检测和优化数据库配置的安全性。通过全面的分析和报告,DBSAT帮助用户识别潜在的安全漏洞,并提供针对性的改进建议,确保数据库系统的稳定性和安全性。 ... [详细]
  • 在使用 Cacti 进行监控时,发现已运行的转码机未产生流量,导致 Cacti 监控界面显示该转码机处于宕机状态。进一步检查 Cacti 日志,发现数据库中存在 SQL 查询失败的问题,错误代码为 145。此问题可能是由于数据库表损坏或索引失效所致,建议对相关表进行修复操作以恢复监控功能。 ... [详细]
  • 本文介绍了如何利用Shell脚本高效地部署MHA(MySQL High Availability)高可用集群。通过详细的脚本编写和配置示例,展示了自动化部署过程中的关键步骤和注意事项。该方法不仅简化了集群的部署流程,还提高了系统的稳定性和可用性。 ... [详细]
  • 本文详细介绍了在 Oracle 数据库中使用 MyBatis 实现增删改查操作的方法。针对查询操作,文章解释了如何通过创建字段映射来处理数据库字段风格与 Java 对象之间的差异,确保查询结果能够正确映射到持久层对象。此外,还探讨了插入、更新和删除操作的具体实现及其最佳实践,帮助开发者高效地管理和操作 Oracle 数据库中的数据。 ... [详细]
  • MyISAM和InnoDB是MySQL中最为广泛使用的两种存储引擎,每种引擎都有其独特的优势和适用场景。MyISAM引擎以其简单的结构和高效的读取速度著称,适用于以读操作为主、对事务支持要求不高的应用。而InnoDB引擎则以其强大的事务处理能力和行级锁定机制,在需要高并发写操作和数据完整性的场景下表现出色。选择合适的存储引擎应综合考虑业务需求、性能要求和数据一致性等因素。 ... [详细]
  • 在深入掌握Spring框架的事务管理之前,了解其背后的数据库事务基础至关重要。Spring的事务管理功能虽然强大且灵活,但其核心依赖于数据库自身的事务处理机制。因此,熟悉数据库事务的基本概念和特性是必不可少的。这包括事务的ACID属性、隔离级别以及常见的事务管理策略等。通过这些基础知识的学习,可以更好地理解和应用Spring中的事务管理配置。 ... [详细]
  • 在Oracle数据库中,若需更新特定列的数据,可以通过联接两张表来实现。例如,假设我们有两张表:`sales` 和 `goods`。为了更新 `sales` 表中的某些列,可以使用 `UPDATE` 语句结合 `JOIN` 操作,确保数据的准确性和一致性。具体操作步骤包括选择需要更新的目标列,定义联接条件,并指定更新后的值。这种方法不仅提高了数据处理的效率,还保证了数据的完整性。 ... [详细]
author-avatar
手机用户2502855107
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有