oracle培训第五天

xiaoxiao2021-02-28  78

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.
转载请注明原文地址: https://www.6miu.com/read-55504.html

最新回复(0)