
問題現(xiàn)象:
DM管理工具,查看當(dāng)前用戶下,表列信息時,報錯:
錯誤號: -5504
錯誤消息: 沒有[SYS.V$CIPHERS]對象的查詢權(quán)限


實際該用戶是可以正常desc 查看列,正常select查看數(shù)據(jù)。

對比達夢的另一個工具:SQLark百靈,就沒有這個問題:

可以正常查看到表的列信息。

問題分析:
用工具查看表列信息時,DM管理工具Manager比SQLark工具需要更多的權(quán)限,也就是select on SYS.V$CIPHERS 權(quán)限。
解決方案:
個人認為,這應(yīng)該屬于DM管理工具的問題,查看表列信息時需要更多的,實際又完全可以避免的權(quán)限。
查看達夢官網(wǎng),針對這種沒有[SYS.VCIPHERS]對象的查詢權(quán)限的問題,建議添加SYS.VCIPHERS對象查詢權(quán)限,或者授予VTI角色。
相關(guān)權(quán)限說明:
https://eco.dameng.com/document/dm/zh-cn/pm/dm8-safety-appendix

測試,添加[SYS.V$CIPHERS]對象的查詢權(quán)限后,確實可以查看到列信息了:
SQL> grant select on SYS.V$CIPHERS to cjc;

但是這似乎違背了權(quán)限最小化原則,權(quán)限越小,當(dāng)出現(xiàn)誤操作或者BUG時,可破壞的范圍越小,過大的權(quán)限可能會出現(xiàn)看到了不該看到數(shù)據(jù)或執(zhí)行了不該執(zhí)行的操作 ,而不應(yīng)該因為管理工具權(quán)限沒控制好,而去添加[SYS.V$CIPHERS]、VDI、SVI、SOI等權(quán)限。
類似的問題
類似的問題還有這個:
錯誤號: -5504
錯誤信息:沒有[SYS.SYSOBJECTS]對象的查詢權(quán)限
這個錯誤更離譜,為了獲得[SYS.SYSOBJECTS]對象的查詢權(quán)限,需要添加SOI?角色權(quán)限,而SOI對應(yīng)了51個對象的查詢權(quán)限,多加了50個對象的查詢權(quán)限,詳細內(nèi)容可以查看我的另一篇文章:
https://mp.weixin.qq.com/s/EjEf8QNGFHMgGRFVyhQCiA?scene=1&click_id=1
奇葩的操作
還有一種場景,在擁有[SYS.SYSOBJECTS]對象的查詢權(quán)限情況下,使用達夢管理工具還會報錯:
錯誤號: -5504
錯誤消息: 沒有[SYS.V$CIPHERS]對象的查詢權(quán)限
就是通過 表空間—模式—表 的路徑去查看表信息,這種查詢方式很少見,今天看到某應(yīng)用廠商通過這種方式去查看,也是非常意外,正常應(yīng)該時去 模式—表 去查看。


而SQLark的報錯更清晰,更容易理解,建議DM管理工具 參考 SQLark去優(yōu)化一些細節(jié)。


歡迎關(guān)注我的公眾號《IT小Chen》





