Oracle23ai之前的版本,想要实现一个用户可以访问另一个用户下的所有表,需要把该用户下所有的表的访问权限依次授权给该用户。这一方式存在的问题是,每当源端用户新创建一个表时,还需要额外地给相关用户做授权。 Oracle 23ai的SCHEMA级授权特性较简单易用的解决了以上问题。通过把SELECT ANY TABLE ON SCHEMA给到另外一个用户,来将原始用户查询的任何权限给到新的用户。 用户TESTUSER的表及查询信息: 以下为常见用户授权命令
GRANT connect, resource TO test_user;
GRANT dba TO test_user;
GRANT create session TO test_user;
SELECT * FROM user_sys_privs; -- 当前用户系统权限
CREATE role my_role;GRANT create session TO my_role;GRANT my_role TO test_user;
TESTUSER@FREEPDB1> select tname from tab; TNAME -------------------------------------------------------------------------------- PERSONNEL T_MULTIROWS T_IDENTITY TESTUSER@FREEPDB1> select * from T_MULTIROWS; ID INFONAME ---------- ------------------------------ 1 oracle23c 2 oracle23ai 3 mysql8.4 TESTUSER@FREEPDB1> select * from T_IDENTITY; ID NAMEINFO SYSGUID ---------- ------------------------------ ------------------------------------ 1 generated by 18EFA5E23DDC0BA1E063E650A8C05A76 2 DEFAULT 18EFA5E23DDD0BA1E063E650A8C05A76 3 AS identity 18EFA5E23DDE0BA1E063E650A8C05A76 4 values meger 18EFA5E23DE10BA1E063E650A8C05A76 5 table_ddl 18EFA5E23DE00BA1E063E650A8C05A76 7 table 18EFA5E23DE20BA1E063E650A8C05A76 8 expressions 18EFA5E23DE30BA1E063E650A8C05A76 7 rows selected.
