小结:
1.在数据库(数据文件)中所存的数据是否一致?
在数据库关闭的情况下应该一致;在数据库非正常关闭的情况下应该不一致;在数据库开启的情况下可能
存在不一致的数据。
2.数据库写进程是提交之前把在数据库高速缓冲区中的数据写入到数据文件中还是在提交之后写呢?
可能在之前写也可能在之后写。
应该掌握的内容:
1.在数据库系统中什么是稀有资源?
内存
2.oracle服务器的组成?
oracle数据库,oracle实例
3.oracle体系结构的轮廓?
包括oracle服务器,oracle其他的关键文件(password file,parameter file,archived redo log
file),用户进程,服务器进程等。
4.oracle实例?
oracle实例是一种访问数据库的机制,它由内存结构(share pool,database buffer cache,redo log
buffer和其他一些结构)和一些后台进程(SMON,PMON,CKPT,DBWR,LGWR等)组成,实例一旦启动,则分配
SGA和所需的后台进程,每个实例只能操作其对应一个数据库。
5.服务器的三种安装方式?
基于主机方式:用户可直接在安装了oracle的计算机上登录oracle数据库。
客户端—服务器(两层模型):数据库和客户终端分别安装在不同的计算机上,用户可以通过网络从个人
计算机上访问数据库
客户端—应用服务器—服务器(三层模型):用户首先从自己的个人计算机登录应用服务器,在通过应用
服务器访问真正的数据库。
6.oracle引入实例的目的?
作为一种连接数据库的机制。
7.oracle数据库(物理/外存结构)?
oracle数据库时数据的一个集合,oracle把这些数据作为一个完整的单位来处理。由数据文件,重做日志
文件,控制文件组成。
8.oracle其他的几个关键文件?
初始化参数文件,密码文件,归档重做日志文件。
9.怎样建立与实例的连接?
基于主机方式:通过操作系统内部进程通信(inter process communication,IPC)实现
客户端-服务器:利用网络协议
客户端-应用服务器-服务器:用户的个人计算机通过网络与应用服务器通信,应用服务器又通过网络与运
行数据库的计算机相连。
10.服务器进程和程序全局区?
当用户连接oracle服务器时,oracle就在该服务器所在计算机上创建一个服务器进程,负责对数据库操作
。
当Oracle创建一个服务器进程的同时要为该服务器进程分配一个内存区,该内存区称为程序全局区,是一
个私有的内存区,不能共享,且只属于一个进程。
PGA包括以下结构:排序区,游标状态区,会话信息区,堆栈区。
11.oracle执行sql查询语句的主要步骤?
parse,execute,fetch。
其中在parse中,服务器进程先检查share pool中是否已经存在相同的sql,如果不存在,则检查sql是否
正确,通过查看数据字典来检查sql表和列的定义,对所操作的对象加编译锁,检查引用对象的用户权限
,生成执行该sql语句所需的优化执行计划,将sql语句和执行计划装入共享的sql区中。
12.oracle实例的系统全局区?
oracle实例的内存结构
13.共享池的组成?
包括库高速缓冲区(SQL/PLSQL),数据字典高速缓冲区
14.库高速缓冲区的工作原理?
服务器进程将SQL语句的正文和编译后的代码以及执行计划都放在共享池的库高速缓存中。进行编译时,
服务器进程首先会在共享池中搜索是否有相同的SQL或PL/SQL语句(正文),如果有就不进行任何后续的
编译处理,而是直接使用已存在的编译后的代码或者执行计划。
15.数据库字典高速缓冲区的工作原理?
当Oracle在执行SQL语句时,服务器进程将把数据文件,表、索引、列、用户和其他的数据对象的定义和
权限信息放入数据字典高速缓存。
16.怎样设置共享池?
SQL>alter system set share_pool_size=32M
17.数据库高速缓冲区的工作原理
服务器进程首先在数据库高速缓冲区中搜寻所需的数据,如果找到就直接使用而不进磁盘操作;如果没找
到就将进行磁盘操作把数据文件中的数据读到数据库高速缓冲区中。可以使用参数文件中的
DB_BLOCK_SIZE 和DB_BLOCK_BUFFERS两个参数来设置高速缓冲区的大小。
SQL>ALTER SYSTEM SET DB_BLOCK_SIZE = 48 M
18.重做日志缓冲区的工作原理?
Oracle 在使用任何的DML和DDL操作改变数据之前都将恢复所需的信息,在写数据库高速缓冲区之前,先
写入重做日志缓冲区。与查询语句不同的是,其只有编译和执行两个步骤。
19.oracle执行update语句的步骤?
(1)如果数据和回滚数据不在数据库高速缓存其中,则Oracle 服务器进程将把他们从数据文件中读到数
据库高速缓冲区中。
(2)Oracle服务器进程在要修改的数据行上加锁。
(3)Oracle服务器进程将数据的变化信息和回滚所需的信息都记录在重做日志缓冲区中。
(4)Oracle服务器进程将回滚所需的原始值和对数据所做的修改都写入数据库高速缓冲区。之后在数据
库高速缓冲区中所有的这些数据块都将被标为脏缓冲区,因为此时内外存的数据是不同的(不一致的)。
20.怎样设置内存缓冲区的大小?
Oracle 是用所谓的区组来管理SGA的内存的。区组就是连续的虚拟内存区,是oracle分配和回收内存区的
基本单位。至少包括3个区组:SGA固定区,数据库高速缓冲区,共享池。可以通过ALTER SYSTEM SET来设
定,但大小不能超过SGA_MAX_SIZE所设定的值。
21.怎样获取内训缓冲区信息?
使用下面的命令:
SQL> show parameter
SQL> show sga
SQL> col name for a20
SQL> col value for a25
SQL> select name, type, value from v$parameter where name = 'sga_max_size';
22.重做日志写进程的工作原理?
负责将重做日志缓冲区的记录顺序的写到重做日志文件中。
23.快速提交技术?
既能保证Oracle系统的效率又能保证在系统崩溃的情况下所有提交的数据可以得到恢复。
24.数据库写进程的工作原理?
数据库写进程负责将数据库高速缓冲区中的脏缓冲区中的数据写到数据文件上。为了提高效率,数据库写
进程并不是数据库高速缓冲区中的数据一有变化就写数据文件,而是积累了足够多的数据一次写一批内存
数据块到数据文件上。下列事件发生时写:
当脏缓冲区的数量超过了所设定的限额。
当多设定的时间间隔已到。
当有进程需要数据库高速缓冲区却找不到空闲的缓冲区时。
当校验点发生时。
当某个表被删除或者被截断时。
当某个表空间被设置为只读状态时。
当使用类似于ALTER TABLESPACE users BEGIN BACKUP 的命令对某个表空间进行联机备份时。
当某个临时表空间被设置为只脱机状态或正常状态时等。
25.系统监督进程的工作原理?
由于种种原因Oracle系统崩溃了,当数据库重新启动时,系统监督进程将自动地执行Oracle实例的恢复工
作。步骤如下:
(1)执行前滚,即将已经写到重做日志文件中但还没写到数据文件中的提交数据写到数据文件中。
(2)在前滚完成后立即打开数据库,此时用户就可以登录并使用数据库了。
(3)回滚没有提交的事务(数据)。另外,服务器进程也可以进行回滚但是只是回滚他所用到的加锁的
数据行。
除此之外,SMON进程还要执行如下的磁盘空间的维护工作:
回收或组合数据文件中相连的空闲区。
释放临时段,将他们还给数据文件以作为空闲区使用。
26.进程监督进程的工作原理?
当某个进程崩溃时,进程监督进程将负责它的清理工作。PMON进程将负责如下的清理工作:
回滚用户当前的事务
释放用户所加的所有表一级和行一级的锁
释放用户所有的其他资源等。
27.引入校验点的工作原理?
该事件是在当DBWR进程把在SGA中所有已经改变的数据库高速缓冲区中的数据写到数据文件上时产生。是
为了提高系统的效率。
28.引入归档日志文件和归档日志进程的原因?
在事件发生时,oracle要将校验点号码写入所有有关的数据文件的文件头中,还要将校验点号码、重做日
志序列号、归档日志名称和SCN号都写到控制文件中。为了方便起见,一般的生产和商业数据库的校验点
间隔是在半小时以上。
29.归档日志进程的工作原理?
ARCn进程将把切换的重做日志文件复制到归档日志文件中。