客户账号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.创建同名时,同名对应的数据库对象已经被删除掉了(这种情况很有意思)。

ORA-00980: 同义词转换不再有效的更多相关文章

  1. Oracle Ora 错误解决方案合集

    注:本文来源于 < Oracle学习笔记 --- Oracle ORA错误解决方案 > ORA-00001: 违反唯一约束条件 (.)错误说明:当在唯一索引所对应的列上键入重复值时,会触发 ...

  2. Oracle 错误总结及问题解决 ORA

    参考地址 ORA-00001: 违反唯一约束条件 (.)错误说明:当在唯一索引所对应的列上键入重复值时,会触发此异常.ORA-00017: 请求会话以设置跟踪事件ORA-00018: 超出最大会话数O ...

  3. Oracle ORA

    ORA-00001: 违反唯一约束条件 (.) 错误说明:当在唯一索引所对应的列上键入重复值时,会触发此异常. ORA-00017: 请求会话以设置跟踪事件 ORA-00018: 超出最大会话数 OR ...

  4. ORA 各种oraclesql错误

    ORA-00001: 违反唯一约束条件 (.) ORA-00017: 请求会话以设置跟踪事件 ORA-00018: 超出最大会话数 ORA-00019: 超出最大会话许可数 ORA-00020: 超出 ...

  5. Oracle数据库对象_同义词

    同义词是一种数据库对象,它是为一个数据库对象定义的别名,使用同义词的主要目的是为了简化SQL语句的书写. 同义词的概念和类型 利用同义词可以为用户的一个对象,或者其他用户的一个对象定义别名,从而简化命 ...

  6. Oracle 错误码

    Oracle作为一款比较优秀同时也比较难以掌握的大型数据库,在我们学习使用的过程中,不可避免的会遇到一些错误,为此 Oracle 给出了一套完备的错误消息提示机制 我们可以根据Oracle给出的消息提 ...

  7. Oracle 11g数据库详解(2)

    FAILED_LOGIN_ATTEMPTS 用于指定连续登陆失败的最大次数 达到最大次数后,用户会被锁定,登陆时提示ORA-28000 UNLIMITED为不限制 精确无误差 是 实时 PASSWOR ...

  8. Oracle错误览表

    Oracle 错误总结及问题解决 ORA     本文转自:https://www.cnblogs.com/zhangwei595806165/p/4972016.html  作者@承影剑 ORA-0 ...

  9. Oracle Standard Error 列表

    今天,我特意从网上找了一些,以及自己平时总结的,关于错误编号和说明,平时我们在写项目的时候,往往是可能会出现下面这些错误,例如:违反唯一约束,无效的会话ID,等等.希望对大家有点帮助!可以看看,如果有 ...

随机推荐

  1. Maven 搭建 SSM框架——Spring+SpringMVC+Mybatis的搭建教程

    一:概述 SSM框架在项目开发中经常使用到,相比于SSH框架,它在仅几年的开发中运用的更加广泛. Spring作为一个轻量级的框架,有很多的拓展功能,最主要的我们一般项目使用的就是IOC和AOP.Sp ...

  2. [ZT] matlab中plot画图参数的设置

    一.Matlab绘图中用到的直线属性包括: (1)LineStyle:线形 (2)LineWidth:线宽 (3)Color:颜色 (4)MarkerType:标记点的形状 (5)MarkerSize ...

  3. Oracle管理监控之rlwrap-0.37.tar.gz实现sqlplus上下翻页

    1.上传rlwrap-0.37.tar.gz到linux 2.解压rlwrap-0.37.tar.gz [root@node1 mnt]# tar zxvf rlwrap-0.37.tar.gz [r ...

  4. android stream media

    http://www.cnblogs.com/skyseraph/archive/2012/03/31/2427593.html http://www.cnblogs.com/lingyunhu/p/ ...

  5. /var/spool/postfix/maildrop 出现大量文件原因和解决办法

    今天发现服务器硬盘报警,出现空间不足的情况,后经查看发现是 /var/spool/postfix/maildrop 有大量文件,但服务器本身没有启动 postfix服务. 继续上网查资料,发现是cro ...

  6. 【linux set命令】shell bash 打印执行的命令

    在文件开头加上 set -x 可以打印执行的命令,可以用于调试 set 命令使用方法 https://www.jianshu.com/p/ea406382be3e

  7. 事务控制及try catch

    一.事务控制 BEGIN TRY BEGIN TRAN; DECLARE @aaa NVARCHAR(MAX); SET @aaa = 9 / 0; COMMIT TRAN;END TRYBEGIN ...

  8. golang使用vendor目录来管理依赖包

    Vendor目录介绍 随着Go 1.5 release版本的发布,vendor目录被添加到除了GOPATH和GOROOT之外的依赖目录查找的解决方案.在Go 1.6之前,你需要手动的设置环境变量GO1 ...

  9. vue学习之六路由系统

    一.vueRouter实现原理 VueRouter的实现原理是根据监控锚点值的改变,从而不断修改组件内容来实现的,我们来试试不使用VueRouter,自己实现路由控制,如下代码: <!DOCTY ...

  10. idea 连接数据库

    1:如果没有数据库连接插件,下载database插件 settings>plugin>Database Navigator 下载. 2:重启 3:进入 view>tool windo ...