Oracle-基本概念

1-数据库(database) :
通常情况下"数据库",并不仅指物理的数据集合,还是一系列物理文件的集合(数据文件,控制文件,联机日志,参数文件等)以及数据库管理系统,即数据库是物理数据、内存、操作系统进程的组合体。

2-数据库实例(DB instance) :
实例是访问Oracle数据库所需的一部分计算机内存和辅助处理后台进程,是由进程和这些进程所使用的内存(SGA)所构成一个集合,其实就是用来访问和使用数据库的一个进程,只存在于内存中,就像Java中new出来的实例对象一样。

3-数据库名(DB_NAME) :
数据库名就是一个数据库的标识,就像人的身份证号一样,在数据库安装或创建完成之后,参数DB_NAME被写入参数文件init.ora.xxxxxxx之中。
在创建数据库时就应考虑好数据库名,并且在创建完之后,数据库名不宜修改,即使要修改也会很繁琐。因为,数据库名还被写入控制文件中,控制文件是以二进制型式存储的,用户无法修改控制文件的内容。假设用户修改了参数文件中的数据库名,但是在Oracle启动时,由于参数文件中的DB_NAME与控制文件中的数据库名不一致,导致数据库启动失败,将返回ORA-01103错误。
查询当前数据库名 :
1)-select name from v$database;
2)-show parameter db
3)-查看参数文件(init.ora.xxxxx)

4-数据库域名(db_domain) :
在分布式数据库系统中,不同版本的数据库服务器之间,不论运行的操作系统是unix或是windows,各服务器之间都可以通过数据库链路进行远程复制,数据库域名主要用于分布式环境中的复制。
什么时候使用域 :
1)-在oracle分布式环境中,两个数据库之间要通过数据库链路进行数据的远程传输
2)-在同一网络环境下,两个数据库的数据库名相同
查询数据库的域名 :
1)-select value from v$parameter where name = ‘db_domain’;
2)-show parameter domain
3)-在参数文件中查询

5-全局数据库名 :
全局数据库名=数据库名+数据库域名

6-数据库服务名(SERVICE_NAME) :
Oracle9i版本开始,引入了一个新的参数,即数据库服务名。如果数据库有域名,则数据库服务名就是全局数据库名;否则,数据库服务名与数据库名相同。如果数据库中没有定义域名,则数据库服务名与数据库名相同。
查询数据库服务名 :
1)-select value from v$parameter where name = ‘service_name’;
2)-show parameter service_name
3)-在参数文件中查询

7-表空间(tablespace) :
Oracle是通过表空间来存储物理表的,一个数据库实例可以有N个表空间,一个表空间下可以有N张表。有了数据库,就可以创建表空间;表空间是数据库的逻辑划分,每个数据库至少有一个表空间(SYSTEM表空间);为了便于管理和提高运行效率,可以使用一些附加表空间来划分用户和应用程序。例如:USER表空间供一般用户使用,RBS表空间供回滚段使用,一个表空间只能属于一个数据库。

8-方案(schema) :
又叫模式,是比表空间小一级的逻辑概念。多个用户可能共用一个表空间,那如何区分开每一个用户?那么在表空间中对每个用户都有一个对应的方案(schema),用于保存单个用户的信息。
一个用户一般对应一个schema,默认名等于用户名。想创建schema只能通过创建用户的方法解决,即schema的个数同user的个数相同,而且schema名字同user名字一一 对应,所以可以称schema为user的别名,虽然这样说并不准确,但是更容易理解一些。在数据库中一个对象的完整名称为schema.object,而不是user.object

9-段(segment) :
段是oracle数据库中的分配单位,对象如表、索引等都是以段为单位进行分配。当创建一个表时将创建一个表段,创建一个索引时就创建一个索引段。每一个消耗存储空间的对象最终被存储到一个单一的段中,有回滚段、临时段、聚簇段、索引段等。

10-区(extent) :
区又叫盘区,是数据文件中一个连续的分配空间,它比块要大,由块组成。有些对象分配空间时可能至少需要两个盘区,比如回滚段,而这两个盘区不一定要求相连。区的大小从一个块到2GB不等。

11-块(block) :
块是数据存储的物理单位,也是数据文件中最基础的单位,数据直接存储在块上,是oracle空间分配的最小单位,块大小常见的有三种,2KB、4KB、8KB

12-SID :
SID就是instance_name

SID和SERVICE_NAME的区别 :
简单理解 : 一个公司比喻成一台服务器,数据库是这个公司中的一个部门
1)-SID : 一个数据库可以有多个实例,SID是用来标识这个数据库内部每个实例的名字,就像一个部门里每个人都有一个自己的名字
2)-SERVICE_NAME : 是这个数据库对外宣称的名字,外面的人要想连接我这个数据库,你就在客户端的连接串里写上service_name。像一个部门的名字,这个部 门的名称在看门大爷(listener)那里有登记,看门大爷一看你是要找SERVICE_NAME这个部门,就告诉你我们公司确实有这个部门,于是你就找到了,连接就建立了;用一句话来说就是:SID是对内的,是实例级别的一个名字,用来内部之间称呼用;SERVICE_NAME是对外的,是数据库级别的一个名字,用来告诉外面的人,数据库叫"SERVICE_NAME"。

你可能感兴趣的:(Oracle)