searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

Oracle数据库基础简介

2023-10-27 07:01:49
31
0

全球数据库引擎排名

1977年,ORACLE公司的创始人拉里·埃里森(Larry Ellison)和同事开发了一个名为“ORACLE”的原型系统,当时是为了满足华尔街金融客户的系统需求的,名称源自美国中央情报局(CIA)开发的 ORACLE 项目。

Oracle的发展史围绕着三个字母进行演进,I、G、C, 各位知道分别是什么意思吗?

I为Internet,主要是为了满足互联网应用需求而设计。

9i是I时代的一个重要的具有飞跃性的版本,最大特点是将数据库分布到不同的地方,实现了分布式数据库的管理。它还提供了新的特性,如XML处理、Data Guard、OLAP等。许多保存至今的数据仍存储在Oracle 9i中。

G代表网络计算格(Grid),是ORACLE数据库发展史上的一个里程碑。

11g引入了新的数据压缩技术和安全特性,提供新的分析和数据挖掘技术,包括实时数据仓库和单击查询。相比10g,11g对可靠性、安全性、高可用性和性能方面进一步提高,支持在线变更数据类型和分区,大大提高了数据库的功能和扩展性。

此版本在一些离线、内网环境中在不续约或不购买Oracle授权的小型客户中仍大量使用以及稳定运行了10年以上。

C代表云计算(Cloud),也是ORACLE Database的全面云计算版.

12c开始提供了新的多租户架构和支持更多数据库安全特性,包括数据脱敏和审计,大大强化了安全防护能力。此外,它还加强了数据库资源管理和在线扩容能力,支持更多的云计算和大数据场景。

后面的18c、19c开始以发行年份开始命名,实际上这两个版本的内核版本还是对应Oracle 12c这一大版本中的小版本。

这是Oracle最近30年的各版本的生命周期以及支持情况,可以看到之前最主流的11g是从09年支持到2018年延了2年然后再因市场推动又延了2年,说明了11g的使用粘性是真的很强,即使目前也还有很多非标客户还在偷偷使用中。

Oracle的体系结构跟我们主流的MySQL引擎是很不一样的,Oracle的实例跟数据库是一对一也可以一对多(RAC), 而MySQL就是创建实例,然后实例里可以创建多个数据库。

总体来说Oracle分成动态结构、静态结构,动态是Instance, 静态是Database一系列的文件,用实例打开静态的数据库来协同对外提供服务。

这是Oracle的存储结构介绍,左边是建库后默认创建好的表空间,包括SYSTEM 用于存储系统属性的数据、 SYSAUX用于存储快照数据(名声在外的AWR报告)就是靠这些快照数据生成、UNDO表空间用于数据库闪回功能使用的、USER表空间用于存储用户数据(但客户一般不使用,另外创建以业务名称标识的表空间),TEMP存放临时数据(Oracle临时表就会使用这部分空间),表空间是逻辑结构,对应的物理结构就是数据文件、临时文件。

右图是表空间更细化的存储单位,段、区、块(最小单位),数据文件对应下去就是操作系统的块。

 

Oracle数据库主要的文件有控制文件、数据文件(临时文件、数据文件)、日志文件(循环结构的redo日志、归档日志),以及参数文件(动态、静态参数文件)。这些文件在实例启动的各个阶段起着不同的作用,可以说实例打开数据库对这些文件的要求是缺一不可的。

 

下面介绍一下Oracle的动态结构,也就是实例,它由一系列内存池子、一堆进程组成。

内存由SGA、PGA组成

SGA结构里主要数data buffer用于缓存数据数据、log buffer用于缓存日志数据、share pool中缓存SQL 语句,Data dict缓存,share pool对于SQL查询的性能尤其是OLTP交易型应用会起到至关重要的作用,因为他可以提高常用短SQL语句的命中率,减少SQL语句的重新硬解析的过程,提高SQL语句共享性。还有其他大池、Java缓冲池等。

PGA(Program Global Area)是Oracle数据库中的一块全局内存区域,它是用户进程中独立的内存区域,用于存储SQL执行时所需要的内部数据结构、排序、哈希等计算。PGA是Oracle Database 可以为每个进程独立划分的内存域,用于存放某些只为一个连接所用的内部数据结构。

PGA由三部分组成,分别是堆栈区、排序区和临时区。

进程主要有PMON、SMON、RECO、DBWn、CKPT、LGWR、ARCn、RVWR。

PMON:负责建立用户与数据库之间的会话

SMON:负责实例恢复,同步SCN号

RECO: 负责备份恢复

CKPT: 同步数据文件、日志文件、控制文件检查点

LGWR:把日志缓存区的数据从内存写到磁盘的REDO文件里

DBWR:数据缓存,同步数据缓冲区数据写入数据文件

ARCn:   归档日志写进程

下面介绍下Oracle实例启停的几个阶段:

左边是启动过程:

1.首先实例会读取参数文件把数据库启动到nomount状态

2.实例读取控制文件去把数据库启动到mount状态,

3.针对控制文件中的数据文件路径把数据库的数据文件打开,同步三种文件的SCN号以及实例恢复,数据库状态变成Open状态。

  •  

