数据库是一系列物理文件的集合(数据文件,控制文件,联机日志,参数文件等)
--查询当前数据库名:
select name from v$database;
数据库实例是一组Oracle后台进程/线程以及在服务器分配的共享内存区,
数据库实例(instance_name)用于对外部连接。在操作系统中要取得与数据库的联系,必须使用数据库实例名
一个数据库可以有多个实例,在做数据库服务集群的时候可以用到
--查询当前数据库实例名:
select instance_name from v$instance;
表空间(tablespace)是数据库的逻辑划分,每个数据库至少有一个表空间(称作SYSTEM表空间),表空间只是和数据文件(ORA或者DBF文件)发生关系,为了便于管理和提高运行效率,可以使用一些附加表空间来划分用户和应用程序。例如:USER表空间供一般用户使用,RBS表空间供回滚段使用。
一个数据库实例可以有N个表空间,一个表空间下可以有N张表,一个表空间只能属于一个数据库。
--查看已经创建好的表空间:
select default_tablespace, temporary_tablespace, d.username from dba_users d;
数据文件(dbf、ora)
数据文件是数据库的物理存储单位。数据库的数据是存储在表空间中的,真正是在某一个或者多个数据文件中。而一个表空间可以由一个或多个数据文件组成,一个数据文件只能属于一个表空间。一旦数据文件被加入到某个表空间后,就不能删除这个文件,如果要删除某个数据文件,只能删除其所属于的表空间才行。
表的数据,是由用户放入某一个表空间的,而这个表空间会随机把这些表数据放到一个或者多个数据文件中。
段(segment)
数据库的段可以分为四类:数据段、索引段、回退段和临时段。
区(extent)
区是磁盘空间分配的最小单位。磁盘按区划分,每次至少分配一个区。区存储于段中,它由连续的数据块组成。
数据块(block)
数据块是数据库中最小的数据组织单位与管理单位,是数据文件磁盘存储空间单位,也是数据库I/O的最小单位,数据块的大小由DB_BLOCK_SIZE参数决定,不同的Oracle版本DB_BLOCK_SIZE的默认值是不同的。
模式对象
模式对象是一种应用,包括:表、聚簇、视图、索引序列生成器、同义词、哈希、程序单元、数据库链等。
总结:
理解数据库、表空间、数据文件、表、数据的最好办法就是想象一个装满东西的柜子,数据库其实就是柜子,柜中的抽屉是表空间,抽屉中的文件夹是数据文件,文件夹中的纸是表,写在纸上的信息就是数据。
从逻辑的角度来看,一个数据库(database)下面可以分多个表空间(tablespace);一个表空间下面又可以分多个段(segment);一个数据表要占一个段(segment),一个索引也要占一个段(segment )。 一个段(segment)由多个 区间(extent)组成,一个区间又由一组连续的数据块(data block)组成。这些连续的数据块是在逻辑上是连续的,有可能在物理磁盘上是分散。
从物理角度上看,一个表空间由多个数据文件组成,数据文件是实实在在存储在磁盘上的文件。这些文件是由oracle数据库操作系统的block 组成的。
Oracle数据库可以创建多个实例,每个实例可以创建多个表空间,每个表空间下可以创建多个用户(同时用户也属于表空间对应的实例)和数据库文件,用户可以创建多个表(每个表随机存储在一个或多个数据库文件中)。