数据库同步工具
sqlserver,Mysql数据同步软件

Oracle数据库结构

在线QQ客服:1922638

专业的SQL Server、MySQL数据库同步软件

>


  • 数据库结构
    • 物理结构
      • 数据库物理文件
        • 控制文件(controlFile)
        • 数据文件(dataFile)
        • 重做/还原日志文件(logFile)
        • 参数文件( InitSID.ora)
      • SCN编号
        • 系统检查点SCN
        • 数据文件SCN
        • 数据结尾文件SCN(结尾SCN)
        • 数据文件头SCN
        • 重做日志中的高scn和低scn
    • 逻辑结构
      • 表空间
        • 表空间类型
        • 创建表空间
        • 更改表空间大小
        • 检查表空间的大小
        • 删除表空间
        • 创建回退段(撤消表空间)
      • 模式和模式对象
        • 表空间和模式对象之间的关系
      • 数据块数据节段
        • 段类型
        • li>

        • 控制区域的大小
  • 内存结构
    • 示意图内存结构图
    • 系统全局区域SGA
      • 影响SGA的参数
    • 程序全局区域PGA
  • 进程结构
    • SGA与Oracle进程之间的关系
    • oracle系统进程
      • oracle后台进程
        • 数据库写入过程DBWR
        • 日志写入过程LGWR
        • 系统监视过程SMON
        • 程序监视过程PMON
        • 检查点进程CKPT
        • 存档日志进程ARCH
      • 服务进程服务器进程
        • 专用服务器体系结构
        • 多线程服务器体系结构
        • 并行服务器体系结构
        • 分布式服务器体系结构

数据库的物理结构主要由控制文件,数据文件,日志文件和参数文件组成。

控制文件(controlFile)

控制文件用于保存数据库的物理结构-数据文件和重做日志文件,并保存数据库名称,数据文件和恢复日志文件的名称和位置,时间戳以及与数据库有关的所有文件信息。

  • 控制文件所属的数据库名称。一个控制文件只能属于一个数据库
  • 生成数据库的时间
  • 数据文件的名称,位置,在线/离线状态
  • 重做日志文件的名称和位置
  • 表空间的名称
  • 当前日志文件的序列号
  • 最近的检查站信息
  • 通常是镜像控制文件
  • 与控制文件有关的表和视图:v $ controlFile,v $ controlFile_record_section

数据文件(dataFile)

操作系统文件,包括所有数据库数据,逻辑数据库结构数据都存储在这些文件中

数据文件具有以下特征:

  • 数据库由一个或多个数据文件组成
  • 数据文件只能属于一个数据库
  • 一个表空间由一个或多个数据文件组成
  • 与数据文件有关的表和视图:v $ dataFile,dba_data_files

重做/还原日志文件(logFile)

为每个事务保存一组操作系统文件。这些文件称为事务日志。 (创建后大小通常不会更改)。 LGWR日志写入过程会定期写入重做日志缓冲区。如果有3个重做日志文件,则LGWR首先写入第一个。当第一个填满时,它开始写第二个,然后写第三个,最后返回第一个。一个数据库至少有两个重做日志文件,也称为redoLog

  • 有两种工作模式:归档日志模式和非归档日志模式(循环模式)
  • 与redoLog相关的表和视图:v $ log,v $ logFile,v $ archived_log,v $ log_history

参数文件(InitSID.ora)

是ORACLE实例启动时需要读取的参数文件。参数文件是一个文本文件,其中包含示例配置参数。对于初始ORACLE实例的许多内存和进程设置,这些参数被设置为特殊值

SCN是在Oracle数据库更新(结构更改)之后DBMS自动累积的数字。 oracle中有四个SCN编号:系统检查点SCN,数据文件SCN,结束SCN,数据文件头SCN

Oracle 10g提供了两个新功能,可以在scn和时间戳之间进行转换。这两个函数分别是scn_to_timestamp,timestamp_to_scn,并且两者之间的相互转换为管理员带来了极大的便利。在10g之前,Oracle无法通过函数(通常通过日志的logmnr分析获得)来获得时间和scn之间的对应关系。但是,这种转换取决于数据库中的数据记录。对于长期scn转换。

  • 获取当前的SCN号码

  • SCN和时间的相互转换

