链接到同一个数据库,为什么不同用户看到的表不一样?在用户user1下创建表Table1,为什么在用户user2下看不到Table?Oracle下的用户到底是个什么概念啊?以前是用SQL Server的,所有的用户,只要链接到同一个数据库,看到的数据库对象都是一样的啊。敬请详解。

解决方案 »

  1.   

    oracle是一个多用户的操作系统,用户之间再没有授权的情况下互不可见,如果你用过linux系统,应该会有体会。
      

  2.   

    相对于其他数据库,Oracle数据库的安全性算是做到极致了,它对用户的权限管理相当的严格,包括系统权限,对象权限,而在同样的系统权限下面还有对应的角色管理,所以想你说的那种情况,虽然连接到的是同一个数据库,但是在数据库里面,不同的用户可以分配不同的表空间,而表也是在不同的表空间里创建的,对于不同的用户,只有授权了才能看到,就是为了保证数据的安全。table1 和table2 是两个不同的用户user1 和 user2创建的,如果不对相应的用户授权,是不能看到的。
      

  3.   

    oracle数据库的管理机制就是以用户为单位来管理的,各个用户之间的对象是不可见的,
    但是是可以相互访问的
    比如SYS用户访问SCOTT用户CONN SYS/PWD AS SYSDBA
    SELECT * FROM SCOTT.EMP;
      

  4.   

    比如用相应的用户名登录后,要授予另一用户查询这个表table1的权限
    grant select on table1 to 另一用户名;
    也可以设置to public;就是所有用户都能查询。
      

  5.   

    用sys?这是只有管理员才能用的么,要是sys再不能看谁还能看?
    楼主说的应该是普通用户。况且不一定是Scott
      

  6.   

    这个问题应该先了解一下"模式"即schema的概念,任何table,view等对象都属于某个schema,比如要访问table时,需要schema.tablename,只所以楼主有这个问题,是因为没有加schema名,这样只能访问属于自己权限下的默认table
    当然如果默认设置没有给访问其他用户的权限,也会访问不到
      

  7.   

    等于说是通过权限设置把不同的用户给隔开了,每个用户即便是在自己的领域有些权限也是不能自己设置的。需要sys赋予。我不确定这句话的描述是不是十分够专业。
      

  8.   

    原因是:
    sqlserver中的不同用户可以指定默认的构架(用户),一般是dbo。所以你无论以何种用户访问sqlserver,都是可以使用dbo.xxx对象的。但oracle中对此控制比严格,不同的用户只能使用 默认 同名的 构架。所以你要想使用某个用户 如dbo 空间下的对象,就必须 在使用时指定 dbo.xxx
      

  9.   

    http://blog.csdn.net/wh62592855/archive/2009/09/27/4599333.aspx你应该对SCHEMA和USER这两个概念先有所理解
    看看上面的帖子