您的位置:首页 > 数据库 > Oracle

Oracle 存储结构_表空间简介

2013-04-02 00:58 387 查看
1.什么是表空间

表空间是Oracle 1个虚拟概念,它用于存放数据文件dbf, 也就是说表空间是oracle表数据存放到数据文件的一个中间结构。一般来讲,oracle 一张表(非分区表)只属于1个表空间, 它的数据可以分散存储在这个表空间内多个数据文件中。

如下图:



当然上图还包括 block, extend, segment的信息,将就看吧..



2.查看oracle的表空间

可以用如下视图来查看oracle的表空间:

select * from dba_tablespaces;



可以见到有6个表空间。

2.1 System 表空间.

system 表空间存放的是Oracle数据库本身的信息, 我们知道oracle包含大量的数据字典,这些数据字典是已表的形式存放在数据库中的,这些表就存放在system表空间。

2.2 Sysaux 表空间

sysaus 表空间可以看成system表空间的一个附属表空间, 它里面也是存放数据库的相关信息,sysaus和system表空间一样必须同时在线,否则oracle数据库不能启动。

2.3 undo 表空间

可以看成是回滚表空间, 当server process修改1个data buffer时, 会将修改前的状态放入这个表空间中.



2.4 TEMP 表空间

Temp里面存放的是临时数据, 例如1个server process PGA里面空间不够用,那么它很可能会占用临时表空间。

Temp表空间内的数据并不重要, 但是Temp表空间必须存在,而且必须有一定的空间,否则运行大型sql语句时很可能会出错

上面4个表空间都可以看作Oracle数据本身的系统表空间, 正常来讲每个数据库都应该存在上述4个表空间。

而其他表空间就是用来存放用户数据的表空间了。

3.查看oracle的表空间内的数据文件

利用dba_data_files可以查看数据库的数据文件分别属于哪个表空间.



可以看到上面只有5个数据文件, 并没有temp表空间的数据文件, 是不是temp 表空间不需要数据文件呢?

其实temp表空间也有文件,但是并不是叫数据文件, 而是叫临时文件。

可用如下命令来查看临时文件



4.oracle是多表空间数据库

其他常见的数据库,例如sybase, sql server 是多数据库结构, 也就是1个实例里可以包含多个数据库,其中有系统数据库,tem数据库,用户数据库等。

而oracle 1个实例只有1个数据库, 但是有多个表空间。

可以这样理解, sybase 利用多数据库将表归类, 而oracle 利用多表空间将表归类..

5.介绍下schema的概念。

oracle的大概逻辑和物理结图如下图所示:



如上图的逻辑部分, 从上到下都是1对多的关系。

其中,方案的原单词是schema, 也可以译成模式啦.

那么schema是什么呢. 教材上的定义如下:

schema 是数据库用户(users)拥有的数据库对象的集合。 schema对象是直接引用数据库的逻辑结构,schema对象包括table,view,sequence,stored procedure, index..等结构。 一般而言, schema对象包括应用程序在数据库中创建的任何内容。

简单解析下:

oracle数据库中, 每1个数据库对象(表,索引,过程等)都必须属于某1个用户, 那么某1个用户名下所有的对象就组成了1个模式,假如数据库中有20个用户, 那么这个数据库所有的对象可以看成由20个模式组成的。

所以上图这中数据库与模式也是一对多的关系啦,有多少个用户就有多少个模式。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: