oracle 同义词转换错误,一次对dual表的恢复操作(ORA-00980:同义词转换不再有效错误解决方法) (转载)...

本文记录了一次在Oracle数据库中遇到'DUAL'表丢失并进行恢复的过程。通过查询数据字典确定表被删除而非同义词丢失,然后通过重建'DUAL'表,包括删除同义词、创建表、插入数据、创建同义词和授权,最终成功恢复了'DUAL'表的正常使用。
摘要由CSDN通过智能技术生成

今天登陆到测试环境,在做日常操作时需要使用到dual表,但是在使用了一个查询语句时(SELECT to_char(current_timestamp) FROM dual)却提示'ORA-00980: 同义词转换不再有效'错误,于是开始了这次的分析和恢复.

一、查找原因

根据在网上搜索得到的信息判断可能是同义词丢失或者是表被删除,于是进行以下操作以确定问题。

SELECT * FROM Dba_Objects do WHERE do.object_type ='TABLE' AND do.object_name = 'DUAL'

SELECT * FROM Dba_Tables dt WHERE dt.table_name = 'DUAL'

SELECT * FROM Dba_Synonyms ds WHERE ds.table_name = 'DUAL'

根据以上数据字典反馈的信息确定是表被删除(因为dba_synonyms表中有此记录,表明同义词未被删除)导致此错误,决定重建该表。

二、建表操作

由于在正式环境中该表存在,故连接到正式环境查看该表结构

SQL> desc dual;

Name Type Nullable Default Comments

----- ----------- -------- ------- --------

DUMMY VARCHAR2(1) Y

查看建表脚本:

-- Create table

create table SYS.DUAL

(

DUMMY VARCHAR2(1)

)

tablespace SYSTEM

pctfree 10

pctused 40

initrans 1

maxtrans 255

storage

(

initial 104

next 104

minextents 1

maxextents 505

pctincrease 100

);

-- Grant/Revoke object privileges

grant select on SYS.DUAL to PUBLIC;

有了以上内容,可以开始建表了,因为同义词后面将重新创建,所以可以在建表前删除,在操作之前使用sys重新登陆

1、DROP PUBLIC SYNONYM dual; --删除同义词

2、create table dual

(dummy varchar2(1)) --创建表

3、INSERT INTO dual VALUES('X') --插入值

4、create public synonym dual for dual --创建同义词

5、grant select on dual to public with grant option --授权,如果不允许其它人可以将自己的权限传递给其他用户,可以去掉with后面的内容

6、退出,使用普通用户登陆,测试dual表是否能正常使用

select sysdate from dual;

7、若测试正常则代表dual表已经被重新建立,至此,一次对dual表的恢复完成。[@more@]

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值