一、ORACLE 实例——包括内存结构与后台进程
1、内存结构:
(1)系统全局区:System Global Area(SGA) 是一块巨大的共享内存区域,他被看做是Oracle 数据库的一个大缓冲池,这里的数据可以被ORACLE的各个进程共用。其大小可以通过如下语句查看: select * from v$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执行。然而,如果检查点明显地降低系统性能时,可使CKPT进程运行,将原来由LGWR进程执行的检查点的工作分离出来,
由CKPT进程实现。对于许多应用情况,CKPT进程是不必要的。只有当数据库有许多数据文件,LGWR在检查点时明显地降低性能才使CKPT运行。CKPT进程不将块写入磁盘,该工作是由DBWR完成的。 init.ora文件中 CHECKPOINT_PROCESS 参数控制CKPT进程的使能或使不能。缺省时为FALSE,即为使不能。
(6)归档进程:在每次日志切换时把已满的日志组进行备份或归档
(7)服务进程:用户进程服务。
(8)用户进程:在客户端,负责将用户的SQL语句传递给服务进程,并从服务器段拿回查询数据。
二、ORACLE数据库的组成——物理操作系统文件的集合。
主要包括以下几种。
1、控制文件(参数文件init.ora记录了控制文件的位置)
2、数据文件(数据文件的详细信息记载在控制文件中)
可以通过如下方式查看数据文件
select name from v$datafile;
i. 系统数据文件(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)
后台或用户跟踪文件
三、ORACLE逻辑结构
1、 表空间(tablespace)
表空间是数据库中的基本逻辑结构,一系列数据文件的集合。一个表空间可以包含多个数据文件,但是一个数据文件只能属于一个表空间。
2、 段(Segment)
段是对象在数据库中占用的空间,虽然段和数据库对象是一一对应的,但段是从数据库存储的角度来看的。一个段只能属于一个表空间,当然一个表空间可以有多个段。
表空间和数据文件是物理存储上的一对多的关系,表空间和段是逻辑存储上的一对多的关系,段不直接和数据文件发生关系。一个段可以属于多个数据文件,关于段可以指定扩展到哪个数据文件上面。
段基本可以分为以下四种
数据段(Data Segment)
索引段(Index Segment)
回滚段(Rollback Segment)
临时段(Temporary Segment)
3、区间(Extent)
关于Extent的翻译有多种解释,有的译作扩展,有的译作盘区,我这里通常译为区间。在一个段中可以存在多个区间,区间是为数据一次性预留的一个较大的存储空间,直到那个区间被用满,数据库会继续申请一个新的预留存储空间,即新的区间,一直到段的最大区间数(Max Extent)或没有可用的磁盘空间可以申请。 在ORACLE8i以上版本,理论上一个段可以无穷个区间,但是多个区间对ORACLE却是有性能影响的,ORACLE建议把数据分布在尽量少的区间上,以减少ORACLE的管理与磁头的移动。
4、Oracle数据块(Block)
ORACLE最基本的存储单位,他是OS数据块的整数倍。ORACLE的操作都是以块为基本单位,一个区间可以包含多个块(如果区间大小不是块大小的整数倍,ORACLE实际也扩展到块的整数倍)。
1、内存结构:
(1)系统全局区:System Global Area(SGA) 是一块巨大的共享内存区域,他被看做是Oracle 数据库的一个大缓冲池,这里的数据可以被ORACLE的各个进程共用。其大小可以通过如下语句查看: select * from v$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执行。然而,如果检查点明显地降低系统性能时,可使CKPT进程运行,将原来由LGWR进程执行的检查点的工作分离出来,
由CKPT进程实现。对于许多应用情况,CKPT进程是不必要的。只有当数据库有许多数据文件,LGWR在检查点时明显地降低性能才使CKPT运行。CKPT进程不将块写入磁盘,该工作是由DBWR完成的。 init.ora文件中 CHECKPOINT_PROCESS 参数控制CKPT进程的使能或使不能。缺省时为FALSE,即为使不能。
(6)归档进程:在每次日志切换时把已满的日志组进行备份或归档
(7)服务进程:用户进程服务。
(8)用户进程:在客户端,负责将用户的SQL语句传递给服务进程,并从服务器段拿回查询数据。
二、ORACLE数据库的组成——物理操作系统文件的集合。
主要包括以下几种。
1、控制文件(参数文件init.ora记录了控制文件的位置)
2、数据文件(数据文件的详细信息记载在控制文件中)
可以通过如下方式查看数据文件
select name from v$datafile;
i. 系统数据文件(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)
后台或用户跟踪文件
三、ORACLE逻辑结构
1、 表空间(tablespace)
表空间是数据库中的基本逻辑结构,一系列数据文件的集合。一个表空间可以包含多个数据文件,但是一个数据文件只能属于一个表空间。
2、 段(Segment)
段是对象在数据库中占用的空间,虽然段和数据库对象是一一对应的,但段是从数据库存储的角度来看的。一个段只能属于一个表空间,当然一个表空间可以有多个段。
表空间和数据文件是物理存储上的一对多的关系,表空间和段是逻辑存储上的一对多的关系,段不直接和数据文件发生关系。一个段可以属于多个数据文件,关于段可以指定扩展到哪个数据文件上面。
段基本可以分为以下四种
数据段(Data Segment)
索引段(Index Segment)
回滚段(Rollback Segment)
临时段(Temporary Segment)
3、区间(Extent)
关于Extent的翻译有多种解释,有的译作扩展,有的译作盘区,我这里通常译为区间。在一个段中可以存在多个区间,区间是为数据一次性预留的一个较大的存储空间,直到那个区间被用满,数据库会继续申请一个新的预留存储空间,即新的区间,一直到段的最大区间数(Max Extent)或没有可用的磁盘空间可以申请。 在ORACLE8i以上版本,理论上一个段可以无穷个区间,但是多个区间对ORACLE却是有性能影响的,ORACLE建议把数据分布在尽量少的区间上,以减少ORACLE的管理与磁头的移动。
4、Oracle数据块(Block)
ORACLE最基本的存储单位,他是OS数据块的整数倍。ORACLE的操作都是以块为基本单位,一个区间可以包含多个块(如果区间大小不是块大小的整数倍,ORACLE实际也扩展到块的整数倍)。