之前一直使用的关系型数据库是Mysql,而新公司使用Oracle,所以最近从网上搜集了一些资料,整理到这里,如果有不对的地方,欢迎大家讨论。
基本概念:
- 数据库:Oracle 数据库是数据的物理存储。这就包括(数据文件 ORA 或者 DBF、控制文件、联机日志、参数文件)。 其实 Oracle 数据库的概念和其它数据库不一样,这里的数据库是一个操作系统只有一个库。可以看作 是 Oracle 就只有一个大数据库。
- 实例:一个 Oracle 实例(Oracle Instance)有一系列的后台进程(Backguound Processes)和内存结构(Memory Structures)组成。一个数据库可以有 n 个实例。其实就是用来访问和使用数据库的一块进程,它只存在于内存中。就像Java中new出来的实例对象一样。在启动Oracle数据库服务器时,实际上是在服务器的内存中创建一个Oracle实例(即在服务器内存中分配共享内存并创建相关的后台内存),然后由这个Oracle数据库实例来访问和控制磁盘中的数据文件。安装 Oracle 后会有默认的实例,即 ORCL。一般不创建多个实例,在默认实例下创建表空间和用户等。
- 用户: 用户是在实例下建立的。不同实例可以建相同名字的用户。它跟表空间是多对多的关系的,但我们在创建用户时一般都指定默认表空间的,若不指定用户默认表空间的话, 则用户每次创建数据库对象的时候,都要指定表空间,太麻烦。
- 表空间: 表空间是一个用来管理数据存储逻辑概念,表空间只是和数据文件(ORA 或者 DBF 文件)发生关系,数据文件是物理的,一个数据库实例可以有N个表空间,一个表空间下可以有N张表。
- 数据文件(dbf、ora): 数据文件是数据库的物理存储单位。数据库的数据是存储在表空间中的,真 正是在某一个或者多个 数据文件中。而一个表空间可以由一个或多个数据文件组成,一个数据文件只能属于一个表空间。一旦 数据文件被加入到某个表空间后,就不 能删除这个文件,如果要删除某个数据文件,只能删除其所属的表空间才行。
注意:
表的数据,是由用户放入某一个表空间的,而这个表空间会随机把这些表数据放到一个或者多个数据文件中。由于oracle的数据库不是普通的概念,oracle是有用户和表空间对数据进行管理和存放的。但是表不是有表空间去查询的,而是由用户去查的。因此不同用户可以在同一个表空间建立同一个名字的表!这里区分就是用户了!
关系示意图:
总结:
Oracle数据库可以创建多个实例,每个实例可以创建多个表空间,每个表空间下可以创建多个用户(同 时用户也属于表空间对应的实例)和数据库文件,用户可以创建多个表(每个表随机存储在一个或多个 数据库文件中)
参考: