【原創】drop操作與dual還是有很大關係的(ORA-01031錯誤的解決)
今天做實驗的時候發現機器中的一個資料庫執行drop tablespace會報下面的錯誤(很奇怪的錯誤,sys使用者操作楞說許可權不足):
SQL>drop tablespace test1;
drop tablespace test1
*
ERROR at line 1:
ORA-00604: error occurred at recursive SQL level 1
ORA-01031: insufficient privileges
使用sql trace跟蹤了一下,發現是在執行下面的SQL語句時出錯了
The following statement encountered a error during parse:
select dummy from dual where ora_dict_obj_type = 'TABLE'
Error encountered: ORA-01031
突然想到前幾天做實驗的時候折騰dual表來著,檢視一下現在dual表的情況:
sys@TEST>select * from dual;
D A
- ----------
X
估計找到原因了,上次做實驗的時候給dual表新增了一列,看來drop操作看來是要用到dual表的。嘗試刪除A列,但由於dual表是屬於sys使用者的,不能刪除
sys@TEST>alter table dual drop column a;
alter table dual drop column a
*
ERROR at line 1:
ORA-12988: cannot drop column from table owned by SYS
最後把dual表重建了,問題解決。看樣在dual表在Oracle資料庫中還是很重要的,一定不能對生產庫的dual做除select外的其他操作。解決的步驟如下:
1.先建立了一個自定義的dual表暫時頂替
sys@TEST>create table my_dual as select dummy from dual;
Table created.
sys@TEST>select * from my_dual;
D
-
X
2.建立臨時dual表的同義詞,並賦給所有使用者select的許可權
sys@TEST>create public synonym dual for my_dual;
Synonym created.
sys@TEST>grant select on my_dual to public;
Grant succeeded.
3.刪除原有dual表
sys@TEST>drop table sys.dual;
Table dropped.
4.重建dual表(第一個dual就新建的sys.dual表,第二個dual是my_dual的同義詞)
sys@TEST>create table dual as select * from dual;
Table created.
5.刪除在臨時dual表上建立的同義詞
sys@TEST>drop public synonym dual;
Synonym dropped.
sys@TEST>select * from dual;
D
-
X
6.建立dual表的同義詞,並賦給所有使用者select的許可權
sys@TEST>create public synonym dual for sys.dual;
Synonym created.
sys@TEST>grant select on dual to public;
Grant succeeded.
7.重建dual表後,刪除表空間沒有問題了
sys@TEST>drop tablespace temp01 including contents and datafiles;
Tablespace dropped.
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/498744/viewspace-258714/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- dual表與create table語句的關係
- 7.Hibernate一對多關係建立與錯誤解決
- 誤刪除dual表的解決辦法
- 【原創】WEB元件的關聯關係Web元件
- 如何解決該錯誤?(與Struts有關)
- 關於“類不能支援Automation操作”錯誤的解決方法
- 在Java中,以下有關類的關聯關係描述錯誤的是()Java
- 原創:解決xp下安裝jbuider 2005的錯誤UIIDE
- 解決使用者drop不掉的 ORA-01940 錯誤
- 還原資料庫RMAN-06023錯誤的解決方法資料庫
- ORA-01031: insufficient privileges錯誤解決方法
- 【原創】Oracle10g dual表的研究Oracle
- HWM和delete,drop,truncate的關係delete
- 使用orapwd密碼重建解決ORA-01031錯誤密碼
- mysql與php錯誤解決MySqlPHP
- [原創] 有關觸發器 ORA-04091解決方法觸發器
- 【原創】myeclipse6 反向工程生成hibernate pojo錯誤解決EclipsePOJO
- 關於python操作帶有中文檔名報錯的解決辦法Python
- ORA-00845的錯誤與解決方案
- 創業者請想清楚,該關注自己的產品還是需要解決的問題?創業
- 與CNAME有關的DNS解決例項DNS
- 一次對dual表的恢復操作(ORA-00980:同義詞轉換不再有效錯誤解決方法) (轉載)
- 關於drop操作對role的影響
- undefined reference to錯誤的解決方法Undefined
- SAXParseException的錯誤解決之二Exception
- PHP錯誤“Thisfilehasexpired”的解決方法PHP
- [原創]請問需求捕獲、需求分析、系統分析之間的關係是怎樣的?
- 大資料,還是大錯誤?大資料
- 海外常見的http錯誤程式碼原因與解決HTTP
- ORACLE常見錯誤程式碼的分析與解決(轉)Oracle
- 與if的關係
- sql:delete if exists還是drop if exists?SQLdelete
- win10系統還原0x80070005錯誤如何修復_win10系統還原錯誤0x8070005解決教程Win10
- 【原創】表空間相關操作
- 深入解讀ESB與SOA的關係
- ghost win10沒有一鍵還原功能怎麼辦_ghost win10沒有還原功能的解決方法Win10
- dns錯誤怎麼辦 dns錯誤的解決辦法DNS
- 【有碼】go併發操作map的錯誤用例Go