1.为什么ORACLE建表前一定要建表空间?表空间的作用是?
2.如果不建表空间,默认放到哪里?是orcl吗?
3.为什么我用自建用户的表,其它用户访问不了?

解决方案 »

  1.   

    1、表空间是把你建立的表放在一起,方便管理
    2、默认应该是user表空间
    3、如果给其他用户unlimited tablespace权限就可以了,一般给dba或resource角色也可以
      

  2.   

    楼上前两个都不错,第三个问题不对的。unlimited tablespace是用来控制用户的空间的.如果需要用用户a访问用户b的表,需要b对a进行授权。grant select on b.xxxtable to a;很好理解就和操作系统一样,使用别人的东西需要得到别人的授权。如果给a了dba权限,当然a就可以访问b的所有表了,因为a是管理员嘛。
      

  3.   

    1.为什么ORACLE建表前一定要建表空间?表空间的作用是?
    表与表空间的关系,可以理解操作系统里的文件与文件夹;文件存储的地方呀~
    表空间是逻辑上的概念,物理上是由多个数据文件构成。2.如果不建表空间,默认放到哪里?是orcl吗?
    每建一个用户,之后都会指定到它默认的表空间里,通过这个可以看用户所默认的表空间:
    select username, default_tablespace from dba_users;用 alter user usernamexxx default tablespace xxx; 来修默认表空间
    如果你想,所有用户在创建时不指定默认表空间时,以def_space为表空间的话,可以这样:
    alter database default tablespace def_space;3.为什么我用自建用户的表,其它用户访问不了?
    那是因为你没权限,权限分两种:数据库权限,用户对象权限
    数据库权限是指你是否有连接权限,资源使用权限....
    用户对象权限是指,是否有权查看A用户的ATB表...
      

  4.   

    3楼的分析比较全面,表空间的作用:
    1,方便管理数据库中的各种对象(如表,索引,视图等)
    2,优化数据库的性能:(如将表与索引分别存放在不同的表空间中,而不同的表空间的数据文件又存放在不同的磁盘上,这样,在检索与更新数据库时可以提高I/O的性能)
    3,表空间是连接用户与数据库物理结构的桥梁(用户可以直接操作的是表空间,而不能直接通过DCL,DML,DDL对数据文件进行操作)
    4,方便数据库之间或数据库对象间的转移
    5,方便备份与恢复.其实数据库默认的用户表空间并不是USER表空间,而是SYSTEM/SYSAUX两个表空间,更准确的说是SYSTEM表空间,而我们日常所创建的数扰库中都有USER表空间,那是因为我们在使用DBCA工具时,所选的模板中有这个表空间而已.所以个人认为,在便用数据库时,最好能自己创建一个用户表空间,并设为用户默认的表空间.这样做有两个好处:
    1,自己创建的表空间可以有更好的区,段空间的管理方法,而我们是不能更改SYSTEM表空间的空间管理方法的.
    2,也可以让数据库系统有更好的性能(用户数据不用与系统数据发生I/O的冲突)在ORACLE数据库中,权限有:对象权限,系统权限,以及角色.
    角色虽然不是单独的权限,但它却是对象权限与(或)系统权限的集合.
    如果你要访问不属于你的表或视图等其它非PUBLIC的数据库对象,则一定要先获得该对象上的权限.