oracle 可不可以设置某用户只能看某些表的满足特定条件的记录

解决方案 »

  1.   

    对于基本表Oracle支持三个级别的安全性:表级、行级和列级。 
    (1)表级安全性 表的创建者或者DBA可以把表级权限授予其他用户,表级权限包括: ALTER:修改表定义 DELETE:删除表记录 INDEX:在表上建索引 INSERT:向表中插入数据记录 SELECT:查找表中记录 UPDATE:修改表中的数据 ALL:上述所有权限 表级授权使用GRANT和REVOKE语句。 (2)行级安全性 Oracle行级安全性由视图实现。用视图定义表的水平子集,限定用户在视图上的操作,就为表的行级提供了保护。视图上的授权与回收与表级完全相同。 例如,只允许用户U2查看Student表中信息系学生的数据,则首先创建信息系学生的视图S_IS,然后将该视图的SELECT权限授予U2用户。(3)列级安全性 Oracle列级安全性可以由视图实现,也可以直接在基本表上定义。 用视图定义表的垂直子集就可以实现列级安全性,方法与上面类似。 直接在基本表上定义和回收列级权限也是使用GRANT和REVOKE语句。目前Oracle的列级权限只有UPDATE,回收列级UPDATE权限时,Oracle不允许一列一列地回收,只能回收整个表的UPDATE权限。例如, GRANT UPDATE(Sno,Cno)ON SC TO U2; 
    把对SC表中Sno列和Cno列的UPDATE权限授予U2用户。 
    REVOKE UPDATE ON SC FROM U2; 
    回收了U2用户对SC表中Sno列和Cno列的UPDATE权限。 在Oracle中,表、行、列三级对象自上而下构成一个层次结构,其中上一级对象的权限制约下一级对象的权限。例如当一个用户拥有了对某个表的UPDATE权限,即相当于在表的所有列都拥有了UPDATE权限。 Oracle对数据库对象的权限采用分散控制方式,允许具有WITH GRANT OPTION的用户把相应权限或其子集传递授予其他用户,但不允许循环授权,即被授权者不能把权限再授回给授权者或其祖先。 Oracle把所有权限信息记录在数据字典中,当用户进行数据库操作时,Oracle首先根据数据字典中的权限信息,检查操作的合法性。在Oracle中,安全性检查是任何数据库操作的第一步
      

  2.   

    完全可以,在界面程序(如.net,asp或pb)中用select语句选出满足条件的记录给特定的用户看。你提的问题还可以更详细点。
      

  3.   

    对表建立个带查询条件的视图.把这个视图的select权限
    给用户.
      

  4.   

    oracle的虚拟专用数据库 (VPD)就是专为这个目的设置的。
      

  5.   

    不解,为什么这种总是非在oracle里解决呢?
    你可以通过程序端的条件来判断,那些看,这样子我觉得应该更快!