为何Oracle的DELETE ANY TABLE权限会使其他Schema的物化视图在ALL_MVIEWS中可见?
Oracle 19.17 SE中DELETE ANY TABLE权限对ALL_MVIEWS查询范围的影响
在Oracle 19.17 SE独立数据库中,多个不同Schema已创建物化视图。测试发现:未被授予DELETE ANY TABLE权限的用户,查询ALL_MVIEWS视图时仅能看到自身Schema下的物化视图;当授予该用户DELETE ANY TABLE权限后,ALL_MVIEWS会返回所有Schema的物化视图。具体测试操作及结果如下:
1. 查看用户DGSW初始系统权限
DGSW@atest19> select privilege from user_sys_privs order by 1; PRIVILEGE ---------------------------------------- ALTER SESSION CREATE ANY TABLE CREATE CLUSTER CREATE DATABASE LINK CREATE INDEXTYPE CREATE MATERIALIZED VIEW CREATE OPERATOR CREATE PROCEDURE CREATE SEQUENCE CREATE SESSION CREATE SYNONYM CREATE TABLE CREATE TRIGGER CREATE TYPE CREATE VIEW 15 rows selected.
此时DGSW无DELETE ANY TABLE权限,查询ALL_MVIEWS无结果(该用户自身未创建物化视图):
DGSW@atest19> select owner,count(*) from all_mviews group by owner order by 1; no rows selected
2. 授予DGSW DELETE ANY TABLE权限
使用SYSTEM用户执行授权操作:
SYSTEM@atest19> grant DELETE ANY TABLE to dgsw; Grant succeeded.
3. 验证权限已生效
再次查看DGSW的系统权限,确认已新增DELETE ANY TABLE:
DGSW@atest19> select privilege from user_sys_privs order by 1; PRIVILEGE ---------------------------------------- ALTER SESSION CREATE ANY TABLE CREATE CLUSTER CREATE DATABASE LINK CREATE INDEXTYPE CREATE MATERIALIZED VIEW CREATE OPERATOR CREATE PROCEDURE CREATE SEQUENCE CREATE SESSION CREATE SYNONYM CREATE TABLE CREATE TRIGGER CREATE TYPE CREATE VIEW DELETE ANY TABLE 16 rows selected.
4. 再次查询ALL_MVIEWS
此时查询ALL_MVIEWS可返回所有Schema下的物化视图统计:
DGSW@atest19> select owner,count(*) from all_mviews group by owner order by 1; OWNER COUNT(*) ------------------------------ ---------- REGRESSION_1_6 7 REGRESSION_1_7 7 REGRESSION_1_8 9 REGRESSION_1_9 9 TEST1 10 TEST2 10 TEST3 10 TEST4 10 UI_TEST 10 VALIDATION1 9
内容的提问来源于stack exchange,提问作者ooyooyoodangdangdang
相关产品推荐
相关产品推荐

