動態

詳情 返回 返回

ORA-01720 錯誤及解決方法 - 動態 詳情

ORA-01720 錯誤表示在 Oracle 數據庫中嘗試授權時,缺少必要的 grant option 權限。這通常發生在用户試圖將權限傳遞給其他用户時,但自身並未被授予傳遞權限。

示例,假設以下場景:

  1. 用户 A 創建了視圖 V_A,其中視圖中用了C用户T_C表。

  2. 用户 B 使用視圖 表V_A 

  3. 用户 B 嘗試將 V_B 的查詢權限授予用户 C。

執行以下命令時會報錯:

-- 基於1,我們要將用户C的表 T_C 授權給用户 A
GRANT SELECT ON T_C TO C;
 
-- 基於2,我們要將用户A的視圖表 V_A 授權給用户 B
GRANT SELECT ON V_A TO B;
 
-- 那麼在用户 B 下使用視圖表 V_A ,會出現ORA-01720報錯,即使將用户C的表 T_C 授權給用户 C,依然無法解決該問題
GRANT SELECT ON T_C TO B;
 
-- 報錯:ORA-01720: grant option does not exist for 'V_A'

 

解決方法:

1. 使用 WITH GRANT OPTION

在用户 C 授權給用户 A 時,添加 WITH GRANT OPTION,允許用户 A 將權限傳遞給其他用户。

-- 用户 A 授權給用户 B,並允許傳遞權限
GRANT SELECT ON T_C TO A WITH GRANT OPTION;

-- 用户 A 再次授權給用户 B
GRANT SELECT ON V_A TO B;

此時,用户 B 可以正常訪問視圖 V_A。

2. 權限鏈分析

確保所有涉及的對象(如表或視圖)都已正確授權。如果用户 A 的視圖依賴於多個對象,則每個對象都需要添加 WITH GRANT OPTION。

注意事項

  • 謹慎使用:WITH GRANT OPTION 會賦予被授權者較大的權限,需確保其安全性。

  • 如果需要進一步授權(如用户 B 授權給其他用户),需重複上述步驟。

通過以上方法,可以有效解決 ORA-01720 錯誤並完成權限傳遞。

 

Add a new 評論

Some HTML is okay.