一、概念
1.1 用户、表与表空间之间的关系
每个项目对应一个表空间,Oracle数据库是通过表空间来存储物理表的,一个数据库实例可以有N个表空间,一个表空间下可以有N张表。
然后创建一个用户对应此表空间即可
所以,在做大型项目的时候,是先创建一个数据库实例,然后创建表空间,再创建用户,然后用户指定这个表空间。
1.2 用户与表空间的关系
用户=商家
表=商品
表空间=仓库
一个商家能有很多商品,1个商品只能属于一个商家。
一个商品可以放到仓库A,也可以放到仓库B,但不能同时放入A和B。
仓库不属于任何商家。
商家都有一个默认的仓库,如果不指定具体仓库,商品则放到默认的仓库中
1.3 表空间的概念
Oracle数据库的数据存放在表空间中,表空间是一个逻辑的概念,它是由数据文件组成,表空间大小由数据文件的数量和大小决定。
表空间有三种:Permanent Tablespaces(永久表空间)、Temporary Tablespaces(临时表空间)、Undo Tablespaces(回滚表空间),Oracle在创建数据库实例的时候,默认会创建三个永久表空间(SYSTEM、SYSAUX、USERS),一个临时表空间(TEMP),一个回滚表空间(UNDOTBS1)。
1.4 SYSTEM表空间
SYSTEM表空间主要用于存放Oracle数据库内部的数据字典,它是Oracle数据库最重要的表空间,在创建数据库实例时被最先创建,包含了数据库的元数据,对于数据库来说生死攸关。
1.5 SYSAUX表空间
SYSAUX表空间是SYSTEM表空间的辅助表空间,主要用于存储数据字典以外的其他数据对象,它在一定程度上降低了SYSTEM表空间的负荷。
1.6 UNDOTBS1表空间
UNDO是回滚表空间,主要有四方面的用途,分别是:事物回滚、数据库恢复、读一致性、闪回查询。
1.6.1 事物回滚:
当事物执行失败或用户执行回滚操作(rollback)时,Oracle会利用保存在回退段中的信息将数据恢复到原来的值。
1.6.2 数据库恢复:
当数据库实例出现了意外,在重启恢复时,Oracle先利用重做日志文件的信息对数据库进行恢复,再利用回滚段中的信息回滚未提交的事务。
1.6.3 读一致性:
当一个用户对数据进行修改时,会预先将其原始值保存到回退段中,这时,如果有其它用户访问该数据,则访问回退段中的信息,使当前用户未提交的修改其他用户无法看到,保证了数据的一致性。
1.6.4 闪回查询:
通过保留在回退段中的信息,用户可以查询某个数据在过去某个时刻的状态。
1.7 TEMP表空间
临时表空间用来管理数据库排序以及用于存储临时表和索引、中间结果等临时对象。当Oracle的内存不够时,会把数据放在临时表空间中,当操作完成后,系统会自动清理临时表空间中的临时对象,自动释放空间。这里的释放只是标记为空闲、可以重用,占用的磁盘空间并没有真正释放。这也是临时表空间有时会不断增大却不见减少的原因。
1.8 USERS表空间
USERS表空间用于存放普通用户的表和索引,一般情况下,它是用户的缺省表空间。
1.9 管理表空间
企业级的Oracle数据系统的存储一般是采用ASM(自动存储管理),ASM是Oracle 10g R2中为了简化Oracle数据库的管理而推出来的一项新功能,这是Oracle自己提供的卷管理器,替代了操作系统所提供的LVM,它不仅支持单实例,同时对RAC的支持也是非常好。
二、操作
2.1 查询所有表空间文件和存储路径
select