楼上前两个都不错,第三个问题不对的。unlimited tablespace是用来控制用户的空间的.如果需要用用户a访问用户b的表,需要b对a进行授权。grant select on b.xxxtable to a;很好理解就和操作系统一样,使用别人的东西需要得到别人的授权。如果给a了dba权限,当然a就可以访问b的所有表了,因为a是管理员嘛。
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表...
2、默认应该是user表空间
3、如果给其他用户unlimited tablespace权限就可以了,一般给dba或resource角色也可以
表与表空间的关系,可以理解操作系统里的文件与文件夹;文件存储的地方呀~
表空间是逻辑上的概念,物理上是由多个数据文件构成。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表...
1,方便管理数据库中的各种对象(如表,索引,视图等)
2,优化数据库的性能:(如将表与索引分别存放在不同的表空间中,而不同的表空间的数据文件又存放在不同的磁盘上,这样,在检索与更新数据库时可以提高I/O的性能)
3,表空间是连接用户与数据库物理结构的桥梁(用户可以直接操作的是表空间,而不能直接通过DCL,DML,DDL对数据文件进行操作)
4,方便数据库之间或数据库对象间的转移
5,方便备份与恢复.其实数据库默认的用户表空间并不是USER表空间,而是SYSTEM/SYSAUX两个表空间,更准确的说是SYSTEM表空间,而我们日常所创建的数扰库中都有USER表空间,那是因为我们在使用DBCA工具时,所选的模板中有这个表空间而已.所以个人认为,在便用数据库时,最好能自己创建一个用户表空间,并设为用户默认的表空间.这样做有两个好处:
1,自己创建的表空间可以有更好的区,段空间的管理方法,而我们是不能更改SYSTEM表空间的空间管理方法的.
2,也可以让数据库系统有更好的性能(用户数据不用与系统数据发生I/O的冲突)在ORACLE数据库中,权限有:对象权限,系统权限,以及角色.
角色虽然不是单独的权限,但它却是对象权限与(或)系统权限的集合.
如果你要访问不属于你的表或视图等其它非PUBLIC的数据库对象,则一定要先获得该对象上的权限.