oracle培训第五天

简介: 1.oracle体系架构实例和数据库oracle server :database + instancedatabase :data file ,control file...
1.oracle体系架构
实例和数据库

oracle server :database + instance
database :data file ,control file ,redolog file
instance:an instance access a database
oracle memory:sga + pga
instance::sga + backgroud process
一个instance只有一个sga,sga供所有session共享,随着instance启动而分配,instance down,sga释放

sga的基本组件
1.shared pool
共享池是对sql,pl/sql程序语法分析,编译,执行的内存区域
2.database buffer cache
用于存储从磁盘数据文件中读入的数据,为所有用户共享
服务器进程将读入的数据保存在数据缓冲区中,当后续的请求需要这些数据时可以在内存中找到,不需要从磁盘读取。
数据缓冲区中被修改的数据块(脏块)由后台进程dbwr将其写入磁盘。
3.redo log buffer
日志条目(redo entries),记录了数据库的所有修改信息(包括DML和DDL),为的是数据库修复,日志条目首先产生于日志缓冲区。
日志缓冲区较小,它是以字节为单位的,他极其重要。
show parameter log_buffer
日志缓冲区的大小是固定的,如果要调整,只能修改参数文件,然后重启数据库。不能由sga自动管理。

oracle进程:
user process
server process
background process

后台进程
smon系统监控进程
在实例崩溃后,oracle会自动恢复实例。另一个作用是释放不再使用的临时段。
pmon进程监控
1.当user process失败时,清理出现故障的进程。释放当前所有挂起的锁定。释放服务器端使用的资源。
2.监控空闲会话是否达到阈值
3.动态注册监听

dbwr数据写入进程
1.将修改后的缓冲区数据写入数据文件中。写脏快。
2.释放data buffer空间
以下情况发生时,dbwr都会写
1.ckpt发生 2.脏块太多 3.db_buffer自由空间不足 4. 3s 5.表空间read only/offline/backup
commit不能触发dbwr写

lgwr写日志条目
从redo log buffer 到  redo logfile(必须在dwnr写脏块之前写入日志)
以下情况发生时, lgwr 都会写
1.commit 2.三分之一满 3先于dbwr写而写 4. 3s

ckpt生成检查点
通知或督促dwnr写脏块
完全检查点:保证数据一致性
增量检查点:不断更新控制文件中的检查点位置,当发生实例崩溃时。可以尽量缩短实例恢复时间。


pga
属于oracle内存结构,存放用户游标,变量,控制,数据排序,存放hash值。与sga不同,pga是独立的,非共享。

用户与服务器的连接方式
1.专用连接(dedicated)
2.共享连接(shared)
3.驻留连接池模式

实例管理及数据库的启动及关闭
instance
用于管理和访问database
instance在启动阶段读取初始化参数文件(init parameter files)
init parameter files
管理实例相关启动参数,位置$oracle_home/dbs

pfile(parameter file)静态参数文件
1.文本文件,通过编辑器修改参数
2.修改参数,下次重启实例才生效
3.pfile参数文件 可以不在database server上
init+sid.ora

spifle(system parameter file)动态参数文件
1.二进制文件,不能通过编辑器修改
2.必须在database server的指定路径下
spfile+sid.ora

静态参数和动态参数
在spfile读到内存后,有一部分参数是可以直接在内存中修改,并对当前instance立即生效,这样的参数叫动态参数。
除了动态参数都是静态参数。静态参数修改spfile文件。动态参数在instance关闭后失效,静态参数在instance下次启动后生效。

修改spfile文件的方法
alter system set 参数=值 [scope =memory|spfile|both ] --both是缺省值
alter system reset 参数 --恢复缺省值

优先spfile启动,找不到spfile用pfile启动
pfile和spfile可以相互生成
create pfile from spfile
create spfile from pfile

启动的三个阶段
nomount阶段
读取init parameter

mount阶段
读取控制文件

open阶段
加载数据文件
检查数据库的一致性(control file ,datafile,redo file的检查点是否一致,一致的话正常打开,不一致的话做media recover)
select * from v$datafile;
select * from v$datafile_header;

select *  from v$instance;

实例关闭
shutdown normal
拒绝新的连接,等待当前事务和会话结束,生成检查点
shutdown transaction
拒绝新的连接,等待当前事务结束,生成检查点
shutdown immediate
拒绝新的连接,未提交的事务回滚,生成检查点
shutdown abort(startup force)
事务不回滚,不生成检查点,下次启动需要做instance recovery

口令文件
OS认证
 sqlplus / as sysdba
口令文件认证 sysdba权限
sqlplus sys/bsoft as sysdba

普通用户登录
 sqlplus scott/bsoft
口令密码不是以文件形式存放,由oracle保管在他的内部字典里

控制文件
1.定义数据库当前物理状态
2.维护数据的一致性
3.是一个二进制文件
4.在mount阶段被读取
5.记录rman备份的元数据

redo日志
1.记录数据库的变化(DML,DDL)
2.用于数据库的recovery
3.以组的方式管理redo file,最少两组redo,循环使用
4.和数据文件存放到不同的磁盘上,需要读写速度快的磁盘

