自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Oracle重編譯同義詞(Synonym)遇到ORA-01031總結(jié)

數(shù)據(jù)庫 Oracle
我們?cè)诰幾gINVALID的同義詞(synonym)的時(shí)候,可能在某些版本會(huì)遇到一些特殊權(quán)限問題,具體來說是遇到ORA-01031錯(cuò)誤。

[[409302]]

本文轉(zhuǎn)載自微信公眾號(hào)「DBA閑思雜想錄」,作者瀟湘隱者。轉(zhuǎn)載本文請(qǐng)聯(lián)系DBA閑思雜想錄公眾號(hào)。

我們?cè)诰幾gINVALID的同義詞(synonym)的時(shí)候,可能在某些版本會(huì)遇到一些特殊權(quán)限問題,具體來說是遇到ORA-01031錯(cuò)誤。下面構(gòu)造這樣一個(gè)例子:

如下所示,scott用戶下面創(chuàng)建了一個(gè)公共同義詞emp(下面測(cè)試環(huán)境為Oracle 10.2.0.5)

  1. SQL> show user
  2. USER is "SCOTT" 
  3. SQL> create public synonym emp for scott.emp; 
  4.  
  5. Synonym created. 
  6.  
  7. SQL>  

假設(shè)我們需要重新編譯同義詞,在system用戶下去編譯同義詞時(shí),就會(huì)遇到ORA-01031

  1. SQL> show user
  2. USER is "SYSTEM" 
  3. SQL> alter public synonym emp compile; 
  4. alter public synonym emp compile 
  5. ERROR at line 1: 
  6. ORA-01031: insufficient privileges 

另外一種情況也會(huì)遇到這個(gè)錯(cuò)誤,UserA 去編譯UserB下的同義詞的話,也會(huì)遇到這個(gè)錯(cuò)誤。按照我的理解,如果用戶擁有CREATE ANY SYNONYM和DROP ANY SYNONYM權(quán)限的話,應(yīng)該是可以編譯其它SCHEMA下的同義詞。而且SYSTEM用戶被授予了DBA角色,DBA角色擁有CREATE ANY SYNONYM 或DROP ANY SYNONYM的權(quán)限。

  1. SQL>  SELECT * FROM DBA_SYS_PRIVS WHERE PRIVILEGE IN('CREATE ANY SYNONYM','DROP ANY SYNONYM'AND GRANTEE='DBA'
  2.  
  3. GRANTEE                        PRIVILEGE                                ADM 
  4. ------------------------------ ---------------------------------------- --- 
  5. DBA                            DROP ANY SYNONYM                         YES 
  6. DBA                            CREATE ANY SYNONYM                       YES 
  7.  
  8.  
  9. SQL> SELECT * FROM DBA_ROLE_PRIVS WHERE GRANTEE='SYSTEM'
  10.  
  11. GRANTEE                        GRANTED_ROLE                   ADM DEF 
  12. ------------------------------ ------------------------------ --- --- 
  13. SYSTEM                         AQ_ADMINISTRATOR_ROLE          YES YES 
  14. SYSTEM                         DBA                            YES YES 
  15. SYSTEM                         MGMT_USER                      NO  YES 

但是metalink上的文檔Doc ID 1299001.1提示:同義詞的編譯時(shí),要么是sys用戶或者同義詞的OWNER才能編譯,也就是說,你要編譯同義詞emp,必須是scott用戶或sys用戶。

  1. SQL> show user 
  2. USER is "SYS" 
  3. SQL> alter public synonym emp compile; 
  4.  
  5. Synonym altered. 

所以在Oracle 10g下要編譯其它schema下的同義詞,必須是sys用戶。Ora-01031 When Compiling A Synonym (Doc ID 1299001.1)的介紹如下:

文檔Ora-01031 When Executing Alter Synonym Compile For Other Schema (Doc ID 1435898.1)中也有相關(guān)簡(jiǎn)單闡述

在Oracle 11.2.0.4.0中測(cè)試也是如此。但是后續(xù)官方文檔中將這個(gè)現(xiàn)象視為一個(gè)Bug,官方文檔4189542 - Only SYS can "alter synonym... compile" for another users's synonym (Doc ID 4189542.8)中有簡(jiǎn)單介紹,并且在后面的一些版本中修復(fù)了這個(gè)Bug,Doc ID 4189542.8的具體信息如下如下:

  1. Only SYS can "alter synonym... compile" for another users's synonym. 
  2.  
  3. Other users get ORA-1031 attempting to compile another users synonym. 
  4.   
  5.   
  6.  
  7. With this fix a user with both CREATE ANY SYNONYM and DROP ANY SYNONYM  
  8.  
  9. privilege is allowed to issue ALTER SYNONYM .. COMPILE for another users synonym. 

相同的現(xiàn)象在不同文檔中有不同闡述,確實(shí)有點(diǎn)讓人迷惑,如果獲取的信息不全或比較片面的話,可能會(huì)對(duì)這個(gè)問題和現(xiàn)象有不同的理解。

參考資料:

Ora-01031 When Compiling A Synonym (Doc ID 1299001.1)

Ora-01031 When Executing Alter Synonym Compile For Other Schema (Doc ID 1435898.1)

Bug 4189542 - Only SYS can "alter synonym... compile" for another users's synonym (Doc ID 4189542.8)

 

責(zé)任編輯:武曉燕 來源: DBA閑思雜想錄
相關(guān)推薦

2011-04-13 16:39:43

2010-04-22 14:29:12

Oracle同義詞

2010-04-22 14:26:00

Oracle創(chuàng)建同義詞

2021-01-19 08:09:04

Oracle數(shù)據(jù)庫權(quán)限

2010-05-04 14:02:53

Oracle同義詞

2010-05-06 09:09:13

Oracle同義詞

2010-04-22 14:55:39

2011-08-12 12:59:33

Oracle數(shù)據(jù)庫同義詞

2011-08-02 17:06:29

Oracle遠(yuǎn)程數(shù)據(jù)庫創(chuàng)建DB Link

2010-10-28 10:37:54

Oracle批量賦權(quán)

2023-03-08 15:38:56

Linux命令dict

2010-10-12 13:55:41

MySQL EXPLA

2021-04-17 23:10:59

Python微軟Word

2020-07-07 10:50:19

Python丄則表達(dá)文本

2010-04-22 11:32:57

Lvs負(fù)載均衡

2010-02-02 10:33:22

C++引用

2011-07-21 16:10:11

button按鈕jQuery Mobi

2025-03-28 03:20:00

MySQL數(shù)據(jù)庫搜索

2009-09-16 14:45:53

CCNA重難點(diǎn)

2017-11-13 13:39:24

SparkHadoop大數(shù)據(jù)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)