1->Oracle10g体系结构概述

1. 几个重要的Oracle术语
要学习Oracle的体系结构,先要搞明白几个重要的术语:Oracle服务器、Oracle实例、Oracle数据库。
Oracle服务器 :即Oracle server,由Oracle实例和Oracle数据库组成。
Oracle实例 :即Oracle instance,是在Oracle启动的第一个阶段根据参数文件,生成的一系列的后台进程和一块共享内存SGA共同组成。
Oracle数据库 :即Oracle database,是由Oracle所有的物理文件所组成。其中最关键的有:控制文件、数据文件、redo log文件等。
Oracle实例与Oracle数据库进行交互,Oracle实例来对数据库进行各种操作,从而对外提供数据库的存储和检索服务。

2. Oracle总体结构
Oracle server由Oracle instance和Oracle database组成。而Oracle instance又由后台进程和共享内存组成,所以Oracle的结构又包含了 内存结构 进程结构 ;而Oracle database有物理文件组成,所以Oracle结构也包含了 存储结构

下面分别对Oracle内存结构、Oracle进程结构、Oracle存储结构进行概述,让我们对Oracle有一个对初步的概念。
3. Oracle内存结构
总体而言Oracle的内存由两大部分组成:PGA和SGA,其结构如下图所示:


不管是Server process,还是后台进程,他们都有自己进程私有的内存空间,即PGA;而SGA则为所有后台进程间共享访问使用。
给Server process分配的PGA,根据其功能有划分为几个具体的部分。后续博客再进行具体探讨。
SGA在Oracle10g中分为6个部分,如上图所示。下面分别概述其作用:
1) shared pool (共享池):
主要作用是提高SQL语句以及PL/SQL语句的执行效率,缓存执行过的SQL语句,执行计划;PL/SQL语句的代码块、执行码等(该部分称为 library cache );以及在编译SQL, PL/SQL语句是参照的数据字典信息(该部分称为 dictionary cache row cache )。是SGA中最重要的部分之一。
2) database buffer cache (数据库缓冲区):
主要作用是缓存曾经读取过的数据块,Oracle数据库中对数据的所有修改操作都是在buffer cache中进行的。因为所有的操作都必须先将物理文件上的数据块读取到buffer cache中,然后才能进行各种操作。buffer cache是SGA中最大的内存区域,也是SGA中最重要的部分之一。
3) redo log buffer (重做日志缓冲区):
缓存生成的redo log记录,日志写后台进程会将log buffer中的记录写到磁盘中。也是SGA中最重要的部分之一。
4)Large pool(大池):
可选的内存池,其主要作用是分担shared pool的压力。某些情况,比如备份恢复,如果没有分配Large pool,则会从shared pool中分配内存,这会增加shared pool的负担。
5)Java pool(Java池):
用于Java程序使用。
6)stream pool(流池):
数据库在流工作是使用的内存区域。
4. Oracle进程结构
Oracle的进程主要有后台进程和Server process(其实按照Linux的严格意义来说,Server process也是属于后台进程)。后台进程主要对Oracle数据库进程各种维护和操作,而Server process主要来处理用户的请求:

用户进程通过监听器来访问Oracle instacne,那么就会触发生成一个Server process进程,来对该用户进程的请求进程处理。后台进程一般有:LGWR, DBWn, ARCn, CKPT, SMON, PMON等等。
1) DBWn (database writer数据库写):
主要作用是将被修改过的buffer cache按照一定的条件写入物理磁盘。
2) LGWR (log writer,日志写):
主要作用是将log buffer中的redo log记录按照一定的条件写入联机的redo log文件。
3) CKPT (checkpoint,检查点进程):
主要作用是将检查点位置(checkpoint position)写入控制文件和数据文件的头部。
4) SMON (system monitor,系统监控进程):
主要作用是在数据库启动时,判断实例上次是否正常关闭,如果是非正常关闭,则进程实例恢复。另外,还会合并相连的可以空间。
5) PMON (process monitor,进程监控):
监控Server process, 如果Server process非正常关闭,则PMON负责清理它占用的各种资源。
5. Oracle存储结构
存储结构即物理文件的组成结构,Oracle涉及的物理文件如下所示:

图2:

其中的控制文件、数据文件、重做日志文件是不可或缺的关键文件:
1) control file (控制文件):
包含了数据库物理结构的信息,比如各种文件的存放位置,当前数据库的运行状态等。十分重要,丢失则数据库实例不能启动。
2) datafile (数据文件):
存放数据的文件。
3) online redo log file (联机重做日志文件):
存放redo log的文件。维护数据库的一致性,用于数据库恢复。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
mysql> CREATE TABLE users ( -> id INT AUTO_INCREMENT PRIMARY KEY, -> username VARCHAR(255) NOT NULL, -> password VARCHAR(255) NOT NULL -> ); Query OK, 0 rows affected (0.06 sec) mysql> Welcome to the MySQL monitor. Commands end with ; or \g. ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Welcom e to the MySQL monitor. Commands end with' at line 1 ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'or' at line 1 -> Your MySQL connection id is 54623110 -> Server version: 8.0.32 Source distribution -> Copyright (c) 2000, 2022, Oracle and/or its affiliates. -> Oracle is a registered trademark of Oracle Corporation and/or its -> affiliates. Other names may be trademarks of their respective -> owners. -> Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. -> mysql> CREATE TABLE users ( -> -> id INT AUTO_INCREMENT PRIMARY KEY, -> -> username VARCHAR(255) NOT NULL, -> -> password VARCHAR(255) NOT NULL -> -> ); ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '. Your MySQL connection id is 54623110 Server version: 8.0.32 Source distributio' at line 1 mysql> Query OK, 0 rows affected (0.06 sec) -> mysql> -> SHOW TABLES; ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Query OK, 0 rows affected (0.06 sec) mysql> SHOW TABLES' at line 1 mysql>
最新发布
07-14

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值