系统检查点SCN

系统检查点SCN位于控制文件中。当检查点过程开始(ckpt)时,Oracle将系统检查点SCN存储在控制文件中。 SCN是全球性的。例如,当发生文件级SCN时,表空间被置于只读状态,则系统检查点SCN将不会更新。

  • 查询系统检查点SCN编号命令

数据文件SCN

当ckpt进程开始时,包括全局范围(例如日志切换)和文件级检查点(将表空间设置为只读,开始备份或将数据文件设置为脱机等)。控制文件。

  • 查询数据文件的SCN编号命令

数据文件SCN的结尾(结束SCN)

每个数据文件都有一个结尾scn。在数据库的正常操作中,只要数据文件在线且可读可写,则结尾scn为null。否则,将有一个特定的scn值。结束cn也记录在控制文件中

  • SCN编号命令,用于结束查询

数据文件头SCN

与上述SCN不同,数据文件开始在每个数据文件中记录scn。发生系统和文件级检查点时,不仅此时的SCN编号记录在控制文件中,而且记录在数据文件中

  • SCN命令查询数据文件头

在安全关闭数据库的过程中,系统将执行检查点操作。此时,所有数据文件的终止scn将被设置为数据文件头中的启动scn的值。数据库重新启动时,Oracle将文件头中的启动scn与数据库文件检查点scn进行比较。如果两个值彼此匹配,Oracle还将比较数据文件头和控制文件中的启动scn。数据文件终止scn。如果这两个值也一致,则表示所有数据块都已提交,并且在关闭数据库的过程中对数据库的所有更改都没有丢失。因此,启动数据库的过程此时不需要任何恢复操作。可以打开。在打开所有数据库之后,存储在控制文件中的数据文件终止scn的值再次更改为null,这意味着该数据文件已被打开并且可以正常使用。

重做日志中的高scn和低scn

Oracle的重做日志将顺序记录数据库的更改。在一组重做日志文件已满后,它将自动切换到下一组重做日志文件。然后,上一组重做的高位scn log是下一组重做日志的低scn。在当前日志中,高scn是无穷大。

您可以通过查询v $ log_history查看低scn和高scn。

 

检查currnet重做中的最高scn

 

打开转储的文件,您可以看到

从文件‘/u01/app/oradata/orcl/redo02.log”重做转储

操作码。

RBA:0x000000.00000000.0000至0xffffffff.ffffffff.ffff

SCN:SCN:0x0000.00000000通过SCN:0xffff.ffffffff

时代:通过永恒的创造

文件头:

兼容性Vsn = 169869568 = 0xa200100

Db ID = 1269936864 = 0x4bb1b2e0,Db名称=” ORCL”

激活ID = 1269912032 = 0x4bb151e0

Control Seq = 696 = 0x2b8,文件大小= 102400 = 0x19000

文件号= 2,Blksiz = 512,文件类型= 2 LOG

说明:”线程0001,序列号0000000012,SCN 0x00000008f7b9-0xffffffffffff”

线程:1快取:0x34f6序列:0x0000000c硬件:0x9 eot:1 dis:0

resetlogs计数:0x2c3c676f scn:0x0000.0006ce7b(446075)

resetlogs终端rcv计数:0x0 scn:0x0000.00000000

上一个resetlogs计数:0x2184ef74 scn:0x0000.00000001(1)

prev resetlogs终端rcv计数:0x0 scn:0x0000.00000000

低scn:0x0000.0008f7b9(587705)2011年4月20日09:35:56

下一个scn:0xffff.ffffffff 01/01/1988 00:00:00

启用的scn:0x0000.0006ce7b(446075)2011年2月3日18:29:03

线程关闭的scn:0x0000.00090ae0(592608)2011年4月20日15:29:05

