posts - 431,  comments - 344,  trackbacks - 0
          原文地址:http://blog.csdn.net/alvenz/archive/2008/12/15/3519532.aspx

          今天登陸到測(cè)試環(huán)境,在做日常操作時(shí)需要使用到dual表,但是在使用了一個(gè)查詢語(yǔ)句時(shí)(SELECT to_char(current_timestamp) FROM dual)卻提示'ORA-00980: 同義詞轉(zhuǎn)換不再有效'錯(cuò)誤,于是開始了這次的分析和恢復(fù).

          一、查找原因

              根據(jù)在網(wǎng)上搜索得到的信息判斷可能是同義詞丟失或者是表被刪除,于是進(jìn)行以下操作以確定問題。

              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'

              根據(jù)以上數(shù)據(jù)字典反饋的信息確定是表被刪除(因?yàn)閐ba_synonyms表中有此記錄,表明同義詞未被刪除)導(dǎo)致此錯(cuò)誤,決定重建該表。

          二、建表操作

              由于在正式環(huán)境中該表存在,故連接到正式環(huán)境查看該表結(jié)構(gòu)

              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;

          有了以上內(nèi)容,可以開始建表了,因?yàn)橥x詞后面將重新創(chuàng)建,所以可以在建表前刪除,在操作之前使用sys重新登陸

          1、DROP PUBLIC SYNONYM dual;  --刪除同義詞

          2、create table dual
           (dummy varchar2(1))  --創(chuàng)建表

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

          4、create public synonym dual for dual  --創(chuàng)建同義詞

          5、grant select on dual to public with grant option  --授權(quán),如果不允許其它人可以將自己的權(quán)限傳遞給其他用戶,可以去掉with后面的內(nèi)容

          6、退出,使用普通用戶登陸,測(cè)試dual表是否能正常使用

             select sysdate from dual;

          7、若測(cè)試正常則代表dual表已經(jīng)被重新建立,至此,一次對(duì)dual表的恢復(fù)完成。

           

          本文來自CSDN博客,轉(zhuǎn)載請(qǐng)標(biāo)明出處:http://blog.csdn.net/alvenz/archive/2008/12/15/3519532.aspx

          posted on 2009-11-10 09:08 周銳 閱讀(3006) 評(píng)論(0)  編輯  收藏 所屬分類: Oracle
          主站蜘蛛池模板: 冷水江市| 灯塔市| 进贤县| 昌黎县| 乌拉特后旗| 武汉市| 盐山县| 临桂县| 大厂| 营口市| 龙海市| 莱西市| 东平县| 西畴县| 泾川县| 阳泉市| 铁岭市| 澳门| 嘉义县| 东海县| 舒城县| 横峰县| 虹口区| 原平市| 台北市| 象州县| 太和县| 阿拉尔市| 吕梁市| 宜州市| 山西省| 子长县| 朝阳县| 晋宁县| 海门市| 铜川市| 唐海县| 兴城市| 宿松县| 万载县| 横峰县|