需要創建一個用戶 只有查詢權限
于是CREATE USER selectuser IDENTIFIED BY selectuser ACCOUNT UNLOCK;
grant select any table to selectuser;
grant connect to selectuser;
grant select any dictionary to selectuser;
創建了這個selectuser用戶
然后發現 使用selectuser這個用戶查詢某用戶下的一個表 無法查詢出內容select * from user01.table01 (查詢結果只有列名 沒有內容)
但是使用用戶user01 查詢這個table01 表 是可以查詢出表中內容的 另外使用sys用戶也能查詢出表中內容
于是賦dba權限給selectuser用戶 通過normal 登錄 依然無法查詢出表中內容 也不報錯
通過sysdba 登錄 可以查詢到表中內容
selectuser用戶在沒有賦予dba權限時 是可以查詢到user01下其他表的內容的 僅table01 無法查詢
現在如何在selectusers 僅有查詢權限下 能夠查詢到table01中的內容呢 ?
另外 查詢 table01 的建表陳述句 確實是在用戶user01下 有索引
還有 查詢陳述句為 select * from user01.table01 同時用sys用戶執行 和 user01 執行 sql_id 完全相同
但是 分別執行 select count(*) from user01.table01 的結果卻不同
sys 用戶的執行結果為12萬條 user01 的執行結果為10000條
以上就是我在真實環境中遇到的問題 僅僅把用戶名和表名替換了下
系統 aix 6.1 oracle 10.2.0.4
請各位大神給些建議
uj5u.com熱心網友回復:
實測,沒有發現你說的問題。是不是操作的不是一個庫,后者,忽略了哪些細節
uj5u.com熱心網友回復:
謝謝你的支持 oracle 表有個行級訪問權限 是不是和這個有關同一庫中
sys用戶 和user01 用戶 select count(*)from table01 的結果大不相同
我又仔細查看了下建表陳述句 里面有VDP的存在
uj5u.com熱心網友回復:
如果是資料權限控制,那就很正常了uj5u.com熱心網友回復:
VDP的作用就是用戶在查詢表的時候自動增加一個where條件,所以不同用戶查詢同一張表得到不同的結果就很正常了uj5u.com熱心網友回復:
還有一個問題 用戶A下的表A 設定了資料訪問控制 sys 用戶可以查看到全部的資料 用戶B可以看到部分資料 其他用戶查看的結果全部為空值 現在要新增一個用戶C 他可以查看到和B用戶相同的內容 該怎么設定授權呢?uj5u.com熱心網友回復:
VDP應該有一個自定義的專門設定用戶資料的權限表,找到這張表,把用戶B的資料復制到用戶C轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/63608.html
標籤:基礎和管理
上一篇:增量備份1級怎么大小5G 為什么會和全備100多G花費的時間差不多呢?
下一篇:觸發器效率問題
