跳转至

Oracle数据库概念

Oracle是什么

数据库相当于一个柜子;表空间相当于柜子上的抽屉;数据文件相当于抽屉中的文件夹;表相当于文件夹中的纸张;数据相当于写在纸上的信息。

Oracle数据库的物理结构

  • 主要组件 1.png
  • 数据文件 2.png

oracle实例:

  • 是一种访问数据库的基本方式
  • 总是打开一个且只打开一个数据库
  • 由内存结构和进程结构组成(SGA+PGA)

数据库的三种文件类型:

数据库内文件类型:

  • 数据文件:是实际存储插入到插入到数据表中的实际数据操作系统文件,格式为:xxx.dbf。
  • 控制文件:为二进制文件,保存了数据库名称,数据文件和重做日志文件的名称和位置,联机/脱机和大小等信息,只有控制文件正常,才能装载,打开数据库,格式为:xxx.ctl。
  • 重做日志文件:记录数据库发生故障之后重现当时操作,便于数据库的恢复,格式为:xxx.log。

数据库外文件类型:

  • 参数文件:
  • 密码文件:
  • 归档日志文件:

物理块:是操作系统分配的基本储存单位,逻辑结构中的数据块由若干个物理块组成。

物理文件:每个物理文件由若干个物理块组成。

Oracle数据库的逻辑结构

3.png

  • 数据块:数据块是最小的数据管理单位,数据库中所有I/O操作都是以块为单位,数据块的大小是操作系统块大小的整数倍,常见为8kb或16kb。
  • 数据区间:数据区间是物理上连续存放的块所构成,它是oracle储存分配的最小单位,一个或多个块组成一个数据区间,
  • 数据段:由若干个数据区间组成。
  • 表空间:用户可以把不同性质的逻辑对象储存在不同的表空间下;表空间相当于数据库的文件夹;每个表空间由一个或多少数据文件组成;一个数据文件只能与一个表空间相关联。

oracle示例中默认的表空间:

名称 主要作用
EXAMPLE 实例表空间,存放实例信息(实际案例,供大家学习;不是上述的实例)
SYSAUX system表空间的辅助空间,用于减少system表空间的负荷
SYSTEM 储存数据字典,包括表,视图,存储过程的定义等
TEMP 存储SQL语句处理的表和索引的信息
UNDOTBS1 回滚表空间,存放数据恢复信息
USERS 用户表空间,存放用户私有信息(实际使用中,会将用户私有信息存放在自主创建的表空间中)

Oracle的内存结构

  • 系统全局(SGA):数据库启动的时候,服务器分配给oracle数据库的内存。

内存区域的构成

  • 共享池

  • 数据块高速缓存区:储存以前从数据库中取出过的数据块的拷贝信息,为了高性能的修改或获取信息。

  • 重做日志缓冲区:首要目的是恢复;记录的信息可用来重做改变。

    可选的内存结构

  • 大型池:是SGA看内一种可选择的存储区域,只配置在共享服务器环境中。

  • JAVA池:为了解开java命令。

  • 程序全局(PGA):服务器进程启动时,分配的内存;为每个用户进程连接Oracle数据库分配一个内存。

  • 当用户进程连接到oracle实例时,就会创建一个对应的会话,该会话使用一个服务器进程来完成客户端与oracle实例之间的通信。

  • 每个服务器进程都有一个自己的PGA,PGA是由oracle为服务器进行分配,专门作为当前用户会话的内存区。
  • 这个内存区是非共享的,只有服务器进程本身才能访问它自己的PGA区。而SGA区则是所有服务器进程都能共享,且可写的内存区。

Oracle的进程结构

