首页 > 数据库 >ORACLE数据库基础知识

ORACLE数据库基础知识

时间:2023-03-31 23:33:06浏览次数:28  
标签:文件 process 数据库 基础知识 Oracle SGA ORACLE 进程

ORACLE数据库基础知识

Oracle 简介

Oracle数据库系统是美国Oracle公司(甲骨文)提供的以分布式数据库为核心的一组软件产品,是目

前最流行的客户/服务器(client/server)或B/S体系结构的数据库之一。Oracle数据库是目前世界上使

用最为广泛的数据库管理系统,作为一个通用的数据库系统,它具有完整的数据管理功能;作为一个关系

型数据库,它是一个完备关系的产品;作为分布式数据库它实现了分布式处理功能,但它的所有知识,只

要在一种机型上学习了Oracle知识,便能在各种类型的机器上使用它。

Oracle 的特点

  1. 大量性
  2. 持久性
  3. 数据的共享性
  4. 安全性
  5. 开放性

Oracle 体系结构

几个重要的Oracle术语

  • Oracle服务器:即Oracle server,由Oracle实例和Oracle数据库组成。

  • Oracle实例:即Oracle instance,是在Oracle启动的第一个阶段根据参数文件,生成的一系列的后台进程和一块共享内存SGA共同组成。

  • Oracle数据库:即Oracle database,是由Oracle所有的物理文件所组成。其中最关键的有:控制文件、数据文件、redo log文件等。

Oracle实例与Oracle数据库进行交互,Oracle实例来对数据库进行各种操作,从而对外提供数据库的存储和检索服务。

database结构

物理结构

  • 数据文件(data files):数据文件包含数据库中的实际数据,是数据库操作中数据的最终存储位置。

  • 控制文件(control files):包含维护数据库和验证数据库完整性的信息,它是二进制文件。

  • 重做日志文件(redo files):重做日志文件包含数据库发生变化的记录,在发生故障时用于数据恢复。

  • 参数文件(parameter file):参数文件中定义了数据库实例的特性。在参数文件中包含为SGA中内存结构分配空间的参数,如分配数据库高速缓冲区的大小等,参数文件是正文文件,可以使用操作系统文本编辑器查看,如在Windows操作系统中使用记事本工具。

  • 归档日志文件(archive log files):归档日志文件是日志文件的脱机备份,在发生故障后进行数据恢复时可能使用该文件。

通过查询语句查看数据文件、控制文件、日志文件的物理路径SQL> select * from dba_data_files;

通过查询语句查看数据文件、控制文件、日志文件的物理路径SQL> show parameter spfile;

逻辑结构

  • 表空间(tablespace),是数据库的逻辑组成部分。表空间是数据库的最大逻辑存储结构,和物理数据文件相对应,一个表空间可以由多个数据文件组成,一个数据文件只能属于一个表空间 。
  • 段(Segment),用于存放特定的逻辑对象(表、簇、索引等)的所有数据,它由一个或多个区组成的。如表段、索引段、临时段、undo段等。
  • 区(extent),是Oracle进行空间分配的逻辑单元,它由相邻的数据块组成。
  • Oracle 块,数据块,是Oracle 在数据文件上执行I/0的最小单位,其尺寸应该为OS块的整数倍。

instance结构

内存结构

内存结构包括sga和pga(主要给server process用,程序起来时分配)

instance只是 sga

主要包括: share pool, db buffer cache, redo log buffer, large pool, java pool

Sga的大小由sga_max_size parameter由granules(颗粒)大小来决定。

sga(system global area)

SGA(System Global Area)由一组内存结构组成,它是由所有用户进程共享的一块内存区域。启动例程时,Oracle自动分配SGA,关闭例程时,oracle自动释放SGA所占用的内存空间。

SGA占物理内存的1/3--1/2,大小可由参数文件内参数计算shared pool(共 享池), database buffer cache(数据缓冲区), redo log buffer(重做日志缓冲区) (如以下图所示)

SGA = share_pool_size + db_block_size * db_block_buffers + log_buffers

  • ORACLE 10g中的SGA_MAX_SIZESGA_TARGET参数SGA_MAX_SIZE指的是可动态分配的最大值﹐而SGA_TARGET是当前已分配的最大sga

  • Oracle 11g之后加入新特性:Memory_target与自动内存管理MEMORY_MAX_TARGET,MEMORY_TARGET参数:将PGA+SGA作为整体内存使用被一致的纳入自动管理

共享池(Shared pool)

Oracle引入共享池的目的就是共享SQLPL/SQL代码,即把解析得到的SQL代码的结果在这里缓存,其中PL/SQL代码不仅在这里缓存,同时在这里共享。共享池由两部分组成,即库高速缓存(Libray cache)和数据字典高速缓存(Data dict cache)

数据库高速缓存区

数据库高速缓冲中存储了最近从数据文件读入的数据块信息或用户更改后需要写回数据库的数据信息,此时这些没有提交给数据库的更改后的数据称为脏数据。

数据库缓冲区存储DML与查询的所有数据;

数据库缓冲区存放的对象有表、索引、簇、大对象段、回滚段、临时段等;

数据库缓冲区以块为单位来分配与管理;

重做日志高速缓冲区

