1.数据库:
查询:SQL> select * from V$database;
Oracle数据库是一系列物理文件的集合,这就包括(数据文件ORA或者DBF、控制文件、联机日志、参数文件)。其实Oracle数据库的概念和其它数据库不一样,这里的数据库是一个操作系统只有一个库。可以看作是Oracle就只有一个大数据库。
2.实例:
查询:SQL> select * from V$instance;
一个Oracle实例(Oracle Instance)有一系列的后台进程(Backguound Processes)和内存结构(Memory Structures)组成。一个数据库可以有n个实例。
区别:ORACLE服务= 实例+数据库
实例是一群为你服务的进程,数据库是你真实需要的数据
比如你去饭店吃饭享受服务,厨师+服务员的服务相当于实例,食材、饭菜什么相当于数据库的数据
3.用户:
用户是在实例下建立的。不同实例可以建相同名字的用户。
4.表空间:
表空间是一个用来管理数据存储逻辑概念,表空间只是和数据文件
(ORA或者DBF文件)发生关系,数据文件是物理的,一个表空间可以包含多个数据文件,而一个数据文件只能隶属一个表空间。
5.数据文件(dbf、ora):
数据文件是数据库的物理存储单位。数据库的数据是存储在表空间中的,真正是在某一个或者多个数据文件中。而一个表空间可以由一个或多个数据文件组成,一个数据文件只能属于一个表空间。一旦数据文件被加入到某个表空间后,就不能删除这个文件,如果要删除某个数据文件,只能删除其所属于的表空间才行。
注:表的数据,是有用户放入某一个表空间的,而这个表空间会随机把这些表数据放到一个或者多个数据文件中。由于oracle的数据库不是普通的概念,oracle是有用户和表空间对数据进行管理和存放的。但是表不是有表空间去查询的,而是由用户去查的。因为不同用户可以在同一个表空间建立同一个名字的表!这里区分就是用户了!
实例和数据库之间的关系是:数据库可以由多个实例装载和打开,而实例(一组Oracle 后台进程/线程以及一个共享内存区)可以在任何时间点装载和打开一个数据库。实际上,准确地讲,实例在其整个生存期中最多能装载和打开一个数据库!
补充:
一般来说,我们的一个数据库对应一个实例,但在集群RAC情况下,共享数据库文件时,一个数据库是可以被多个实例同时使用的。
数据库就是一个相片底片
实例就是相纸
一个底片可以冲多个相纸,但一张相纸最多冲一个底片。