停止过程:

1.Shutdown normal 正常把所有会话中提交的事务全部完成,如果这个时间段仍有提交事务将继续完成后再关闭数据库

2.Shutdown immediate 等待已完成的会话中已提交事务写入数据库后关闭数据库,此时间段会话将不能再发起任何事务。

3.Shutdown abort 马上关闭数据库,所有在途事务终止。启动后实例恢复需要对关闭数据库前的事务进行回滚处理。

实例的监听服务,一般是1521端口进行监听,监听的作用在于创建服务器进程,进而可以使客户端进程与服务器进程建立一对一连接。服务器进程用于代理客户端进程发出的命令。

RAC是一种典型且Oracle最经典的一种share everything的高可用数据库架构,主要可以分成单活HA、双活以及多活,一个或者多个实例打开一份数据来对应用提供服务,任何一个实例挂掉不影响应用运行的连续性。另外RAC还支持TAF业务分割的功能,这一功能也是受到Oracle主要使用大客户的青睐(某大型运营商用得最多),多个业务系统共用一套RAC互相相对独立、也能单独起到高可用、资源合理分配利用。

DataGuard是甲骨文推出的一种高可用性数据库方案, 常用于异地多机房容灾解决方案

它是在主节点与备用节点间通过日志同步来保证数据的同步,可以实现数据库快速切换与灾难性恢复。Data Guard只是在软件上对数据库进行设置,并不需要额外购买任何组件。用户能够在对主数据库影响很小的情况下,实现主备数据库的同步。而主备机之间的数据差异只限于在线日志部分

11g开始Data Guard支持备库可读方式打开,支持读写分离方案。

这个方案就适合多机房的。某机房一个production的数据库,另外其他机房部署standby的数据库。Standby数据库分物理的和逻辑的。物理的standby数据库主要用于production失败后做切换。而逻辑的standby数据库则在平时可以分担production数据库的读负载。两种Standby库主要在同步方式上有较大差异。

 

是一个MAA最佳的实例,其中最上面代表客户端的应用主机,data guard的primary 和standby 都是2个节点的RAC,因此这个就是RAC+data guard的架构。

正常工作时,左侧的primary角色的rac对客户提供服务,一旦发生问题,可以通过data guard机制把右侧的standby角色的rac激活提供服务,在这个架构中rac能够解决单点故障,但是对于灾难场景必须通过data guard来发挥作用。

0条评论
作者已关闭评论
鲁****鹏
2文章数
0粉丝数
鲁****鹏
2 文章 | 0 粉丝
鲁****鹏
2文章数
0粉丝数
鲁****鹏
2 文章 | 0 粉丝
原创

Oracle数据库基础简介

2023-10-27 07:01:49
31
0

全球数据库引擎排名

1977年,ORACLE公司的创始人拉里·埃里森(Larry Ellison)和同事开发了一个名为“ORACLE”的原型系统,当时是为了满足华尔街金融客户的系统需求的,名称源自美国中央情报局(CIA)开发的 ORACLE 项目。

Oracle的发展史围绕着三个字母进行演进,I、G、C, 各位知道分别是什么意思吗?

I为Internet,主要是为了满足互联网应用需求而设计。

9i是I时代的一个重要的具有飞跃性的版本,最大特点是将数据库分布到不同的地方,实现了分布式数据库的管理。它还提供了新的特性,如XML处理、Data Guard、OLAP等。许多保存至今的数据仍存储在Oracle 9i中。

G代表网络计算格(Grid),是ORACLE数据库发展史上的一个里程碑。

11g引入了新的数据压缩技术和安全特性,提供新的分析和数据挖掘技术,包括实时数据仓库和单击查询。相比10g,11g对可靠性、安全性、高可用性和性能方面进一步提高,支持在线变更数据类型和分区,大大提高了数据库的功能和扩展性。

此版本在一些离线、内网环境中在不续约或不购买Oracle授权的小型客户中仍大量使用以及稳定运行了10年以上。

C代表云计算(Cloud),也是ORACLE Database的全面云计算版.

12c开始提供了新的多租户架构和支持更多数据库安全特性,包括数据脱敏和审计,大大强化了安全防护能力。此外,它还加强了数据库资源管理和在线扩容能力,支持更多的云计算和大数据场景。

后面的18c、19c开始以发行年份开始命名,实际上这两个版本的内核版本还是对应Oracle 12c这一大版本中的小版本。

这是Oracle最近30年的各版本的生命周期以及支持情况,可以看到之前最主流的11g是从09年支持到2018年延了2年然后再因市场推动又延了2年,说明了11g的使用粘性是真的很强,即使目前也还有很多非标客户还在偷偷使用中。

Oracle的体系结构跟我们主流的MySQL引擎是很不一样的,Oracle的实例跟数据库是一对一也可以一对多(RAC), 而MySQL就是创建实例,然后实例里可以创建多个数据库。

总体来说Oracle分成动态结构、静态结构,动态是Instance, 静态是Database一系列的文件,用实例打开静态的数据库来协同对外提供服务。

