ORACLE 19C的体系结构与管理

发布时间 2023-09-11 17:15:25作者: 那个人后来

1、概述

  • INSTANCE
    内存结构:SGA、PGA
    进程结构:前台进程、后台进程
  • DATABASE
    参数文件、控制文件、密码文件、REDO日志、归档文件、数据文件、跟踪日志。
  • CLIENT
    JDBC、ODBC、SQL DEVELOPER等等用于连接数据库的方式。

2、体系结构

2.1 内存部分

2.1.1 系统全局区(SGA)

  • 共享池(Shared pool)

    • 库缓存(共享sql区,Library cache)
    • 字典缓存(Data dictionary cache)
    • 结果集缓存(Server result cache)
  • 数据库高速缓冲区缓存(Database buffer cache)
    保留从数据文件读取的数据块的副本
    块大小为8k、16k,不混用db_buffer_cache

  • 重做日志缓存区(Redo log buffer)
    包含重做条目

  • 大池(Large pool)

  • Java池(Java pool)

  • 流池(Streams pool)

2.1.2 程序全局区(PGA)

参数:pga_aggregate_target、 pga_aggregate_limit

  • 栈区(Stack Space)
    进行变量和变量值替换的区域

  • UGA(User Global Area,用户全局区)

    • 会话记录区:记录当前会话的情况和相关信息,并且保持会话
    • 游标记录区:这里的游标指的是SQL和PLSQL语言
  • 私有SQL区

    • SQL解析区
    • SQL工作区:哈希区、排序区、位图区
      SQL工作区其实很小,很容易就被使用完了,所以ORACLE在设计的时候使用临时表空间作为SQL工作区的补充。

2.2 进程结构

2.2.1 用户进程

连接到Oracle数据库的应用程序或工具
如:SQLPLUS /SQLDEVELOPER

2.2.2 数据库进程

  • Server process(前台进程)
    连接到Oracle实例,并与用户建立会话时启动

  • Background processes(后台进程)
    启动Oracle实例时启动。

    • Database Writer Process (DBWn)
      将db_buffer_cache中脏数据写入磁盘(异步、推进检查点)
      触发条件:
      1 脏数据块的总数超过一定的限度时
      2 扫描空闲缓冲区时,进程会扫描指定数量的块 当找不到任何空闲时发生触发
      3 每隔3秒钟启动一次DBWn
      4 当表空间或者临时表空间OFFLINE时
      5 将表空间置于只读模式READ ONLY
      6 DROP 或TRUNCATE表时
      7 当表空间发生BEGIN BACKUP时
      8 发生CKPT检查点进程(包括增量检查点和完全检查点)
      9 当进程在LRU相关链表上查找可以使用的空间时,如果链表长度过长或剩余空间不多时,会触发DBWn
      10 数据库关闭时(不以shutdown abort形式)

    • Log Writer Process (LGWR) 日志写进程
      将重做日志缓冲区写入磁盘上的重做日志文件
      触发条件:
      1 当用户进程提交事务时 (发生commit)立即写
      2 发生联机重做日志切换时
      3 当重做日志缓冲区的三分之一已满或包含1 MB的缓冲数据时
      4 在DBWn进程将修改的缓冲区写入磁盘之前
      5 自上次写入以来已过三秒钟

    • Checkpoint Process (CKPT) 检查点进程
      记录检查点信息:控制文件、数据文件头
      通知DBWn将脏块写入磁盘
      触发条件:
      1 当发生日志组切换的时候
      2 当符合以下参数设置的时候:
      LOG_CHECKPOINT_TIMEOUT
      LOG_CHECKPOINT_INTERVAL
      fast_start_io_target
      fast_start_mttr_target
      3 当执行以下任一操作时:
      ALTER SYSTEM SWITCH LOGFILE
      ALTER SYSTEM CHECKPOINT
      alter tablespace XXX begin backup,end backup
      alter tablespace ,datafile offline
      4 当使用非shutdown abort命令关闭数据库时

    • System Monitor Process (SMON) 系统监控进程
      -- 在实例启动时执行恢复
      -- 清理未使用的临时段

    • Process Monitor Process (PMON) 进程监视进程
      用户进程失败时执行进程恢复
      -- 清理DB_BUFFER_CACHE
      -- 释放用户进程使用的资源
      监视会话以了解空闲会话超时

    • Recoverer Process (RECO) 恢复进程
      与分布式数据库配置一起使用
      自动连接到不确定分布式事务中涉及到的数据库
      自动解决所有疑问事务
      删除与不确定事务对应的所有行

    • Listener Registration Process (LREG) 监听进程
      使用Oracle Net 监听并注册有关数据库实例和调度程序的信息

    • Archiver Processes (ARCn) 归档进程
      日志切换后,将重做日志文件复制到指定的存储设备
      收集事务重做数据并将该数据传输到备用目标,DG使用这个进程

  • Daemon / Application processes守护/应用程序进程

