目录
1.1 instance(实例)与database(数据库)Oracle serves(Oracle服务器)
一、Oracle的基本组成
1. Oracle体系架构
Oracle体系架构的纵览图
1.1 instance(实例)与database(数据库)Oracle serves(Oracle服务器)
Oracle instance 是一种访问Oracle数据库的方法,始终只打开一个database(数据库)由memory structure(内存)和background process structures(后台进程结构)组成
一个instance只能挂载 一个database
一个database可以被多个instance挂载
客户链接Oracle主要是链接instance
instance(实例)
instance比较灵活,因此容易消失 如:电脑断电,instance就会消失。
instance主要包括 memory structure(内存结构)和 后台进程
Oracle的内存结构由两个内存区域组成,称为:
(1) System Global Area (SGA):在实例启动时分配,是Oracle实例的基本组成部分
(2) PGA (Program Global Area):在服务器进程启动时分配
内存结构
SGA
SGA是动态的,由SGA_MAX_SIZE参数设置最大值,由SGA组件分配和跟踪基于总估计SGA_MAX_SIZE的连续虚拟内存分配大小 granule(SGA最小单位)
SGA : Database Buffer Cache (数据库缓冲缓存)
Redo Log Buffer (重做日志缓冲区)
Java Pool (Java池)
Large Pool(Large池)
Shared Pool(共享池)
其中 Shared Pool(共享池)包括 Library Cache 和 Data dictionary Cache
shared pool(共享池)它由两个与性能相关的关键内存结构组成,用于储存 sql语句的最终解析结果
组成:library cache (库缓存) data dictionary cache(数据字典缓存)
Library cache:
1.存储最近解析的SQL和PL/SQL语句的信息
2.允许共享常用语句
3.是由最近最少使用(LRU)算法管理
4.由两个结构组成: 共享SQL区 共享PL/SQL区
5.和大小由共享池大小决定,比较影响性能
data dictionary cache:
1.数据库中最近使用的定义的集合
2.包括有关数据库文件、表、索引、列、用户、特权和其他数据库对象的信息
3.在解析阶段,服务器进程查看数据字典中的信息,以解析对象名称并验证访问
4.将数据字典信息缓存到内存中可以缩短查询和DML的响应时间
5.大小由共享池大小决定
Database Buffer Cache (数据库缓冲缓存)
注:感觉有点像寄存器,找数据时先在Database Buffer Cache找,找不到再去磁盘上找
包含了文件里的部分数据和即将要写到文件的数据
1.存储从数据文件中检索到的数据块的副本
2.在获取和更新数据时,可以获得很大的性能提升
3.通过LRU算法管理
4.DB_BLOCK_SIZE决定主块大小
Database Buffer Cache有三个组成部分
1.Consists of independent subcaches:
-DB_CACHE_SIZE
- DB_KEEP_CACHE_SIZEl
- DB_RECYCLE_CACHE_SIZE
2.Can be dynamically resized
ALTERsYSTEM SET DB_CACHE_SIZE = 96M ;
3.DB_CACHE_ADVICE set to gather statistics forpredicting different cache size behavior
4..Statistics displayed by v$DB_CACHE_ADVICE
Redo Log Buffer
1.记录对数据库数据块所做的所有更改
2.主要目的是恢复
3.其中记录的更改称为
4.重做项包含重构或重做更改
5.大小由LOG BUFFER定义
JAVA Pool
1.服务解析Java命令的需求
2.安装和使用Java时需要
3.由JAVA_POOL_SIZE参数大小
PGA
PGA: Program Global Area
1.为连接到Oracle数据库的每个用户进程预留的内存
2.在创建进程时分配(每一个后台进程有一个PGA )
3.进程终止时被释放
4.只被一个进程使用
进程
PMON SMON DBWR LGWR CKPT Others
Oracle拥有三种类型的进程:
1.User Process 用户进程:数据库用户启动时的进程请求连接到Oracle服务器
2.Server Process 服务进程:连接Oracle实例,当用户建立会话时启动
3.Background Process 后台进程:跟随Oracle实例启动而启动
User Process
1.请求与Oracle服务器交互的程序
2.必须先建立连接
3.不直接与Oracle服务器交互
Server Process
1.直接与Oracle服务器交互的程序
2.完成生成的调用并返回结果
3.专用服务器还是共享服务器
Background Process
维护和加强物理结构和内存结构之间的关系;
强制性后台进程(必须启动):
DBWm PMON CKPT LGWR SMON
可选的后台进程(可根据需求启动 ):
ARCn LMDn QWNn CJQ0 LMON RECO Dnnn LMS Snnn LCKn Pnnn
BDWn
DBWn什么时候启动:
检查点时,
脏缓冲区达到阈值
没有空闲缓冲区超时发出
RAC ping请求表空间脱机
表空间只读
表DROP或TRUNCATE
表空间开始备份
LGWR
LGWR什么时候启动:
在提交指令时
当三分之一满时
当有1mb的重做时
每三秒一次
在DBWn写作之前
System Monitor(SMON)
SMON作用
1.恢复实例
-回滚在线重做日志文件中的更改
-打开数据库供用户访问
-回滚未提交的指令
2.合并空闲空间
3.重新分配临时段
Process Monitor(PMON)
PMON(进程监控器)
通过以下方式清理失败的进程:
1.回滚事务
2.释放锁
3.释放其他资源
4.重新启动失效调度程序
Checkpoint(CKPT)
CKPT
任务:
1.监控DBWn检查点信息
2.更新数据文件头检查点信息
3.使用检查点信息更新控制文件
Archiver(ARCi)
ARCn
1.可选后台进程
2.当设置ARCHIVELOG模式时,自动归档在线重做日志文件
3.保留对数据库所做的所有更改的记录
IPC & TCP/IP
IPC(Inter-Process Communication)和 TCP/IP(Transmission Control Protocol/Internet Protocol)是两个不同的概念和技术。
IPC(进程间通信)是指不同进程之间进行数据交换和通信的一种机制。它允许不同进程在同一个计算机上进行通信,共享资源和协调操作。IPC 提供了不同的通信方式,如管道、消息队列、共享内存和套接字等。
而 TCP/IP(传输控制协议/互联网协议)是一组网络通信协议,用于在计算机网络中进行数据传输。它是互联网的基础协议之一,常用于在不同计算机之间进行数据通信。TCP/IP 协议簇包括多个层次的协议,其中包括 IP 地址分配、路由选择、数据包传输和错误修复等功能。
虽然这两个概念都涉及到数据交换和通信,但IPC 是用于进程间的通信,而 TCP/IP 是用于在计算机网络中进行数据通信。在某些情况下,可以使用 IPC 技术在同一个计算机上的不同进程之间进行 TCP/IP 通信,但它们本质上是不同的概念和技术。
Oracle处理SQL语句的过程
1.使用以下命令连接到实例:
-User process
-Server process2.所使用的Oracle服务器组件取决于SQL语句的类型:
- Queries return rows
- DML statements log changes
- Commit ensures transaction recovery
3.部分Oracle服务器组件不参与SQL语句的处理。
总结:
数据库文件:数据文件,控制文件,在线重做日志文件
SGA内存结构:数据库缓冲缓存、共享池和重做日志缓冲区
主要的后台进程:DBWn, LGWR, CKPT, PMON, SMON说明可选后台进程ARCn的使用
识别可选的和有条件的后台进程
逻辑层次结构
database(数据库)
Oracle database 被视为一个单位的数据集合 包含三种基本的文件类型
三大文件:Datafiles(数据文件) Controlfiles(控制文件) Redo Logfiles(重做日志文件)
Datafiles:存储Oracle的数据
Controlfiles:提供一些控制信息
Redo Logfiles:记录着修改数据库之前、之后的改变,能够恢复databasefiles
其他文件:paramaterfile(参数文件) Passwordfile(密码文件) Archived Logfiles(归档日志文件)
paramaterfile:用于配置和自定义系统或应用程序的行为,运行时设置,管理和维护,可移植性和版本控制,以及提供文档和说明。它们是管理和控制系统行为的重要工具,帮助实现系统的配置灵活性和可维护性。(无特殊情况不修改,修改最好先保存一份文件,发生错误方便改正)
Passwordfiles:用于用户身份验证、安全性,以及密码管理、认证和授权。它们是维护系统和应用程序安全的关键组成部分,保护用户数据和防范未经授权的访问。重要的是,密码文件应该受到适当的保护和管理,以防止未经授权的访问或泄露。
Archived Logfiles:和Redo Logfiles相辅相成,对于故障排除、性能监控、安全审计和数据分析等方面都非常有用。它们提供了关键的信息和可追溯性,以支持系统和应用程序的管理和维护工作。
Oracle server(Oracle服务器)
Oracle server指的是软件,由一个Oracle install 和一个Oracle database 组成,主要是为数据库管理系统提供了一个开放的、全面的、集成的信息管理方法。
Oracle server的工具 ![](https://i-blog.csdnimg.cn/blog_migrate/17ecf40e26b04e13710fe4b660b7268a.png)
Oracle UniversalInstaller (oUl):用于安装、升级或移除软件组件
Oracle DatabaseConfigurationAssistant:与OUI交互的图形用户界面工具,或者可以独立使用,以创建、删除或修改数据库
SQL*Plus:访问Oracle数据库中的数据的实用程序
Oracle Enterprise Manager:用于管理、监视和调优一个或多个数据库的图形界面
数据库的管理工具
1.Oracle Universallnstaller
2. Database Configuration Assistant
3. Database Upgrade Assistant
4.Oracle Net Manager
5.Oracle Enterprise Manager
6.SQL*Plus
7.Recovery Manager
8. Oracle Secure Backup
9.Data Pump
10.SQL*Loader
Oracle Universallnstaller
用于安装、升级、移除软件组件,以及创建数据库
基于Java引擎
功能包括:
自动依赖解析
允许基于web的安装
跟踪组件和套件安装的库存
卸载已安装组件
支持多个Oracle home
支持技术全球化
Oracle DBCA
主要需求:
创建数据库
配置数据库选项
删除数据库
管理模板
使用BDCA:
系统会自动创建“SYS”和“SYSTEM”用户
在创建数据库期间
授予DBA角色
用户SYS
数据库数据字典的所有者
默认密码:change_on_install
用户SYSTEM
Oracle工具使用的其他内部表和视图的所有者
默认密码:manager
SQL*Plus(重点)
Oracle工具提供以下功能:
与数据库交互和操作的能力
能够启动和关闭数据库、创建和运行查询、添加行、修改数据和编写自定义报告
具有特定附加组件的标准SQL语言的子集
连接到SQL*Plus:
Oracle Enterprise Manager
作为dba的集中式系统管理工具
用于管理、诊断和调优多个数据库的工具
用于管理来自多个位置的多个网络节点和服务的工具
用于与其他管理员共享任务
提供用于管理并行服务器和复制数据库的工具
1.2connection(链接)与session(会话)
connection(链接)主要是指Oracle客户端与Oracle服务器建立的pct链接
server process 处理客户端与服务器连接的进程
session(会话)当客户端与服务器通过 验证 建立 连接 后,就形成了会话
1.3Oracle逻辑结构
结构:
1.由表空间、段、区段和块组成的层次结构
2.指示如何使用数据库的物理空间
1.4 Oracle的储存结构
1.5 Initialization Parameter Files(初始化参数文件)
当 startup 后oracle服务就会启动初始化参数文件
1.条目特定于正在启动的实例
2.两类参数:
显式:在文件中有一个条目
隐式:文件中没有条目,但采用Oracle默认值
3.可以存在多个初始化参数文件,根据初始化参数文件的类型,
4.对文件中条目的更改根据所使用的初始化参数文件的类型生效
静态参数文件,PFILE
持久化服务器参数文件,SPFILE
1.51PFLIE
1.文本文件
2.使用操作系统编辑器修改
3.手动修改
4.更改将在下次启动时生效
5.只在实例启动时打开
6.默认位置为ŞORACLE_HOME/dbs
创建一个PFLIE文件
通过源文件创建一个init.ora文件(复制一份源文件来修改)
由Oracle通用安装程序安装的示例
使用操作系统Copy命令复制示例
由数据库SID唯一标识
修改initSID.ora文件
编辑参数
针对数据库需求
1.52PSFILE![](https://i-blog.csdnimg.cn/blog_migrate/7c4bd9e90cba5358d71403d804819166.png)
1.二进制文件
2.由Oracle服务器维护
3.始终驻留在服务器端
4.能够在关机和启动期间持续进行更改
5.能自调参数值
6.恢复管理器支持备份到初始化参数文件
创建SPFILE文件
通过PEFILE文件创建
SPFILE- name:要创建的 SPFILE
PFILE- name:创建SPFILE的PFILE
可以在实例启动之前或之后执行
SPFILE 对比 PFILE
1.6Oracle启动
启动数据库
启动数据库时的三种状态
实例是如何启动的
当Oracle数据库启动一个实例时,它会读取服务器参数文件(SPFILE)或初始化参数文件,以确定初始化参数的值。然后,它分配一个SGA,这是一个用于数据库信息的共享内存区域,并创建后台进程。此时,没有数据库与这些内存结构和进程相关联。
当实例启动时,数据库以有效的参数语法将所有显式参数设置写入警报日志。如果需要,您可以将此文本复制并粘贴到一个新的参数文件中,然后重新启动实例。
如何挂载数据库
实例挂载数据库以将数据库与该实例关联。要挂载数据库,实例找到数据库控制文件并打开它们。控制文件在用于启动实例的参数文件中的CONTROL_FILES初始化参数中指定。然后,Oracle数据库读取控制文件,以获得数据库的数据文件和重做日志文件的名称。
此时,数据库仍处于关闭状态,只有数据库管理员可以访问。数据库管理员可以在完成特定维护操作时保持数据库关闭状态。但是,该数据库还不能用于正常操作。
如何打开数据库
打开挂载的数据库使其可用于正常的数据库操作。任何有效的用户可以连接到开放的数据库并访问其信息。通常,一个数据库管理员打开数据库以使其可供一般使用。
当您打开数据库时,Oracle数据库会打开在线数据文件和重做日志文件。如果在数据库之前关闭时表空间处于离线状态,那么在重新打开数据库时,表空间及其对应的数据文件仍将处于离线状态。
当您试图打开数据库时,如果其中任何一个数据文件或重做日志文件不存在,那么Oracle数据库将返回错误。在打开数据库之前,必须对任何损坏或丢失的文件的备份执行恢复。
启动命令
启动实例并打开数据库:
startup
STARTUP PFILE = $ ORACLE_HOME / dbs / initdb01.ora
ALTER DATABASE Command
将数据库的状态从NOMOUNT修改为MOUNT:
以只读数据库的方式打开数据库:
Restricted Mode
使用STARTUP命令限制对数据库的访问:
使用ALTER SYSTEM命令将实例置于受限模式:
Read-Only Mode
以只读方式打开数据库:
可用于:
执行查询
使用本地管理的表空间执行磁盘排序
将数据文件离线和在线,但不包括表空间
执行离线数据文件和表空间的恢复
shutting dowm the database
关闭数据库
关闭数据库时,Oracle将SGA中的所有数据库数据和恢复数据分别写入数据文件和重做日志文件中。接下来,Oracle数据库关闭所有在线数据文件和重做日志文件。(任何离线表空间的任何离线数据文件都已关闭。如果随后重新打开数据库,则脱机的表空间及其数据文件将分别保持脱机和关闭状态。)此时,数据库处于关闭状态,无法进行正常操作。关闭数据库后,控制文件保持打开状态,但仍然挂载。
卸载数据库
关闭数据库后,Oracle数据库卸载数据库以解除与实例的关联。此时,实例保留在计算机的内存中。
卸载数据库后,Oracle数据库将关闭该数据库的控制文件。
关闭实例
数据库关闭的最后一步是关闭实例。当您关闭一个实例时,SGA将从内存中删除,后台进程将终止。
SHUTDOWN Options
Diagnostic Files
Diagnostic files
包含遇到的重要事件信息
用来解决问题
用于更好地管理数据库的日常基础
Several types exist
alertsID.log file
Background trace files
User trace files
Alert Log File
alertsID.log file:
记录命令
记录重大事件的结果
用于日常操作信息
用于诊断数据库错误
每个条目都有一个与之关联的时间戳
必须由DBA管理
定义的位置在 BACKGROUND_DUMP_DEST
Background Trace Files
后台跟踪文件
记录任何后台进程检测到的错误
用于诊断和排除错误
当后台进程遇到错误时创建
定义的位置在BACKGROUND_DUMP_DEST
User Trace Files
用户跟踪文件
由用户进程生成
可以由服务器进程生成吗
包含跟踪SQL语句的统计信息
包含用户错误消息
当用户遇到用户会话错误时创建
位置由USER_DUMP_DEST定义
由MAX_DUMP_FILE_SIZE定义的大小
Enable/Disable User Tracing
会话层:
—使用ALTER SESSION命令:
ALTER SESSION SET SQL TRACE = TRUE
—执行DBMS过程:
dbms system.SET SQL TRACE IN SESSION
实例层:
—设置初始化参数:
SQL TRACE = TRUE