磁盘cksum:0x30ee计算cksum:0x30ee

终端恢复停止scn:0x0000.00000000

终端恢复01/01/1988 00:00:00

最新重做scn:0x0000.00000000

最大LWN:1920个方块

重做结束流:否

非保护模式

其他标志:0x0

线程内部启用指示器:thr:0,seq:0 scn:0x0000.00000000

重做日志中当前系统SCN记录的当前SCN值可以通过以下命令查看

 

如果需要实例恢复,则要恢复的记录是从587705到594373的重做日志中的记录。

表空间tableSpace是Oracle数据库内部数据库的主要逻辑结构。它是用于存储数据库对象的容器。它对应于磁盘上的一个或多个物理数据文件(dataFile),但一个数据文件只能与一个文件关联。表空间是关联的,数据库的默认表空间如下

  • 系统

    数据字典用于存储整个数据库等。

  • UNDOTBS1

    用于存储回滚段的内容

  • SYSAUX

    默认情况下,系统表空间的辅助表空间(例如OEM和流)存储在SYSAUX表空间中

  • 温度

    数据库的临时表空间,用于管理数据库排序操作,临时对象用于存储临时表,中间排序结果等。

  • 用户

    创建用户但未指定该用户使用表空间时,该用户的所有信息将被放入USERS表空间

表空间类型

  • 联机TableSpace(联机TableSpace)

    Oracle可以逐表地控制数据库的数据可用性。当表空间确保用户可以访问数据库中的信息时,可以在应用程序和数据库中使用表空间数据。该表空间称为联机表空间。

    系统表空间必须始终处于联机状态,因为在整个操作过程中数据字典中的信息都必须可用。

  • 脱机TableSpace(脱机TableSpace)

    即使数据库可用,该表空间中的数据也不适用于数据库用户。管理员可能使表空间脱机以防止访问交换的应用程序数据,这可能是因为表空间可能遇到问题,或者是因为表空间包含了不需要的历史数据。

  • 临时表空间(Temporary TableSpace)

    是一个很大的临时工作空间,事务处理可以在其中使用它来处理复杂的SQL操作。如:存储查询,连接查询,索引构造等

创建表空间

  • 语法格式

 

  • 说明

    要创建表空间,必须具有CREATE TABLESPCE系统权限。在创建时,该表可以是

    该空间指定一个或多个数据文件,创建永久或临时表空间,并转换新表空间

    设置为在线或离线。

可变的表空间大小

  • 将一个或多个新数据文件添加到表空间

 

  • 手动重新定义表空间中数据文件的大小

 

  • 重命名表空间的文件或更改路径

 

  • 在配置表空间的数据文件时,指定自动增长方法

 

检查表空间的大小

 

删除表空间

  • 说明:

    包含目录子句指示如果在表空间上创建了任何数据库对象,则返回错误或异常;否则,返回错误或异常。

    级联约束子句指示如果表空间上的数据库对象在表空间之外具有约束,则返回错误;否则,返回错误。

创建回滚段(撤消表空间)

 

  • 在线或离线回滚段

  • 缩小回滚段

  • 规则
  1. 原理:系统回滚段应放置在SYSTEM表空间中,并且应始终保持在线状态

    建议1:在单实例系统中,建议将所有回滚段设置为PUBLIC

    建议2:在多实例系统(例如OPS)中,建议将每个实例的PRIVATE回滚段放在访问速度更快的本地设备上

  2. 原理:OLTP系统应使用较小但更多的回滚段,OLAP系统/批处理系统应使用少量大的回滚段

    建议3:在OLTP/OLAP混合系统中,应专门设置一个或几个大的回滚段,通常将其设置为OFFLINE,并通过SET TRANSACTION USE ROLLBACK SEGMENT XXX使用它。这些回滚段应使用OPTIMAL参数,以便在不使用时可以缩小到较小的尺寸

    建议4:当难以计算确切的数量和尺寸时,可以使用”较大但不较小”的原则

  3. 原理:所有回滚段的INITIAL/NEXT参数应设置为相同,但建议3中提到的大回滚段除外
  4. 原理:不要将回滚段的MAXEXTENTS设置为UNLIMITED,也不要将回滚段所在的表空间设置为AUTOEXTEND

