一.简介

1.部分历史版本

oracle 11g:2007年 注重高可用和高安全性版本,11gR2最终版(11.2.0.4)版本2013年发布。
oracle 12c:2013年 支持云计算多租户版本
oracle 18c-20c:2018-2020年 支持自动数据库诊断和自我修复的版本
oracle 21c:2021年 支持自动索引和自动SQL优化版本
  • 1.
  • 2.
  • 3.
  • 4.

2.oracle体系结构

1.实例(Instance):
实例是数据库的内存结构和后台进程,它在服务器上独立运行,实例分为单进程实例和多线程实例。
2.数据库(Database):
数据库是数据的逻辑组织和物理文件的集合。数据库分为物理数据库和逻辑数据库。
3.表空间(Tablespace):
表空间是数据库中的逻辑存储单位,用于存放数据库表和索引等。每个数据库至少有一个表空间,称为系统表空间。
4.数据文件(Datafile):
数据文件是数据库的物理存储单位,用于保存用户数据。数据文件属于某个表空间,一个表空间可以包含多个数据文件。
5.控制文件(Control file):
控制文件记录了整个数据库的关键结构信息,如数据文件和日志文件的位置和大小。控制文件是备份的对象,通常有多个副本。
6.日志文件(Redo log file):
日志文件记录了数据库的所有更改信息,用于恢复和恢复操作。日志文件是备份的对象,通常有多个副本。
7.参数文件(Parameter file):
参数文件包含了数据库实例启动时需要的配置参数。
8.服务器参数文件(SPFILE):
服务器参数文件是参数文件的一种更加灵活和安全的形式。
9.归档日志模式(Archivelog mode):
Oracle数据库可以运行在归档日志模式下,此模式下日志文件被归档后,就可以被覆盖重用。
10.用户(User)和模式(Schema):
用户是数据库中的一个实体,用于存放数据库对象。模式是一系列数据库对象的集合,通常与用户同名。
11.视图(View)和同义词(Synonym):
视图是基于SQL查询的虚拟表。同义词是引用数据库对象(如表、视图等)的别名。
l2.数据库事务(Transaction)和锁(Locking):
数据库事务是一系列的数据库操作,这些操作要么全部成功,要么全部不做。锁是用来控制不同事务之间的数据访问和修改。
13.存储过程(Procedure)、函数(Function)和触发器(Trigger):
存储过程和函数是预先编译的PL/SQL代码块,可以接收参数和返回结果。触发器是一种自动执行的特殊类型的存储过程,它在某些数据库操作发生时自动执行。
14.数据库连接(Connection)和会话(Session):
数据库连接是客户端与服务器之间的通信路径。会话是数据库连接中的一个逻辑实体,用于保持用户的状态和进行用户的认证。
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.

体系结构分类:

物理结构:包括数据文件、日志文件、控制文件和参数文件等,它们存储在磁盘上。
逻辑结构:包括表空间、段、区间和块等。
内存结构:包括共享池、数据库缓冲区缓存和重做日志缓冲区等。
网络结构:Oracle支持分布式数据库,可以通过网络连接不同的数据库实例。
进程结构:用户进程和Oracle数据库服务器进程,后台进程,
DBWR(数据库写进程):负责将修改过的数据从数据库缓冲区缓存写入数据文件。
LGWR(日志写进程):将数据库的所有更改记录到在线重做日志文件中。
SMON(系统监控进程):执行实例恢复和清理操作,如临时段的清理和撤销数据的清理。
PMON(进程监控):负责监控其他Oracle进程,并在必要时进行重启。
CKPT(检查点进程):确保所有缓冲区中的数据都已写入磁盘,并标记检查点,以便在故障恢复时知道从哪里开始恢复。
RECO(恢复进程):处理实例故障后的恢复工作。
ARCH(归档进程):将已满的在线重做日志文件归档到备份文件中,确保数据的持久性和可恢复性。
LCKN(锁进程):管理数据库中的锁,确保数据的一致性和完整性。
QMNN(队列监控进程):监控队列的使用情况,确保队列的正常运作。
DNNN(调度进程):负责任务的调度和执行。
SNNN(共享服务器进程):允许多个用户同时连接到数据库服务器。
LMS(全局缓存服务进程):提供全局缓存服务,优化数据库性能。
--查看表空间
SELECT TABLESPACE_NAME FROM DBA_TABLESPACES;
--查看数据文件
SELECT FILE_NAME, BYTES, AUTOEXTENSIBLE FROM DBA_DATA_FILES;
--查看控制文件
SELECT NAME FROM V$CONTROLFILE; 
-- 查看日志文件
SELECT MEMBER FROM V$LOGFILE;
-- 查看参数文件
SHOW PARAMETERS;
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.

内存结构:系统全局区(SGA)和程序全局区(PGA)

系统全局区(SGA): 
一组共享的内存结构,为多个用户进程服务。它包含了数据库的数据和控制信息,如数据缓冲区、日志缓冲区、共享SQL区、数据字典缓存等。
程序全局区(PGA): 
为每个登录到Oracle数据库的用户进程单独分配的内存区。它包含了用户进程的私有数据和控制信息,如排序区、HASH区、位图区等。
--SGA大小
SELECT * FROM v$sga; 
--PGA大小
SELECT * FROM v$pga;
--查看所有内存组件的大小
SELECT * FROM v$sgainfo;
--调整SGA中的数据缓冲区的大小
ALTER SYSTEM SET db_cache_size = 500M;
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.

3.高可用集群方案

DG(data guard) 数据库级冗余,物理主从备份和恢复,mysql主从复制是逻辑复制与恢复

用于需要数据保护和灾难恢复的场景 
通过日志传输服务(LNS)和远程文件服务(RFS)将原始数据库(primary database)的所有改变复制到一个或者多个备份数据库(standby databases)。
通过实时传输和应用归档日志来保持主备库之间的数据一致性。
通过备份控制库(主库)和一个或多个备份库(备库)来工作。主库负责处理事务,备库可以用于故障转移和读取扩展。
  • 1.
  • 2.
  • 3.
  • 4.

OGG(oracle golden gate) 可以复制数据的物理变化(数据文件),也可以复制数据的逻辑变化(redo log 或 archive log)

用于实时数据复制和集成场景
通过捕获源系统上的数据变更,并在目标系统上进行重新应用实现数据的同步。
  • 1.
  • 2.

RAC(real application clusters) 实例级的冗余

用于对高性能和高可用性有严格要求的环境,
允许多个数据库实例在不同的服务器上运行,同时访问同一个物理数据库。即多实例、单一数据库的架构,所有的节点共享一个数据库。
共享存储发生故障经导致整个集群不能使用
  • 1.
  • 2.
  • 3.