当用户执行了如INSERT、UPDATE、DELETE、CREATE、ALTER或DROP操作后,数据发生了变化,这些变化了的数据在写入数据库高速缓存之前会先写入重做日志缓冲区,同时变化之前的数据也放入重做日志高速缓存,这样在数据恢复时Oracle就知道哪些需要回滚。

pga(program global area)

用于存放服务器进程的数据和控制信息,独立于SGA的一块内存区域。自己进程私有的内存空间当用户连接到Oracle Server时,Oracle server会为每个服务器进程分配相应的PGA.SGA是所有服务器进程都可共享那个的一块内存区域,而每个服务器进程都具有私有的PGA内存空间。 客户端在通过sql语句连接database时,必须通过实例Instance来连接和管理数据库。Connection:客户端进程和服务端进程建立通讯。Session:当用户经过Oracle server认证后开始建立会话,直到用户退出登录,会话结束。

进程结构

主要包括: user process, server process,background process

user process和server process是连接时产生background process主要包括: dbwn、gwr、pmon、smon、ckpt等 (arcn)

Oracle的进程主要有后台进程和Server process(其实按照Linux的严格意义来说,Server process也是属于后台进程)。后台进程主要对Oracle数据库进程各种维护和操作,而Server process主要来处理用户的请求:

用户进程通过监听器来访问Oracle instacne,那么就会触发生成一个Server process进程,来对该用户进程的请求进程处理。后台进程一般有:LGWR, DBWR, ARCN, CKPT, SMON, PMON等等。

  1. DBWR(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负责清理它占用的各种资源。

问题:一个数据库软件可以被多个实例访问么?

问题:一个数据库实例,只允许一台台服务器,一个用户进行连接(session)么?

标签:文件,process,数据库,基础知识,Oracle,SGA,ORACLE,进程
From: https://www.cnblogs.com/fuqian/p/17277841.html

相关文章

  • 窗口函数 oracle_11g
    窗口函数oracle_11g数据库中的窗口函数也叫分析函数,顾名思义,窗口函数可用于一些复杂的统计分析计算,另外,窗口函数还具有优越的性能表现,可以节约时间和资源,因此窗口函数经常用于数据仓库和大型报表应用中。窗口函数的结构窗口函数由四部分组成,分别是分析函数名、分区子句、排......
  • Lixnu:如何安装、启用、访问云服务器中的MySQL数据库?
    Linux系统:CentOS7MySQL版本:5.7.41安装方法:rpm安装(需要自己解决依赖问题)云服务器:阿里云MySQL客户端:Navicat  1、准备工作:软件配置本机是否有mysql软件:rpm-qa|grepmysql是否有冲突软件mariadb:rpm-qa|grepmariadb(如果有)卸载......
  • Go 连接数据库的增删改查
    packagemainimport("database/sql""fmt"_"github.com/go-sql-driver/mysql")vardb*sql.DBfuncinitDB()(errerror){dsn:="root:123456@tcp(127.0.0.1)/ssmd"db,err=sql.Open("mys......
  • 项目一众筹网05_0项目阶段性总结,SSM框架_项目开发注意事项,,不要随意动框架预定好的结构
    系列文章目录文章目录系列文章目录一、框架搭建好之后,项目开发阶段,各就各位,尽量不要新建包名二、mybatis里面sql结束不要带分号三:实体的属性名最好跟数据库的字段保持一模一样,这样mybatis才不会因为大小写什么的而识别不了四:不是主键可以添加唯一约束吗五、idea里面的配置,需要注意......
  • 项目一众筹网05_01_[树形结构开发]菜单维护-树形结构基础知识、自关联、zTree的介绍和
    树形结构开发]菜单维护文章目录树形结构开发]菜单维护01-菜单维护-树形结构基础知识-上==在数据库中怎么去表示树形关系====其实这就是自关联====我们怎么识别根节点==02-菜单维护-树形结构基础知识-下03-页面显示树形结构-后端-逆向工程==开发的细节:如何避免空指针异常:初始化==04-......
  • oracle静默安装
    ##################       如何确定安装的oracle是否有问题?              #####################......
  • mongodb--数据库操作与集合操作
    一、数据库操作1、新建数据库和切换数据库useDATABASE_NAME--DATABASE_NAME创建数据库的名字--如果刚创建完数据库,使用查看命令后没有的话,其实因为里面没有数据,所以才看不到2、查看所有数据库--查看所有数据库showdbs--查看当前数据库db 3、删除数据库--删除......
  • 使用EFCore的Code First和MySql数据库迁移(转载 )
    下辈子还当程序员 博客园首页新随笔联系订阅管理随笔-4  文章-0  评论-9  阅读- 44432使用EFCore的CodeFirst和MySql数据库迁移 1.感慨一下    随着.netcore的持续更新和升级,至少对于从事.net开发的人员和即将踏入这个领域......
  • NoSQL - 非关系型数据库
    一、定义主要针对键值、文档、图形类型数据存储;天生支持分布式,数据冗余和数据分片等特性,旨在提供可扩展的高可用高性能数据存储解决方案;代表有:HBase,Cassandra,MongoDB,Redis   二、SQL与NoSQL区别      三、分类1.键值数据库其......
  • 非Spring项目下使用H2数据库做UnitTest
    1.Maven引入包<dependency><groupId>junit</groupId><artifactId>junit</artifactId><scope>test</version></dependency><dependency><groupId>com.h2database</groupId><a......