每个数据库用户对应一个模式。每个模式都由模式对象的集合组成。模式对象是用户创建的用于包含或引用其数据的逻辑结构。模式对象包括以下内容:

  • 系统表和用户表(表)
  • 集群
  • 查看(查看)
  • 索引(索引)
  • 序列生成器(序列)
  • 同义词(同义词)
  • 程序单位(存储过程,函数,程序包)
  • 数据库链接(数据库链接)
  • 触发器(触发器)

表空间和模式对象之间的关系

>

  • 数据块

    ORACLE管理数据文件存储空间的单位,这是数据I/O的最小单位。它的大小是操作系统块大小的倍数,通常为2K或4K,8K,16K

  • 数据间隔(范围)DBA/ALL/USER_EXTENTS

    它是数据库存储空间分配的逻辑单元。一定数量的连续存储的数据块形成一个数据间隔。 当段中的所有数据间隔用完时,将为数据分配一个新的数据间隔; 只能存在于一个数据文件中。

  • 段落

    存储某个数据库模式对象的数据的所有数据间隔都形成一个段

>

细分类型

  • 数据段:存储实际数据的段
  • 索引段:存储索引信息的段
  • 回滚段:DBA创建的用于存储事务处理回滚信息的段
  • 临时段:当SQL语句需要临时工作区时,它由ORACLE创建

控制区域的大小

  • 一般语法

 

  • 说明

    使用STORAGE子句的MINEXTENTS参数确定在创建段时分配的

    区号。创建新段时,Oracle至少创建一个区域。

    使用MAXEXTENTS参数可以限制此段的最大Oracle分配区域数。

    INITIAL参数设置更改的初始区域的大小,并使用NEXT参数控制后续的

    区域的大小,在分配段的后续区域之前使用PCTINCREASE参数指定

    使用的增长因子。

服务器进程和内存区域均构成Oracle系统内存的结构; oracle服务器=服务器进程+内存区域+数据库; oracle实例是oracle用于管理数据库访问的服务器端进程和内存区域的集合。

>

由ORACLE分配的一组共享内存结构,可以包含数据库实例的数据或控制信息,并且可以分为以下内存区域:

  • 数据库数据缓存

    它用于存储已修改但尚未删除的数据它们被写入磁盘,并由LRU(最近最少使用)机制管理。

  • 重做日志缓存
  • 用于存储已在内存中修改的数据库信息。使用回收机制,

    从头到尾写,直到写满,LGWR会将所有数据写到该区域

    重做日志文件,然后返回到缓存的开头并重写

  • 共享池

    用于存储SQL,PL/SQL,过程,包,数据字典锁,字符设置信息,

    安全属性等,主要包括数据字典区域和共享SQL区域

影响SGA的参数

影响SGA的参数是db_block_buffers,db_block_size,log_buffer,shared_pool_size

db_block_buffers的值越高,用户需要内存中的数据的可能性就越大,从而减少了Oracle将数据访问硬盘(物理I/O)的次数。

但是,db_block_buffers的值太高,Oracle必须在内存中找到更多的块来查找所需的块,但这会降低系统性能。

更多log_buffer减少了在日志文件中填充数据的次数。

shared_pool_size的值越大,使用时间越长的程序包和进程就可以保留在内存中,这可以提高数据库的性能。

SGA不得超过内存的50%

  • SGA大小的计算

    $(DB_BLOCK_BUFFERS * DB_BLOCK_SIZE)+ SORT_AREA_SIZE + SHARED_POOL_SIZE + LOG_BUFFER + JAVA_POOL_SIZE + LARGE_POOL_SIZE $

是一个存储区域,其中包含单个进程的数据和控制信息,因此也称为进程全局区域(Process Global Area)

在此处插入图片描述

数据库进程分为用户进程和oracle系统进程(服务器进程和后台进程)

