我在ORACLE下新建两个用户,
--电费
CREATE USER elec IDENTIFIED BY elec DEFAULT TABLESPACE realtime_data TEMPORARY TABLESPACE TEMP PROFILE DEFAULT;
GRANT CONNECT,RESOURCE,exp_full_database,imp_full_database TO elec;
GRANT DEBUG CONNECT SESSION,DEBUG ANY PROCEDURE  TO elec;
--燃气费
CREATE USER gas IDENTIFIED BY gas DEFAULT TABLESPACE realtime_data TEMPORARY TABLESPACE TEMP PROFILE DEFAULT;
GRANT CONNECT,RESOURCE,exp_full_database,imp_full_database TO gas;
GRANT DEBUG CONNECT SESSION,DEBUG ANY PROCEDURE  TO gas;用elec登进去,为什么可以直接访问到gas用户下的表?不是要在gas下授权吗?

解决方案 »

  1.   

    我测试了下:
    如果只对用户A授予connect和resource权限,是不能访问B用户下的表数据的,
    但在加上exp_full_database,imp_full_database 后就可以访问B用户下的表了。
    我查了下:imp_full_database 是执行全数据库导出所需要的权限,包括DBA_sys_privs的权限,
    imp_full_database :select  any table,backup any table,excute any procedure,excute any type,
    和insert、delete、update权限等。
    所以A和B用户有的权限不仅仅是connect和resource的权限了。
    你将A和B用授权语句后面的exp_full_database,imp_full_database收回再试试。
    用sys用户登录,收回exp_full_database,imp_full_database权限。
    revoke exp_full_database,imp_full_database from A;
    revoke exp_full_database,imp_full_database from B;