Oracle数据库概念
Oracle是什么
数据库相当于一个柜子;表空间相当于柜子上的抽屉;数据文件相当于抽屉中的文件夹;表相当于文件夹中的纸张;数据相当于写在纸上的信息。
Oracle数据库的物理结构
oracle实例:
- 是一种访问数据库的基本方式
- 总是打开一个且只打开一个数据库
- 由内存结构和进程结构组成(SGA+PGA)
数据库的三种文件类型:
数据库内文件类型:
- 数据文件:是实际存储插入到插入到数据表中的实际数据操作系统文件,格式为:xxx.dbf。
- 控制文件:为二进制文件,保存了数据库名称,数据文件和重做日志文件的名称和位置,联机/脱机和大小等信息,只有控制文件正常,才能装载,打开数据库,格式为:xxx.ctl。
- 重做日志文件:记录数据库发生故障之后重现当时操作,便于数据库的恢复,格式为:xxx.log。
数据库外文件类型:
- 参数文件:
- 密码文件:
- 归档日志文件:
物理块:是操作系统分配的基本储存单位,逻辑结构中的数据块由若干个物理块组成。
物理文件:每个物理文件由若干个物理块组成。
Oracle数据库的逻辑结构
- 数据块:数据块是最小的数据管理单位,数据库中所有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对象存储结构
- 数据库:数据库是一个以某种组织的方式存储的数据集合,理解数据的最简单的办法就是将其想象成一个文件柜。
- 表:某种特定类型数据的结构化清单。
- 列:表中的字段。
- 行:表中记录的数据。
- 主键:存在重复数据的列无法成为主键,主键的意义是区分每行数据,就像人的身份证一样,是唯一的。
- 主键不允许为空。
- 任意两行都不能存在相同的主键值。
[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]$