解决方案 »

  1.   

    恩 ,不过我们是共同用一个库,我想应该不同电脑上给这个表建表,oracle能区分出来吧
      

  2.   

    @zlloct 那要怎么加权限呢?我也是一个普通用户
      

  3.   

    只能通过权限来控制fds
      

  4.   

    oracle只要是使用同一个数据库用户创建的表,就没啥区别,只要登录这个数据库用户就能看到,和在哪台电脑上创建没啥关系,想让别人看不到,必须使用不同数据库用户
    比如A用户创建的表,只要不用grant授权给其他用户,其他数据库用户都是看不到的
      

  5.   

    很难办,比如你数据库中有些用户已经授予了ANY TABLE的权限,这样就不行了。
      

  6.   

    以前有看过一个数据库级的触发器 ,可以让你参考参考打算做一个ddl触发器, 对于所有的ddl的操作进行记录,同时 针对不允许删除的表不允许删除  编写如下。---ddl日志
    --drop table sys_ddl_log;
    create table sys_ddl_log  (
    c_ora_sysevent varchar2(100),
    c_login_user varchar2(100),
    c_dictionary_obj_type varchar2(100),
    c_dictionary_obj_name varchar2(100),
    c_dictionary_obj_owner varchar2(100),
    c_oper_date date
    );
    --- 受保护的对象
    drop table sys_protect_user_obj;
    create table sys_protect_user_obj(
    c_obj_owner varchar2(100),
    c_obj_type varchar2(100),
    c_obj_name varchar2(100)
    );
    INSERT INTO sys_protect_user_obj (c_obj_owner, c_obj_type ,c_obj_name )
    select T.OWNER,T.OBJECT_TYPE,T.OBJECT_NAME from dba_objects t where t.owner in ('SYSUSER') AND OBJECT_TYPE IN ('TABLE','VIEW','MATERIALIZED VIEW','PROCEDURE');
    COMMIT;---记录ddl的事件
    create or replace trigger trig_log_afterddl
    after ddl  on database
    declare
    COU NUMBER;begin
    if ora_sysevent='DROP' then
    select COUNT(*) into COU from sys_protect_user_obj where
    c_obj_owner = ora_dict_obj_owner and
    c_obj_name = ora_dict_obj_name and
    c_obj_type=ora_dict_obj_type  ;
    if COU>0 then
      raise_application_error(-20001,'该对象受到保护,禁止删除。请联系管理员!');
    end if;
    elseinsert into sys_ddl_log(c_ora_sysevent ,c_login_user, c_dictionary_obj_type, c_dictionary_obj_name ,c_dictionary_obj_owner ,c_oper_date  )
    values(ora_sysevent , ora_login_user,ora_dict_obj_type, ora_dict_obj_name ,ora_dict_obj_owner,sysdate);end if ;end;
      

  7.   

    ORACLE的VAULT组件功能可以解决楼主的问题,但是需要下载安装比较麻烦
      

  8.   

    oracle只要是使用同一个数据库用户创建的表,就没啥区别,只要登录这个数据库用户就能看到,和在哪台电脑上创建没啥关系,想让别人看不到,必须使用不同数据库用户
    比如A用户创建的表,只要不用grant授权给其他用户,其他数据库用户都是看不到的
    同意~
      

  9.   

    LZ说共用一个库,我的理解是同一个数据库(也就是同一个instance)不同的schema,这样的话通过权限控制其他用户对你的用户下的对象的可见性是可以的,但是如果LZ的情况是同一个schema的话,权限控制就行不通了,如果是这种情况,不建议你从技术的角度来考虑,最好从管理的角度来解决这个问题,既然用同一个库,那肯定要遵守共同的约定,比如在对象的命名上面做出区分,这样就不会误操作他人的对象。
      

  10.   

    创建视图View 设置权限Only Read
      

  11.   

    oracle只要是使用同一个数据库用户创建的表,就没啥区别,只要登录这个数据库用户就能看到,和在哪台电脑上创建没啥关系,想让别人看不到,必须使用不同数据库用户
    比如A用户创建的表,只要不用grant授权给其他用户,其他数据库用户都是看不到的
    通过给用户授权。
      

  12.   

    建立不同的用户,给他的用户进行授权访问即可,so easy
      

  13.   

    我认为如果两者是用同一个数据库用户登录的时候,要想设置无法删除表,应该是将用户drop table与drop any table的权限去掉。但是此时你对表的操作权限也同样受到限制。而如果你跟他不是同一个用户登录的,那就简单的多了,你只要不给其他用户授权,其他用户就是看不到你的表的。