>

oracle系统进程分为服务器进程和后台进程。服务器进程专门用于处理连接到oracle实例的请求。

  • DBWR数据库编写过程
  • LGWR日志写入过程
  • PMON程序监视过程
  • SMON系统监视过程
  • CKPT检查点流程
  • ARCH存档日志过程

oracle后台进程

数据库写入过程DBWR

  • 工作内容

    将修改后的数据缓冲区的数据写入相应的数据文件,并在系统中维护空缓冲区

  • DBWR工作的主要条件如下

    • 系统中没有很多空缓冲区来存储数据
    • DBWR由CKPT进程触发

日志写入过程LGWR

  • 工作内容

    将重做日志缓冲区的数据写入重做日志文件

  • LGWR工作的主要条件如下

    • 用户提交
    • 尚未将重做日志缓冲区的1/3写入磁盘
    • 尚未将大于1M的重做日志缓冲区写入磁盘
    • 3秒一次

系统监视过程SMON

  • 工作内容

    • 清除临时空间
    • 系统启动时,完成系统实例恢复

程序监视过程PMON

  • 工作内容

    主要用于清除无效的用户进程并释放用户进程使用的资源

检查点处理CKPT

  • CKPT工作的主要条件如下

    • 切换日志时
    • 当数据库使用即时,事务和普通选项关闭数据库时
    • 根据初始化文件LOG_CHECKPOINT_INTERVAL,LOG_CHECKPOINT_TIMEOUT,FAST_START_IO_TARGET中设置的值

用户触发的检查点是数据库事件,它将刷新的数据从缓存刷新到磁盘,并更新控制文件和数据文件。

  • 以下情况将触发检查点。
  • 发生日志组切换时。
  • 满足参数设置时。
  • 运行ALTER SYSTEM SWITCH LOGFILE时。
  • 运行ALTER SYSTEM CHECKPOINT时。
  • 运行alter tablespace XXX时,开始备份,结束备份。
  • 运行alter tablespace时,数据文件脱机。

存档日志进程ARCH

  • 工作内容

    当数据库以存档模式运行时,Oracle将在
    时启动ARCH进程。

    重做日志文件已满时,将切换日志文件,将旧的重做日志文件

    ARCH过程将文件复制到一个/多个特定目录/远程计算机。这些

    复制的重做日志文件称为存档日志文件。

服务器进程

服务器进程分为专用服务进程和共享服务进程

  • 专用服务器进程

    一个服务进程对应一个用户进程

  • 多线程服务器进程

    一个服务进程对应于多个用户进程,依次为这些用户进程提供服务

专用服务器体系结构

  • 功能:每个用户/连接都分配有专门的流程来处理请求
  • 适用于方案:用于处理大量数据的连接

多线程服务器体系结构

  • 功能:在一个进程中启动不同的多线程来处理用户请求
  • 组成:调度请求,共享服务器,队列(请求和响应)
  • 适用于方案:适用于大量并发连接和频繁请求

并行服务器体系结构

Oracle并行或群集数据库由两个或多个物理服务器(节点)组成,它们管理自己的Oracle实例并共享磁盘阵列。每个节点的Oracle实例都有其自己的”系统全局区域”(SGA)和其重做日志文件,但是数据文件和控制文件由所有实例共享。数据文件和控制文件被所有实例同时读取和写入。但是,重做日志文件可以由任何实例读取,但只能由拥有它的实例写入。某些参数(例如db_block_buffers和log_buffer)在每个实例中的配置可以不同,但是其他一些参数在所有实例中必须一致。每个群集节点都有自己的一组后台进程,就像一个实例一样。此外,还在每个实例上启动特定于OPS的过程,以处理跨实例通信,锁管理和数据块传输。

图片在此处插入

分布式服务器体系结构

>

未经允许不得转载:数据库同步软件|Mysql数据同步软件|sqlserver数据库同步工具|异构同步 » Oracle数据库结构

分享到:更多 ()

syncnavigator 8.6.2 企业版

联系我们联系我们