日志切换
1.归档模式:将历史日志连续的进行保存
2.非归档:历史日志被覆盖
3.产生checkpoint,通知redo log所对应的脏块从data buffer写入到datafile 并且更新控制文件

归档日志 archivelog
归档和非归档的区别
1.归档模式下,切换日志时,备份历史日志,可以进行冷备和热备。可以实现完全恢复和不完全恢复(基于时间点)
2.归档会启用arcn后台进程,占用磁盘空间
3.非归档只能冷备,只能恢复到最后一次备份状态

管理undo
使用undo tablespace存放从datafiles读出的数据块的前镜像
供以下情况使用
1.回滚事务
2.读一致性:正在做DML操作的数据块,事务结束前,其他用户读undo里面的数据前镜像
3.实例恢复:instance recover(undo ->rollback)
4.闪回技术 

检查点checkpoint
checkpoint是数据库的一个内部事件,检查点激活时会触发dbwr,将数据缓冲区中的脏数据写入到数据文件

1.保证数据库的一致性(保证内存和硬盘上的数据一致)
2.缩短实例恢复时间,实例恢复要把内存中的脏数据写入到硬盘,脏数据多的话,需要更长的恢复时间

实例恢复机制
1.重新构成内存崩溃时内存中未被保存到磁盘的已commit事务
2.回滚已被写入到数据文件的uncommit事务

2.oracle存储架构

database->tablespaces->segments->extends->blocks
 表空间分类
1.permanent 永久表空间
2.undo撤销表空间
3.temporary临时表空间

创建表空间
create tablespace a datafile 'D:\a.dmp' size 10M

数据库open下不能删除的表空间
1.system 2.active undo tablespace 3.default temporary tablespace 4. default tablespace
数据库open下不能offline的表空间
1.system 2.active undo tablespace 3.default temporary tablespace 
查看表空间空闲大小
select * from dba_free_space

segment段
1.表空间逻辑上对应多个段,物理上对应多个数据文件,一个段比较大时,可以跨越多个数据文件
2.创建一个表,oracle为表创建一个或多个段。在一个段中保存该表的所有表数据(表数据不能跨段)
3.段中至少有一个初始区,当区不够用时,为这个段分配新的区

一般一个单纯的表就分配一个段,但表往往没那么单纯。比如索引有索引段,分区表,每个分区有独立的段,oracle 的大对象(blob,clob)会被分出过个段

oracle11gr2新的初始化参数deferred_segment_creation(仅适用未分区的heap table),此参数设置为true后,create table后并不会马上分配segment,当第一个insert后才会分配segment


extend区
区是oracle进行存储空间分配的最小单位,是由一系列逻辑上连续的oracle数据块组成的逻辑存储结构。

block数据块
block是oracle进行存储空间IO操作的最小单位


临时表空间
用于排序,可以建立多个临时表空间.但默认的临时表空间只能有一个.默认表空间不能offline和drop.如果没有指定默认的临时表空间.
oracle会使用system作为临时表空间.,只有temp表空间,是nologing.

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
Oracle 关系型数据库
|
SQL 存储 Oracle
oracle培训第二天
1.空值 空值的数据行将对算数表达式返回空值 select ename,sal,comm,sal+comm from emp select sum(sal),sum(sal+comm...
669 0
|
SQL Oracle 关系型数据库
oracle培训第四天
1.DML操作及名称空间 模式与对象名称空间的关系 模式(schema)是一种逻辑结构,它对应于用户,每建一个用户就有一套模式与之对应。
1034 0
|
15天前
|
SQL Oracle 关系型数据库
【Oracle】玩转Oracle数据库(一):装上去,飞起来!
【Oracle】玩转Oracle数据库(一):装上去,飞起来!
56 7
|
1月前
|
Oracle 关系型数据库 数据库
|
1月前
|
关系型数据库 分布式数据库 数据库
PolarDB PostgreSQL版:Oracle兼容的高性能数据库
PolarDB PostgreSQL版是一款高性能的数据库,具有与Oracle兼容的特性。它采用了分布式架构,可以轻松处理大量的数据,同时还支持多种数据类型和函数,具有高可用性和可扩展性。它还提供了丰富的管理工具和性能优化功能,为企业提供了可靠的数据存储和处理解决方案。PolarDB PostgreSQL版在数据库领域具有很高的竞争力,可以满足各种企业的需求。
|
1月前
|
Oracle 关系型数据库 数据库
Oracle数据库基本概念理解(3)
Oracle数据库基本概念理解(3)
18 2
|
1月前
|
Oracle 关系型数据库 数据库
如何利用 Docker 安装 Oracle 数据库
【2月更文挑战第14天】
94 0
|
15天前
|
SQL Oracle 关系型数据库
【Oracle】玩转Oracle数据库(七):RMAN恢复管理器
【Oracle】玩转Oracle数据库(七):RMAN恢复管理器
41 5
|
1月前
|
Oracle 关系型数据库 数据库
Oracle数据库基本概念理解(2)
Oracle数据库基本概念理解(2)
13 1