ORA-01720 錯誤及解決方法
ORA-01720 錯誤表示在 Oracle 數(shù)據(jù)庫中嘗試授權(quán)時,缺少必要的 grant option 權(quán)限。這通常發(fā)生在用戶試圖將權(quán)限傳遞給其他用戶時,但自身并未被授予傳遞權(quán)限。
示例,假設(shè)以下場景:
-
用戶 A 創(chuàng)建了視圖 V_A,其中視圖中用了C用戶T_C表。
-
用戶 B 使用視圖 表V_A 。
-
用戶 B 嘗試將 V_B 的查詢權(quán)限授予用戶 C。
執(zhí)行以下命令時會報錯:
-- 基于1,我們要將用戶C的表 T_C 授權(quán)給用戶 A
GRANT SELECT ON T_C TO C;
-- 基于2,我們要將用戶A的視圖表 V_A 授權(quán)給用戶 B
GRANT SELECT ON V_A TO B;
-- 那么在用戶 B 下使用視圖表 V_A ,會出現(xiàn)ORA-01720報錯,即使將用戶C的表 T_C 授權(quán)給用戶 C,依然無法解決該問題
GRANT SELECT ON T_C TO B;
解決方法:
1. 使用 WITH GRANT OPTION
在用戶 C 授權(quán)給用戶 A 時,添加 WITH GRANT OPTION,允許用戶 A 將權(quán)限傳遞給其他用戶。
-- 用戶 A 授權(quán)給用戶 B,并允許傳遞權(quán)限
GRANT SELECT ON T_C TO A WITH GRANT OPTION;
-- 用戶 A 再次授權(quán)給用戶 B
GRANT SELECT ON V_A TO B;
此時,用戶 B 可以正常訪問視圖 V_A。
2. 權(quán)限鏈分析
確保所有涉及的對象(如表或視圖)都已正確授權(quán)。如果用戶 A 的視圖依賴于多個對象,則每個對象都需要添加 WITH GRANT OPTION。
注意事項
-
謹(jǐn)慎使用:WITH GRANT OPTION 會賦予被授權(quán)者較大的權(quán)限,需確保其安全性。
-
如果需要進(jìn)一步授權(quán)(如用戶 B 授權(quán)給其他用戶),需重復(fù)上述步驟。
通過以上方法,可以有效解決 ORA-01720 錯誤并完成權(quán)限傳遞。
不管在什么地方上班,請記住:
工作不養(yǎng)閑人,團(tuán)隊不養(yǎng)懶人。入一行先別惦記著賺錢,先學(xué)著讓自己值錢。賺不到錢賺知識;賺不到知識賺經(jīng)歷;賺不到經(jīng)歷賺閱歷;以上都賺到了就不可能賺不到錢。只有先改變自己的態(tài)度,才能改變?nèi)松母叨取? 讓一個人迷茫的原因只有一個,那就是本該拼搏的年紀(jì),卻想的太多,做的太少。

浙公網(wǎng)安備 33010602011771號