Oracle查詢檢視需要有基表的查詢許可權嗎?
場景:將使用者A的檢視查詢許可權賦予使用者B報錯,提示ORA-01720: grant option does not exist for ‘xx.xx’
問題:
1.查詢檢視,是否必須要有檢視基表的查詢許可權?
2.將檢視的查詢許可權賦予其他使用者,只需要有基表的查詢許可權嗎?
測試步驟:
1.建立三個使用者test1,test2,test3,賦予connect,resource,create view許可權。
SQL> create user test1 identified by test1;
User created.
SQL> create user test2 identified by test2;
User created.
SQL> create user test3 identified by test3;
User created.
SQL> grant create view to test2;
Grant succeeded.
2.在test1使用者下建立表t1,將t1的查詢許可權賦予test2。test2使用者建立檢視v_t1,將檢視v_t1的查詢許可權賦予test3。
SQL> create table test1.t1 as select * from dba_objects;
SQL> conn test1/test1;
Connected.
SQL> grant select on t1 to test2;
Grant succeeded.
SQL> conn test2/test2;
Connected.
SQL> create view v_t1 as select * from test1.t1 where rownum = 1;
SQL> grant select on v_t1 to test3;
grant select on v_t1 to test3
*
ERROR at line 1:
ORA-01720: grant option does not exist for 'TEST1.T1'
SQL> conn test1/test1;
Connected.
SQL> grant select on t1 to test2 with grant option;
Grant succeeded.
SQL> conn test2/test2;
Connected.
SQL> grant select on v_t1 to test3;
Grant succeeded.
3.test3使用者查詢檢視v_t1,然後查詢基表t1。
SQL> conn test3/test3
Connected.
SQL> select * from test2.v_t1;
--結果省略
SQL> select * from test1.t1 where rownum = 1;
select * from test1.t1 where rownum = 1
*
ERROR at line 1:
ORA-00942: table or view does not exist
結論:
1.查詢檢視,不需要基表的查詢許可權。
2.將檢視的查詢許可權賦予其他使用者,賦權使用者需要基表的with grant option許可權。
總結:
檢視的許可權,有兩點需要引起注意:
1.檢視中,類似於定義者許可權的儲存過程,是遮蔽了角色許可權的。比如如果TEST1沒有顯式地將T1表的SELECT許可權給予TEST2,那麼TEST2在建立檢視V_T1時也會報ORA-01031錯誤,即使TEST2使用者擁有DBA角色許可權。
2.如果在使用者A的檢視中,引用了其他使用者B的表,使用者A將檢視的訪問許可權給予使用者C,那麼就變相地將使用者B的表的訪問許可權給予了使用者C,因此,使用者A必須有將使用者B的表的訪問許可權轉授使用者C的許可權,也就是使用者B在授予A許可權時,必須使用with grant option。
相關推薦
Oracle查詢檢視需要有基表的查詢許可權嗎?
場景:將使用者A的檢視查詢許可權賦予使用者B報錯,提示ORA-01720: grant option does not exist for ‘xx.xx’ 問題: 1.查詢檢視,是否必須要有檢視基表的查詢許可權? 2.將檢視的查詢許可權賦予其他使用者,只需
Oracle筆記(六) 多表查詢
針對 多人 筆記 padding 工資 cells 找到 mem 概念 Oracle筆記(六) 多表查詢 本次預計講解的知識點 1、 多表查詢的操作、限制、笛卡爾積的問題; 2、 統計函數及分組統計的操作; 3、 子查詢的操作,並且結合限定查詢、數據排序、多表查詢、統計
oracle數據庫之單表查詢
數據 方法 第一個 常用 單表 分組查詢 創建表 如果 value 作為一合格的測試人員對數據庫的單表查詢、多表查詢、分組查詢、子查詢等等這些基本查詢方法還是要會的。不然到企業中,容易被一些人鄙視,或者說如果數據庫學不好,表查不明白,那麽對自己能力來說也是一種侮辱,因為
oracle高階查詢(3)——多表查詢
1.多表查詢的基礎笛卡爾集 多張表查詢產生的表的列數等於所有表的列數之和,行數等於多張表之積 2.多表查詢分等值連線,不等值連線,外連線,自連線 等值連線 select e.empno,e.ename from emp e,dept d where e .deptno
ORACLE中賦予一個使用者查詢另一個使用者所有表的許可權
在管理員賬戶下執行select 'GRANT SELECT ON 被查詢使用者表.'||table_name||' to 要查詢使用者;' from all_tables where lower(owner)='被查詢使用者'; 例如:select 'GRANT SELE
spring boot 學習心得 使用JpaRepository註解自定義SQL查詢數據庫多表查詢
自定義 net http entity onetomany tom pri 查詢語句 重點 一. 首先在@Entity註解的類裏面要寫好外鍵關系. 這個 @ManyToOne 註解可以建立外鍵關系, 不要在自己傻傻的寫一個 private int grades_id;
MySql cmd下的學習筆記 —— 有關多表查詢的操作(多表查詢練習題及union操作)
image ins myisam name sam row div mysq gin 先建立一張 m 表 mysql> create table m ( -> mid int, -> hid int, -> gid in
靜態表查詢和二分法靜態表查詢
簡單的操作。。不解釋 #include <iostream> #include <cstdio> #include <cstdlib> #include <string> #include <cmath> #in
JPA分頁多條件查詢和分頁聯表查詢
一、分頁多條件查詢–重寫Specification的toPredicate方法 Spring Data JPA支援JPA2.0的Criteria查詢,相應的介面是JpaSpecificationExecutor。 Criteria 查詢:是一種型別安全和更面
程序員需要有好的英語水平嗎?
都是 flow over 閱讀 真的 程序員 最新 較差 image 程序員這個行業是很特殊的。之所以說特殊,就是因為它所有的技術大多來自歐美,所以最主流,最新鮮,最正確的技術文章都是英文,遺憾的是,大部分還沒有譯本。 有些譯文還比較差。與其等待別人的翻譯,不如直接閱讀原
Oracle建立使用者並給使用者授權查詢指定表或檢視的許可權
MSV31賬戶登入資料庫進行如下操作: CREATE USER NORTHBOUND IDENTIFIED BY NORTHBOUND DEFAULT TABLESPACE "TBS_DNINMSV31" TEMPORARY TABLESPACE "T
oracle新建使用者匯入scott的表,解決新使用者查詢scott表時出現表或檢視不存在的問題
1. 備份scott/tiger使用者的表空間 進入控制檯,進入某一個空的目錄。 執行命令:exp 之後會生成一個EXPDAT.DMP 2. 進入dba帳戶 conn sys/sys as sysdba; create user fpc identifie
Oracle鎖表查詢和解鎖方法
數據庫查詢 lar 關系 鎖級別 share 技術 獲取 suse b2c 數據庫操作語句的分類 DDL:數據庫模式定義語言,關鍵字:create DML:數據操縱語言,關鍵字:Insert、delete、update DCL:數據庫控制語言 ,關鍵字:grant
Oracle子查詢和多表查詢
左外連接 查詢 sele 多表查詢 字段 ora 需要 avg lar 多表查詢需要用到表的連接 連接可以分為:(自行百度) 交叉連接(數字邏輯的笛卡爾積,不做解釋) 等值連接 例如:select * from t_a, t_b where t_a.
Oracle 定時查詢數據插入新表中(job+存儲過程)
存儲過程 operation android lec into oid replace user 是否 create table EGMAS_COUNT_DATA(TIMES date not null, COUNT NUMBER(30) not n
Oracle出現鎖表查詢並快速解決
oracle鎖表查詢和解決辦法在大家共用一個數據庫經常遇到鎖表的問題,出現的現象.1、存儲過程無法執行2、查詢表數據出現緩慢3、前端出現卡死的現象通過sql查詢出出現鎖表的數據:SELECT dob.OBJECT_NAME Table_Name,lo.SESSION_ID||‘, ‘||vss.SERIAL#
oracle學習之多表查詢,子查詢以及事務處理
color 1-1 註意事項 員工 列數 .com 外連接 分析 top-n分析 多表查詢的基礎是采用笛卡爾集: 最終的行數 = 表1的行數 * 表2的行數 最終的列數 = 表1的列數 + 表2的列數 過濾笛卡爾集的關鍵是寫連接條件,N張表至少需要N-1個條件。 多表
[轉抄]oracle單表查詢去重(效率比較高的一種方式)
sel select 單表查詢 效率 查詢 rownum 說明 acl 分組 1 select 2 * 3 from 4 ( 5 select 6 a.*, rownum r_n 7
Oracle數據庫鎖表查詢
tex star art 鎖表 spi rom ext gpo pfile --查看數據庫最大連接數 select value from v$parameter where name = ‘processes‘; --更改數據庫連接數 alter system set p
Oracle的單表查詢語句
類型 edate pos 顯示 inf 指定字段 blog 虛擬表 font 使用Oracle 數據庫的測試表單: --單表查詢數據 語法 select (查詢) * 所有 /查詢的字段,多個字段 ,隔開 from (來自) 表名稱 --查詢所有員工的信息 s