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

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

          一、查找原因

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

              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ù)字典反饋的信息確定是表被刪除(因為dba_synonyms表中有此記錄,表明同義詞未被刪除)導致此錯誤,決定重建該表。

          二、建表操作

              由于在正式環(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)容,可以開始建表了,因為同義詞后面將重新創(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、退出,使用普通用戶登陸,測試dual表是否能正常使用

             select sysdate from dual;

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

           

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

          posted on 2009-11-10 09:08 周銳 閱讀(3006) 評論(0)  編輯  收藏 所屬分類: Oracle
          主站蜘蛛池模板: 犍为县| 南召县| 泸水县| 澄江县| 新泰市| 互助| 汶上县| 娄底市| 河西区| 闽清县| 遂宁市| 师宗县| 绿春县| 吴桥县| 绍兴市| 天全县| 安康市| 吉木萨尔县| 瓮安县| 公安县| 长春市| 泽库县| 通山县| 金华市| 扎囊县| 莱阳市| 三都| 汶川县| 唐山市| 若羌县| 绵竹市| 五峰| 衡阳县| 措勤县| 唐山市| 穆棱市| 阜阳市| 平昌县| 南川市| 博罗县| 邹城市|