我们今天主要和大家分享的是Oracle系统结构,即Oracle 实例,包括内存结构和后台进程的相关内容的描述,如果你对Oracle系统结构即Oracle 实例相关的实际操作有兴趣的话,你就可以对以下的文章点击观看了。
1、内存结构:
(1)Oracle系统结构全局区:System Global Area(SGA) 是一块巨大的共享内存区域,他被看做是Oracle 数据库的一个大缓冲池,这里的数据可以被Oracle的各个进程共用。其大小可以通过如下语句查看:
select*fromv$sga;
(2)共享池(Shared pool)
包括SQL语句缓冲(Library Cache)和数据字典缓冲区(Data Dictionary Cache)
(3)块缓冲区高速缓存(Database Buffer Cache)
(4)重做日志缓冲区(Redo log buffer)
(5)Java程序缓冲区(Java Pool)
Java 的程序区,Oracle 8I 以后,Oracle 在内核中加入了对Java的支持。该程序缓冲区就是为Java 程序保留的。如果不用Java程序没有必要改变该缓冲区的默认大小。
(6)大池(Large Pool)
大池的得名不是因为大,而是因为它用来分配大块的内存,处理比共享池更大的内存,在8.0开始引入。
2、后台进程(Background process)
(1)DBWR(数据文件写入进程):负责将更改的数据从数据库缓冲区高速缓存写入数据文件
(2)LGWR(日志文件写入进程):将重做日志缓冲区中的更改写入在线重做日志文件
(3)SMON(系统监护进程):检查数据库的一致性如有必要还会在数据库打开时启动数据库的恢复
(4)PMON(用户进程监护进程):负责在一个Oracle 进程失败时清理资源
(5)CKPT(检查点进程,同步数据文件, 日志文件,控制文件):
负责在每当缓冲区高速缓存中的更改***地记录在数据库中时,更新控制文件和数据文件中的数据库状态信息。该进程在检查点出现时,对全部数据文件的标题进行修改,指示该检查点。在通常的情况下,该任务由LGWR执行。然而,如果检查点明显地降低Oracle系统结构性能时,可使CKPT进程运行,将原来由LGWR进程执行的检查点的工作分离出来,
由CKPT进程实现。对于许多应用情况,CKPT进程是不必要的。只有当数据库有许多数据文件,LGWR在检查点时明显地降低性能才使CKPT运行。CKPT进程不将块写入磁盘,该工作是由DBWR完成的。 init.ora文件中 CHECKPOINT_PROCESS 参数控制CKPT进程的使能或使不能。缺省时为FALSE,即为使不能。
(6)归档进程:在每次日志切换时把已满的日志组进行备份或归档
(7)服务进程:用户进程服务。
(8)用户进程:在客户端,负责将用户的SQL语句传递给服务进程,并从服务器段拿回查询数据。
二、Oracle数据库的组成——物理操作Oracle系统结构文件的集合。
主要包括以下几种。
1、控制文件(参数文件init.ora记录了控制文件的位置)
2、数据文件(数据文件的详细信息记载在控制文件中)
可以通过如下方式查看数据文件
selectnamefromv$datafile;
i.Oracle 系统结构数据文件(system_01.dbf)
ii. 回滚段文件(rbs_01.dbf)
iii. 临时数据文件(temp_01.dbf)
iv. 用户数据文件(/applsys_data_01.dbf ,applsys_indx_01.dbf)
3、重做日志文件(联机重做日志)
i. 增加日志组
ii. 增大日志文件成员大小
通过v$log可以查看日志组,v$logfile可以查看具体的成员文件。
(1)查看数据文件: SQL> select * from v$datafile;
(2)查看控制文件: SQL> select * from v$controlfile;
(3)查看日志文件: SQL> select * from v$logfile;
4、归档日志文件
5、初始化参数文件
6、其他文件
i . 密码文件
用于Oracle 的具有sysdba权限用户的认证.
ii. 日志文件
报警日志文件(alert.log或alrt.ora)
后台或用户跟踪文件