oracle进程是一种程序,依赖它要求信息的类型,执行一系列步骤的或实施一项具体的任务。

  • 用户进程:当数据库用户要求连接到Oracle服务器时开始启动。
  • 要求Oracle服务器交互的一种进程
  • 它必须首先建立一个连接
  • 不直接和Oracle服务器交互
  • 服务器进程:连接Oracle实例,当用户建立一个会话时启动。
  • 直接和Oracle服务器交互
  • 它响应用户要求,向服务器发起呼叫并返回结果给用户
  • 可用专用服务器模式;也可用共享服务器模式创建对话
  • 后台进程:Oracle实例启动即可用。
  • 保持物理和内存结构的关系
  • 必须的后台进程:DBWn, PMON, CKPT, LGWR, SMON, RECO
  • 可选的后台进程:ARCn, LMON, Snnn, QMNn, LMDn, CJQ0, Pnnn, LCKn, Dnnn

Oracle对象存储结构

4.png

  • 数据库:数据库是一个以某种组织的方式存储的数据集合,理解数据的最简单的办法就是将其想象成一个文件柜。
  • 表:某种特定类型数据的结构化清单。
  • 列:表中的字段。
  • 行:表中记录的数据。
  • 主键:存在重复数据的列无法成为主键,主键的意义是区分每行数据,就像人的身份证一样,是唯一的。
  • 主键不允许为空。
  • 任意两行都不能存在相同的主键值。
[oracle@dbnode1 OPatch]$ ./datapatch -verbose
SQL Patching tool version 19.14.0.0.0 Production on Tue Mar 25 21:44:00 2025
Copyright (c) 2012, 2021, Oracle.  All rights reserved.

Log file for this invocation: /oracle/app/oracle/cfgtoollogs/sqlpatch/sqlpatch_12342_2025_03_25_21_44_00/sqlpatch_invocation.log

Connecting to database...OK
Gathering database info...done

Note:  Datapatch will only apply or rollback SQL fixes for PDBs
       that are in an open state, no patches will be applied to closed PDBs.
       Please refer to Note: Datapatch: Database 12c Post Patch SQL Automation
       (Doc ID 1585822.1)

Bootstrapping registry and package to current versions...done
Determining current state...done

Current state of interim SQL patches:
  No interim patches found

Current state of release update SQL patches:
  Binary registry:
    19.14.0.0.0 Release_Update 211225122123: Installed
  PDB CDB$ROOT:
    Applied 19.3.0.0.0 Release_Update 190410122720 successfully on 25-MAR-25 02.23.33.616664 PM
  PDB LSQPDB:
    Applied 19.3.0.0.0 Release_Update 190410122720 successfully on 25-MAR-25 02.30.08.916546 PM
  PDB PDB$SEED:
    Applied 19.3.0.0.0 Release_Update 190410122720 successfully on 25-MAR-25 02.30.08.916546 PM

Adding patches to installation queue and performing prereq checks...done
Installation queue:
  For the following PDBs: CDB$ROOT PDB$SEED LSQPDB
    No interim patches need to be rolled back
    Patch 33515361 (Database Release Update : 19.14.0.0.220118 (33515361)):
      Apply from 19.3.0.0.0 Release_Update 190410122720 to 19.14.0.0.0 Release_Update 211225122123
    No interim patches need to be applied

Installing patches...

Patch installation complete.  Total patches installed: 3

Validating logfiles...done
Patch 33515361 apply (pdb CDB$ROOT): SUCCESS
  logfile: /oracle/app/oracle/cfgtoollogs/sqlpatch/33515361/24589353/33515361_apply_ZYCDB_CDBROOT_2025Mar25_21_44_27.log (no errors)
Patch 33515361 apply (pdb PDB$SEED): SUCCESS
  logfile: /oracle/app/oracle/cfgtoollogs/sqlpatch/33515361/24589353/33515361_apply_ZYCDB_PDBSEED_2025Mar25_21_52_39.log (no errors)
Patch 33515361 apply (pdb LSQPDB): SUCCESS
  logfile: /oracle/app/oracle/cfgtoollogs/sqlpatch/33515361/24589353/33515361_apply_ZYCDB_LSQPDB_2025Mar25_21_52_40.log (no errors)

Automatic recompilation incomplete; run utlrp.sql to revalidate.
  PDBs: LSQPDB PDB$SEED

SQL Patching tool complete on Tue Mar 25 22:01:31 2025
[oracle@dbnode1 OPatch]$