这是Oracle的存储结构介绍,左边是建库后默认创建好的表空间,包括SYSTEM 用于存储系统属性的数据、 SYSAUX用于存储快照数据(名声在外的AWR报告)就是靠这些快照数据生成、UNDO表空间用于数据库闪回功能使用的、USER表空间用于存储用户数据(但客户一般不使用,另外创建以业务名称标识的表空间),TEMP存放临时数据(Oracle临时表就会使用这部分空间),表空间是逻辑结构,对应的物理结构就是数据文件、临时文件。

右图是表空间更细化的存储单位,段、区、块(最小单位),数据文件对应下去就是操作系统的块。

 

Oracle数据库主要的文件有控制文件、数据文件(临时文件、数据文件)、日志文件(循环结构的redo日志、归档日志),以及参数文件(动态、静态参数文件)。这些文件在实例启动的各个阶段起着不同的作用,可以说实例打开数据库对这些文件的要求是缺一不可的。

 

下面介绍一下Oracle的动态结构,也就是实例,它由一系列内存池子、一堆进程组成。

内存由SGA、PGA组成

SGA结构里主要数data buffer用于缓存数据数据、log buffer用于缓存日志数据、share pool中缓存SQL 语句,Data dict缓存,share pool对于SQL查询的性能尤其是OLTP交易型应用会起到至关重要的作用,因为他可以提高常用短SQL语句的命中率,减少SQL语句的重新硬解析的过程,提高SQL语句共享性。还有其他大池、Java缓冲池等。

PGA(Program Global Area)是Oracle数据库中的一块全局内存区域,它是用户进程中独立的内存区域,用于存储SQL执行时所需要的内部数据结构、排序、哈希等计算。PGA是Oracle Database 可以为每个进程独立划分的内存域,用于存放某些只为一个连接所用的内部数据结构。

PGA由三部分组成,分别是堆栈区、排序区和临时区。

进程主要有PMON、SMON、RECO、DBWn、CKPT、LGWR、ARCn、RVWR。

PMON:负责建立用户与数据库之间的会话

SMON:负责实例恢复,同步SCN号

RECO: 负责备份恢复

CKPT: 同步数据文件、日志文件、控制文件检查点

LGWR:把日志缓存区的数据从内存写到磁盘的REDO文件里

DBWR:数据缓存,同步数据缓冲区数据写入数据文件

ARCn:   归档日志写进程

下面介绍下Oracle实例启停的几个阶段:

左边是启动过程:

1.首先实例会读取参数文件把数据库启动到nomount状态

2.实例读取控制文件去把数据库启动到mount状态,

3.针对控制文件中的数据文件路径把数据库的数据文件打开,同步三种文件的SCN号以及实例恢复,数据库状态变成Open状态。

  •  

停止过程:

1.Shutdown normal 正常把所有会话中提交的事务全部完成,如果这个时间段仍有提交事务将继续完成后再关闭数据库

2.Shutdown immediate 等待已完成的会话中已提交事务写入数据库后关闭数据库,此时间段会话将不能再发起任何事务。

3.Shutdown abort 马上关闭数据库,所有在途事务终止。启动后实例恢复需要对关闭数据库前的事务进行回滚处理。

实例的监听服务,一般是1521端口进行监听,监听的作用在于创建服务器进程,进而可以使客户端进程与服务器进程建立一对一连接。服务器进程用于代理客户端进程发出的命令。

RAC是一种典型且Oracle最经典的一种share everything的高可用数据库架构,主要可以分成单活HA、双活以及多活,一个或者多个实例打开一份数据来对应用提供服务,任何一个实例挂掉不影响应用运行的连续性。另外RAC还支持TAF业务分割的功能,这一功能也是受到Oracle主要使用大客户的青睐(某大型运营商用得最多),多个业务系统共用一套RAC互相相对独立、也能单独起到高可用、资源合理分配利用。

DataGuard是甲骨文推出的一种高可用性数据库方案, 常用于异地多机房容灾解决方案

它是在主节点与备用节点间通过日志同步来保证数据的同步,可以实现数据库快速切换与灾难性恢复。Data Guard只是在软件上对数据库进行设置,并不需要额外购买任何组件。用户能够在对主数据库影响很小的情况下,实现主备数据库的同步。而主备机之间的数据差异只限于在线日志部分

11g开始Data Guard支持备库可读方式打开,支持读写分离方案。

这个方案就适合多机房的。某机房一个production的数据库,另外其他机房部署standby的数据库。Standby数据库分物理的和逻辑的。物理的standby数据库主要用于production失败后做切换。而逻辑的standby数据库则在平时可以分担production数据库的读负载。两种Standby库主要在同步方式上有较大差异。

 

是一个MAA最佳的实例,其中最上面代表客户端的应用主机,data guard的primary 和standby 都是2个节点的RAC,因此这个就是RAC+data guard的架构。

正常工作时,左侧的primary角色的rac对客户提供服务,一旦发生问题,可以通过data guard机制把右侧的standby角色的rac激活提供服务,在这个架构中rac能够解决单点故障,但是对于灾难场景必须通过data guard来发挥作用。

文章来自个人专栏
文章 | 订阅
0条评论
作者已关闭评论
作者已关闭评论
0
0