我能否指定oracle中某张表user1.table1 只能由用户user1才能查询?
或者,能否指定user1.table1就是不能被用户user2查询?

解决方案 »

  1.   

    [GRANT
    名称
    GRANT— 赋予一个用户,一个组或所有用户访问权限GRANT privilege [, ...] ON object [, ...]    TO { PUBLIC | GROUP group | username } 
    输入
    privilege 
    可能的权限有: 
    SELECT 
    访问声明的表/视图的所有列/字段. 
    INSERT 
    向声明的表中插入所有列字段. 
    UPDATE 
    更新声明的所有列/字段. 
    DELETE 
    从声明的表中删除所有行. 
    RULE 
    在表/视图上定义规则 (参见 CREATE RULE 语句). 
    ALL 
    赋予所有权限. 
    object 
    赋予权限的对象名.可能的对象是: 
    table (表) 
    view (视图) 
    sequence (序列) 
    index (索引) 
    PUBLIC 
    代表是所有用户的简写. 
    GROUP group 
    将要赋予权限的组 group .目前的版本中,组必须是用下面方法显式创建的. 
    username 
    将要赋予权限的用户名.PUBLIC 是代表所有用户的简写. 
    输出
    CHANGE 
    如果成功,返回此信息. 
    ERROR: ChangeAcl: class "object" not found 
    如果所声明的对象不可用或不可能对声明的组或用户赋予权限. 
    描述
    GRANT允许对象的创建者给某用户或某组或所有用户(PUBLIC)某些特定的权限.对象创建后,除了创建者外,除非创建者赋予(GRANT)权限,其他人没有访问对象的权限.一旦用户有某对象的权限,他就可以使用那个特权.不需要给创建者赋予(GRANT)对象的权限,创建者自动拥有对象的所有权限,包括删除它的权限.
      

  2.   

    保证没有给user2  以select on user1.table1 的权限
    同时保证dba用户没有赋予user2  select any table的权限
      

  3.   

    --回答:1:
    revoke select on user1.table1 from user2, user3, user4, ......;--回答:2:
    revoke select on user1.table1 from user2;