2.2.3 网络监听进程

Listener

2.2.4 网格基础设备守护程序

Grid Infrastructure daemons /ASM与RAC/

2.3 存储结构

2.3.1 数据库存储结构

  • Control files、Parameter file、Password file
  • Data files、Backup files
  • Online redo log files、Archived redo log files
  • Alert log and trace files

2.3.2 逻辑和物理存储结构

  • Logical
    Oracle data block(块)-->Extent (区)-->Segment(段)-->Tablespace(表空间)-->Database(库)
    • 块(Blocks)
      数据块由多块磁盘块(文件系统块)组成。
    • 区(Extents)
      区是数据块的集合。
    • 段(Segments)
      段存在于表空间中。
      段是区的集合。

  • Physical
    Tablespace<--Data files-->Storage System (SAN/NFS/NAS/ASM/Exadata/RAW/File System)

2.3.3 表空间和数据文件

  • Tablespace 1(SMALLFILE)
    Data block(8Kb)* 8 = Extent(64Kb)* 2 = Segment(128kb)

  • Tablespace 2 (Bigfile)
    Data block(32Kb)

  • SYSTEM和SYSAUX表空间
    SYSTEM和SYSAUX表空间是在创建数据库时创建的必需表空间,必须在线。
    SYSTEM表空间用于核心功能(例如,数据字典表)。
    SYSAUX表空间用于其他数据库组件。
    SYSTEM和SYSAUX表空间不应用于应用程序数据。

2.3.4 ASM

是一种灵活的高性能集群文件系统ASM
管理Oracle数据库文件
可以使用ASM集群文件系统(ACFS)
管理应用程序文件和共享数据
跨磁盘分布数据以负载均衡
发生故障时使用镜像数据
解决存储管理难题(SAME难题)
SAME=条带和镜像一切
asm详解:待补充

2.4 内存中列存储

SGA中的新池:“内存中”列存储。
ORACLE数据库默认格式 行格式。
行转列:填充到IM(IN MEMORY)列存储中的段将转换为列格式。
内存中段在事务上与缓冲区高速缓存一致。
列存储发生事务时也是要使用DB_BUFFER_CACHE的。

  • 内存中列存储:数据库12.1.02版本开始
  • 即时查询响应
  • 不需要大量的索引审计
  • 完整的程序透明度
  • 设置简单

2.5 Oracle Container(容器) Database

  • 可插拔数据库(Pluggable database)是一组数据库schemas,但在逻辑上对用户和应用程序来说是一个单独的数据库。
  • Multitenant container database:在物理级别具有数据库实例和数据库文件
  • 所有可插拔数据库共享:后台进程、共享进程内存、Oracle上的元数据
    image

3、管理技术

3.1 管理工具

3.1.1 简介

  • SQLPLUS
    提供了数据库的专用接口:
    执行数据库管理操作
    执行SQL命令用来查询,插入,更新和删除数据库中的数据
  • SQL Developer
    是用于访问Oracle数据库实例的图形用户界面
    支持SQL和PL / SQL开发
    在Oracle数据库的默认安装中可用
    他能去进项相关的ORACLE数据库管理操作
  • Oracle Enterprise Manager Database Express
  • Oracle Enterprise Manager Cloud Control

3.1.2 使用

  • sqlplus shell脚本
sqlplus hrxt/hrxt <<EOF
select count(*) from employees;
update employees set salary = salary+1;
commit;
quit
EOF
  • sqlplus sql文件
select * from departments where location_id = 1400;
quit
sqlplus hrxt/hrxt @script.sql
//隐去开头初始化信息 -s
sqlplus -s hrxt/hrxt @script.sql

3.2 参数管理

3.3 实例启动&关闭

3.4 网络管理

3.5 权限&角色

3.6 数据库空间

3.7 UNDO