ORACLE 数据库、表空间、SCHEMA、数据文件的概念 hostName sid

3,340 阅读5分钟

1,hostname: 

oracle软件一般使用主机名的目的是让客户端能可以通过直接输入服务端的主机名,而不是其IP地址网络连接到服务端 ,主机名与IP地址映射成一条映射条目

2,(什么是sid 和server name)相关文章:

docs.oracle.com/cd/B19306_0…

SID: Oracle System Identifier (SID)   标识一个数据库实例  一个数据库实例有且只有一个SID

server name:    在集群里 一个server name 可以有多个 sid  (数据库实例)

eg.

SID   SERVICE_NAME
bob1  bob
bob2  bob
bob3  bob
bob4  bob

3, 什么是Database,什么是Schema,什么是Table,什么是列,什么是行,什么是User

关系图:

ORACLE 数据库、表空间、SCHEMA、数据文件的概念hostName sid - 掘金

数据库:

 Oracle数据库是数据的物理存储。这就包括(数据文件ORA或者DBF、控制文件、联机日志、参数文件)。其实Oracle数据库的概念和其它数据库不一样,这里的数据库是一个操作系统只有一个库。可以看作是Oracle就只有一个大数据库。

 实例:

 一个Oracle实例(Oracle Instance)有一系列的后台进程(Backguound Processes)和内存结构(Memory Structures)组成。一个数据库可以有n个实例。 

用户: 

用户是在实例下建立的。不同实例可以建相同名字的用户。

 表空间:

 表空间是一个用来管理数据存储逻辑概念,表空间只是和数据文件(ORA或者DBF文件)发生关系,数据文件是物理的,一个表空间可以包含多个数据文件,而一个数据文件只能隶属一个表空间。 

  表空间是实际存储数据的地方 为了便于理解,我们把oracle数据库看成一个大房间,表空间可以看成这个房间的空间,这个是可以自由支配的, 在这个空间里可以堆放多个箱子(数据库文件),箱子里面可以再装物件(表)

一个数据库schema可以存在于多个表空间,

一个表空间里面可以有多个schema 通过使用表空间,

管理员可以控制磁盘的布局,表空间的最常用的作用是优化性能, 例如:一个最常用的索引可以建立在非常快的硬盘上 而不太常用的表可以建立在便宜的硬盘上,比如用来存储用于进行归档文件的表。

数据文件(dbf、ora): 

数据文件是数据库的物理存储单位。数据库的数据是存储在表空间中的,真 正是在某一个或者多个数据文件中。而一个表空间可以由一个或多个数据文件组成,一个数据文件只能属于一个表空间。一旦数据文件被加入到某个表空间后,就不能删除这个文件,如果要删除某个数据文件,只能删除其所属于的表空间才行。

 注: 表的数据,是有用户放入某一个表空间的,而这个表空间会随机把这些表数据放到一个或者多个数据文件中。由于oracle的数据库不是普通的概念,oracle是有用户和表空间对数据进行管理和存放的。但是表不是有表空间去查询的,而是由用户去查的。因为不同用户可以在同一个表空间建立同一个名字的表!这里区分就是用户了! 

schema:

      schema就是数据库对象的集合 为了区分各个集合,我们需要给这个集合起个名字,这个名字就是schema 。

      schema 名字 与 user的名字相同 毕竟 user 是schema的主人呀

举例说明:访问scott用户下的emp表,通过select from emp,其实这条sql语句的完整写法为:select from scott.emp 对于数据库来说,不同的用户有不同的schema,实际在使用上,schema和user完全一样,没有什么区别,在出现schema名的地方也可以出现user名

##################################################################

举个🌰:

我们可以把Database看作是一个大仓库,仓库分了很多很多的房间,

1,Schema就是其中的房间,一个Schema代表一个房间

2,Table可以看作是每个Schema中的,Table(床)被放入每个房间中,不能放置在房间之外,那岂不是晚上睡觉无家可归了,然后床上可以放置很多物品,就好比 Table上可以放置很多列和行一样,数据库中存储数据的基本单元是Table,

3,现实中每个仓库放置物品的基本单位就是床,

     User就是每个Schema的主人,(所以Schema包含的是Object,而不是User),user和schema是一一对应的,每个user在没有特别指定下只能使用自己schema(房间)的东西,如果一个user想使用其他schema(房间)的东西,那就要看那个schema(房间)的user(主人)有没有给你这个权限了,或者看这个仓库的老大(DBA)有没有给你这个权限了。换句话说,如果你是某个仓库的主人,那么这个仓库的使用权和仓库中的所有东西都是你的(包括房间),你有完全的操作权,可以扔掉不用的东西从每个房间,也可以放置一些有用的东西到某一个房间,你还可以给每个User分配具体的权限,也就是他到某一个房间能做些什么,是只能看(Read-Only),还是可以像主人一样有所有的控制权(R/W),这个就要看这个User所对应的角色Role了。