一、Oracle数据库系统结构
二、物理存储结构
含义:物理操作系统文件的集合,主要包括构成数据库的各种物理文件,包括数据文件、控制文件、日志文件、参数文件(parameter file)、口令文件(password file)、跟踪文件(trace file)、警告日志文件(alert file)等,其中数据文件的扩展名为.DBF,控制文件的扩展名为.CTL,日志文件的扩展名为.LOG。
1.数据文件
数据文件包含内容:
表数据
索引数据
数据字典定义回滚事务所需的信息
存储过程
函数和数据包的代码
用来排序的临时数据等
特点
- 一个数据文件只能与一个数据库相关联。输入到表中的数据可能包含在一个数据文件中,也可能包含在多个数据文件中。
- 可以对数据文件设置一些特性,在数据库空间用完的情况下可以自动扩展。
- 一个或多个数据文件构成了一个数据库存储的逻辑单元——表空间(table space)。
- 数据会汇集在内存里,由数据库的书写进程(DBWR)决定。
数据库字典DBA_DATA_FILES描述了数据文件的名称、标识、大小以及对应的表空间信息等,而数据字典V$DATAFILE则描述数据文件的同步信息。
例:查询数据文件的名称和存放路径、数据文件的标识和大小、数据文件对应的表空间名、数据文件的大小和数据文件占用的数据块数。
SELECT file_name, file_id, tablespace_name, bytes, blocks from DBA_DATA_FILES;
例:查询存放数据文件的编号,存放数据文件所属的表空间和数据文件的名称及存放路径。
SELECT file#, status, name
from V$DATAFILE;
例:查看表DBA_DATA_FILES的表结构。
DESC DBA_DATA_FILES;
2.控制文件
数据库控制文件(Control file)是一个很小的二进制文件,它维护着数据库的全局物理结构,用以支持数据库成功地启动和运行。
每一个控制文件只能与一个Oracle数据库相关联。
控制文件包含了数据库实例在启动和正常操作时,访问数据库所需的关于数据库的信息。
由于控制文件的重要性,因此一个数据库至少应该包含一个以上的控制文件,Oracle11g默认包含了3个控制文件,每个控制文件包含相同的信息,这样可确保在数据库运行时,如果某个控制文件损坏,Oracle会自动使用另一个控制文件。
控制文件包含内容:
数据库名称
数据库创建的时间戳
相关的数据文件、重做日志文件的名称和位置
表空间信息
数据文件脱机范围
日志历史
归档日志信息
备份组和备份块信息
备份数据文件和重做日志信息
数据文件拷贝信息
当前日志序列数
检查点(checkpoint)信息
数据库字典V$CONTROLFILE可以查询控制文件的有关信息。
控制文件举例说明:
例:查看控制文件名和存放路径
SELECT NAME
FROM V$CONTROLFILE;
3.日志文件
日志文件也叫做重做日志文件(Redo Log Files),用于记录对数据库的修改信息,对数据库所做的修改信息都记录在日志中。
这些修改包括用户对数据库中数据的修改和数据库管理员对数据库结构的修改。如果只对数据库中的信息进行查询操作,就不会产生日志信息。
由于日志文件记录了对数据库的修改信息,当用户对数据的操作出现故障,导致修改的数据没有保存到数据文件中,这时就可以利用日志文件找到数据的修改,使以前所做的工作不会因为出现故障而丢失数据。
在日志文件中记录两组数据:一组是用户修改后的数据,另一组是用户修改前的数据。当用户执行误操作后可以进行恢复。
为防止日志文件被物理破坏,在同一个日志文件组中,允许对日志成员进行镜像,镜像的日志成员文件被存储在不同的物理磁盘中。
每个数据库包含多个日志文件组,每组日志文件包含一个或多个日志文件;同一组的日志文件具有相同的信息,保持镜像关系。
数据字典V$LOG记录了当前日志的使用信息。
通过V$log可以查看日志组,V$logfile可以查看具体成员文件。
例:查询日志文件组的编号、日志成员数和状态
SELECT group#, members, status from V$LOG;
例:实现强制日志切换
ALTER system switch LOGFILE;
重做日志文件的工作过程
每个数据库至少需要两个重做日志文件,采用循环写的方式进行工作。当一个重做日志文件写满后,进程LGWR就会移到下一个日志组,称为日志切换,同时信息会写到控制文件中。
如果所有的日志文件组都被填满,则系统将日志信息写入到第一个日志文件组中,这时第一个日志文件组中的日志信息可能被覆盖掉。第一个日志文件组中的日志信息是否被覆盖,取决于数据库的工作模式。
Oracle数据库能够把已经写满了的重做日志文件保存到指定的一个或多个位置,被保存的重做日志文件的集合称为归档重做日志文件,这个过程称为归档。
数据库的运行模式有两种:
一种是归档模式(ARIVELOG),另一种是非归档模式(NOARCHIVELOG)。
在非归档模式下,如果发生日志切换,则日志信息直接被覆盖;
在归档模式下,如果发生日志切换,且需要覆盖已经存在的日志信息时,则系统将启用ARCH进程将要被覆盖的日志信息保存到磁盘或磁带上形成归档日志。
默认情况下,Oracle不采用归档模式
SELECT LOG_MODE FROM V$DATABASE
查询当前数据库是否工作在归档模式
Select * From v$archived_log
可查看归档日志。
归档模式与非归档模式比较
一、备份和恢复方式不一样
1.在归档模式下,数据库中历史重做日志文件全部被保存,因此在数据库出现故障时,即使是介质故障,利用数据库备份、归档重做日志文件和联机重做日志文件也可以完全恢复数据库。
2.在非归档模式下,由于没有保存过去的重做日志文件,数据库只能从实例崩溃中恢复,而无法进行介质恢复。在非归档模式下不能执行联机表空间备份操作,不能使用联机归档模式下建立的表空间备份进行恢复,而只能使用非归档模式下建立的完全备份来对数据库进行恢复。
二、日志切换条件不一样
1.在非归档模式下,日志切换的前提条件是已写满的重做日志文件在被覆盖之前,其所有重做记录所对应的事务的修改操作结果全部写入到数据文件中。
2.在归档模式下,日志切换的前提条件是已写满的重做日志文件在被覆盖之前,不仅所有重做记录所对应的事务的修改操作结果全部写入到数据文件中,还需要等待归档进程完成对它的归档操作。
设置归档/非归档模式
1.关闭数据库
SHUTDOWN IMMEDIATE
2.启动数据库到MOUNT状态
STARTUP MOUNT
3.使用ALTER DATABASE ARCHIVELOG语句将数据库设置为归档模式。
ALTER DATABASE ARCHIVELOG;
或使用ALTER DATABASE NOARCHIVELOG语句将数据库设置为非归档模式。
ALTER DATABASE NOARCHIVELOG;
4.打开数据库
ALTER DATABASE OPEN;
4.参数文件
参数文件,也称为初始化文件,记录了Oracle数据库的基本参数信息,分为文本参数文件pfile和服务器参数文件spfile。
文本参数文件可以使用文本编辑器进行编辑。
服务器参数文件是二进制文件,不能直接用文本编辑器进行编辑。
参数文件主要包括数据库名、控制文件所在路径、进程等。
5.口令文件
口令文件是二进制文件,用于验证特权用户,认证哪些用户有权限启动和关闭Oracle例程。
特权用户是指具有sysoper或sysdba权限的特殊数据库用户。这些用户可以启动例程,关闭例程,创建数据库,执行备份恢复等操作。
创建oracle数据库默认的特权用户是sys
6.跟踪文件
跟踪文件分为后台进程跟踪文件和服务进程跟踪文件.
后台进程跟踪文件主要记录后台进程的警告或错误信息,每个后台进程都有相应的跟踪文件.
服务进程跟踪文件主要记录服务进程的相关信息,用于跟踪sql语句,诊断sql语句的性能,并实施相应的性能调整。
每一个服务器和后台进程都可以写入一个相关的跟踪文件(trace file),当一个进程发现一个内部错误时,它把关于错误的信息转储到它的跟踪文件里。
7.警告日志文件
警告日志文件(alert.log或alrt.ora)主要记录数据库启动、关闭和一些重要的出错信息。
通过select value from v$PARAMETER where name ="background_dump_dest" 可找到警告日志文件的路径。
三、逻辑存储结构
Oracle的逻辑存储单元从小到大依次为:数据块(DATA BLOCKS)、盘区(EXTENT)、段(SEGMENTS)和表空间(TABLESPACE), Oracle数据库由多个表空间组成,而表空间又由多个段组成,段由多个盘区组成,盘区又由多个数据块组成。
1.数据块
Oracle数据块(Block)是ORACLE最基本的存储单位,是最小的逻辑存储单元。
数据块的大小由初始化参数DB_BLOCK_SIZE确定,在建立数据库的时候指定,在创建数据库之后不能再修改。
Oracle数据块也必须是OS数据块的整数倍。oracle要取32K的记录,对于块值为4K的来说要取32/4=8次,对于块值为8k来说只要取32/8=4次,因此选择合适的块大小对系统性能有着重要的影响。
数据块格式:
块由块头(header/Common and Variable)、表目录(Table Directory)、行目录(Row Directory)、空余空间(Free Space)和行数据(Row Data)五部分组成 。
行链接(Row Chaining)
如果我们往数据库中插入(INSERT)一行数据,这行数据很大,以至于一个数据块存不下一整行,Oracle就会把一行数据分作几段存在几个数据块中,这个过程叫行链接(Row Chaining)。
行迁移(Row Migrating)
数据块中存在一条记录,用户执行UPDATE更新这条记录,这个UPDATE操作使这条记录变长,这时候,Oracle在这个数据块中进行查找,但是找不到能够容纳下这条记录的空间,无奈之下,Oracle只能把整行数据移到一个新的数据块。原来的数据块中保留一个“指针”,这个“指针”指向新的数据块。被移动的这条记录的ROWID保持不变。
块中自由空间的手动管理
用户可以通过PCTFREE, PCTUSED来调整块中空间的使用,这种管理方式叫手动管理。
PCTFREE参数
用于指定块中必须保留的最小空闲空间百分例。之所以要预留这样的空间,是因为UPDATE时,需要这些空间。 保留的空间就是为确保更改后的数据行可以仍存放于原有数据块中,避免行迁移的情况发生。
PCTFREE的默认参数是PCTFREE=10,也就是说,一旦一个INSERT操作使得数据块的90%被使用,这个数据块就从空闲列表(free list)中移出。
PCTUSED
PCTUSED也是用于设置一个百分比,当块中已使用的空间的比例小于这个百分比的时候,这个块才被标识为有效状态。只有有效的块才被允许插入数据。
PCTUSED存储参数告诉ORACLE什么时候将以前满的数据块加到空闲列表中。当记录从数据表中删除时,数据库的数据块就有空间接受新的记录,但只有当填充的空间降到PCTUSED值以下时,该数据块才被连接到空闲列表中,才可以往其中插入数据。PCTUSED的默认值是PCTUSED=40。
2.盘区
盘区(Extent)是物理上连续存放的块构成的存储结构,它是oracle磁盘空间分配的最小单元,由一个或多个块组成,是为数据一次性预留的一个较大的存储空间。
3.数据段
数据段是一个独立的逻辑存储结构,是用来存储表空间中某一种特定的具有独立存储结构的对象的所有数据的,即对象在数据库中占用的空间,它由一个或多个区组成。虽然段和数据库对象是一一对应的,但段是从数据库存储的角度来看的。
一个段只能属于一个表空间,当然一个表空间可以有多个段。表空间和数据文件是物理存储上的一对多的关系,表空间和段是逻辑存储上的一对多的关系。段不直接和数据文件发生关系,但一个段可以属于多个数据文件,而且段可以指定扩展到哪个数据文件上面。
按照段中所存储的数据的特征和用途的不同可以分为:
数据段(Data Segment)
索引段(Index Segment)
回滚段(Rollback Segment)
临时段(Temporary Segment)
4.表空间
表空间是在Oracle中用户可以使用的最大的逻辑存储结构,是一系列数据文件的集合。
用户在数据库中建立的所有内容都被存储在表空间中,Oracle使用表空间将相关的逻辑结构组合在一起,表空间在物理上与数据文件相对应,一个表空间可以包含多个数据文件,但是一个数据文件只能属于一个表空间,这是逻辑与物理的统一。
因此存储空间在物理上表现为数据文件,而在逻辑上表现为表空间。
在每个数据库中,都有一个名为SYSTEM的表空间,即系统表空间。该表空间是在创建数据库时自动创建的,用于存储系统的数据字典以及系统的管理信息。
除了系统表空间以外,Oracle数据库系统还创建了其他表空间,如SYSAUX表空间、TEMP表空间、Users表空间和UNDO表空间。
SYSAUX表空间是Oracle 11g新增的表空间,作为SYSTEM表空间的辅助表空间。
TEMP表空间主要用于存储在执行SQL语句时所产生的临时数据。
UNDO表空间则专门用来在自动撤消管理方式下存储撤消信息。
除了回退段外,在撤消表空间中不能建立任何其他类型的段,也就是说,用户不能在UNDO表空间中创建数据库对象。
例:显示表空间信息
SELECT tablespace_name, contents, extent_management, block_size, status FROM dba_tablespaces;
例:显示表空间所包含的数据文件
SELECT file_name, bytes FROM dba_data_files
WHERE tablespace_name='USERS';
例:查看数据字典
SELECT * FROM dict;
四、内存结构
内存是影响数据库性能的第一因素。内存的大小与速度直接影响数据库的运行速度。
按照系统对内存的使用方法不同,Oracle数据库的内存可分为:
系统全局区(SGA)
程序全局区(PGA)
排序区(SORT AREA)
1.系统全局区
系统全局区(SGA)是一组为系统分配的共享的内存结构,是用于加载数据、对象并保存其运行状态和数据库控制信息的一块内存区域。
每个数据库实例都只有一个用于自己的SGA区,当多个用户同时连接到同一个数据库实例时,所有的用户进程和服务进程都可以共享使用SGA区的数据,所以将其又称为共享全局区。
数据库实例启动时SGA内存被自动分配,实例关闭时SGA内存释放回收。
数据库的各种操作主要都在SGA区中进行。
SGA按其作用不同,可以分为数据缓冲区、日志缓冲区和共享池、大型池和Java池。
SGA的管理
SGA组件大小调整
DB_CACHE_SIZE
LOG_BUFFER
SHARED_POOL_SIZE
LARGE_POOL_SIZE
Java_POOL_SIZE
STRAMS_POOL_SIZE
SGA_MAX_SIZE
注意
除了SGA_MAX_SIZE不能修改外,其他几个参数可以使用ALTER SYSTEM语句进行动态调整。
SGA 包含的内存结构有:
数据高速缓冲区(Database Buffer Cache)
共享池(Shared Pool)
重做日志缓冲区(Redo Log Cache)
大型池(Large Pool)
Java池(Java Pool)
流池(Streams Pool)
其他结构(如固定SGA、锁管理等)
1.1数据高速缓冲区
功能
存储从数据文件中检索出来的数据拷贝。应用程序要访问的数据必须从磁盘的数据文件读到数据缓冲区中处理。
在数据缓冲区中被修改后的数据由数据写入进程写到磁盘的数据文件中永久保存。
提高获取和更新数据的性能。
工作过程
缓冲块的类型
脏缓存块(Dirty Buffers)
脏缓存块中保存的是已经被修改过的数据。
它们最终将由DBWR进程写入数据文件,以永久性地保存修改结果。
空闲缓存块(Free Buffers)
空闲缓存块中不包含任何数据。
当Oracle从数据文件中读取数据时,将会寻找空闲缓存块,以便将数据写入其中
命中缓存块(Pinned Buffers)
正被使用,或者被显式地声明为保留的缓存块。
这些缓存块始终保留在数据高速缓冲区中,不会被换出内存。
缓存块的管理
脏缓存块列表:包含那些已经被修改但还没有写入数据文件的脏缓存块。
LRU列表(Least Recently Used):包含所有的空闲缓存块、命中缓存块和那些还没有来得及移入到脏缓存块列表中的脏缓存块。在该列表中,最近被访问的缓存块被移动到列表的头部,而其他缓存块向列表尾部移动,最近最少被访问的缓存块最先被移出LRU列表,从而保证最频繁使用的缓存块始终保存在内存中。
数据高速缓冲区大小
数据高速缓冲区越大,用户需要的数据在内存中的可能性就越大,即缓存命中率越高,从而减少了Oracle访问硬盘数据的次数,提高了数据库系统执行的效率。然而,如果数据高速缓冲区的值太大,Oracle就不得不在内存中寻找更多的块来定位所需要的数据,反而降低了系统性能。显然需要确定一个合理的数据高速缓冲区大小。
1.2重做日志缓冲区
功能
重做日志缓冲区用于缓存用户对数据库进行修改操作时生成的重做记录。
由日志写入进程(LGWR)把重做日志缓冲区的内容写入重做日志文件中做永久性保存。
在归档模式下,当重做日志切换时,由归档进程(ARCH)将重做日志文件的内容写入归档文件中 。
重做日志缓冲区的大小
LOG_BUFFER
较大的重做日志缓冲区,可以减少对重做日志文件写的次数,适合长时间运行的、产生大量重做记录的事务。
1.3共享池
功能
共享池用于缓存最近执行过的SQL语句、PL/SQL程序和数据字典信息,是对SQL语句、PL/SQL程序进行语法分析、编译、执行的区域。
组成
库缓存
库缓存用于缓存已经解释并执行过的SQL语句和PL/SQL程序代码,以提高SQL或PL/SQL程序的执行效率。
包括SQL工作区和PL/SQL工作区
数据字典缓存区
数据字典缓存区保存最常用的数据字典信息
用户全局区
用户的会话信息
共享池大小
SHARED_POOL_SIZE
合适的共享池大小,可使编译过的程序代码长驻内存,大大降低重复执行相同的SQL语句、PL/SQL程序的系统开销,从而提高数据库的性能。
1.4大型池
功能
大型池是一个可选的内存配置项,主要为Oracle多线程服务器、服务器I/O进程、数据库备份与恢复操作、执行具有大量排序操作的SQL语句、执行并行化的数据库操作等需要大量缓存的操作提供内存空间。
大型池大小
LARGE_POOL_SIZE
1.5Java池
功能
Java提供对Java程序设计的支持,用于存储Java代码、Java语句的语法分析表、Java语句的执行方案和进行Java程序开发。
Java池大小
JAVA_POOL_SIZE
通常不小于20M,以便安装Java虚拟机
1.6流池
功能
流池是一个可选的内存配置项,用于对流的支持。
流池大小
STREAMS_POOL_SIZE
2.程序全局区
程序全局区(PGA)是保存特有服务器进程的数据和控制信息的内存区域。
当一个用户连接数据库时,它将在实例中创建一个会话,这时Oracle将自动分配PGA区。
与SGA区不同的是,PGA是非共享的,只有服务器进程本身才能够访问自己的PGA区,每个服务进程都有它自己的PGA区。
3.排序区
排序区用于为排序显示的SQL语句提供内存空间,用于存放排序操作所产生的临时数据。
五、进程结构
数据库启动时,首先启动实例,系统自动分配系统全局区(SGA),并启动Oracle的多个后台进程。
一个数据库实例包括:
一部分是系统全局区;
另一部分是后台进程。
常用的后台进程主要包括:
数据写入进程DBWR
日志写入进程LGWR
检查点进程CKPT
系统监控进程PMON
归档进程ARCH
恢复进程RECO
封锁进程LCKn
调度进程Dnnn
服务器进程Snnn
作业进程SNP等。
1.DBWR进程(数据写入进程)
DBWR进程执行将缓冲区写入数据文件,是负责缓冲存储区管理的一个ORACLE后台进程。
功能:
数据库写入进程负责把数据高速缓冲区中已经被修改过的数据(“脏”缓存块)成批写入数据文件中永久保存,同时使数据高速缓冲区有更多的空闲缓存块,保证服务器进程将所需要的数据从数据文件读取到数据高速缓冲区中,提高缓存命中率。
启动DBWR进程
执行INSERT、UPDATE等操作时 ,没有足够的空闲块
当检查点发生时,将启动DBWR进程
当数据缓存的LRU列表的长度达到初始化 DB_BLOCK_WRITE_BATCH指定值的一半时
若发生超时(大约3秒未被启动)
2.LGWR进程(日志写入进程)
LGWR进程将日志缓冲区写入磁盘上的一个日志文件,它是负责管理日志缓冲区的一个ORACLE后台进程。
功能
日志写入进程负责把重做日志缓冲区的数据写入重做日志文件中永久保存。
DBWR在工作之前,需要了解LGWR是否已经把相关的日志缓冲区中记载的数据写入硬盘中,如果相关的日志缓冲区中的记录还没有被写入,DBWR会通知LGWR完成相应的工作,然后DBWR才开始写入。
启动LGWR进程
用户通过COMMIT语句提交当前事务
重做日志缓存被写满三分之一
DBWR进程开始将脏缓存块写入数据文件
每隔3秒,即发生一次超时,将启动LGWR
3.CKPT进程(检查点进程)
检查点是一个事件,当该事件发生时,数据高速缓存中的脏缓存块被写入数据文件,同时oracle将对控制文件和数据文件的文件头的同步序号进行修改,记录下当前数据库的结构和状态,以保证数据的同步。
CKPT进程的作用
更新控制文件与数据文件的头部,使其同步
触发DBWR进程,将脏缓存块写入数据文件
检查点的级别
数据库检查点:每一次日志切换时,执行一个数据库检查点,DBWR进程将数据高速缓冲区中的脏缓存块写入数据文件中;
表空间检查点:当一个表空间设置为脱机状态时,执行一个表空间检查点,DBWR进程把数据高速缓存中与该表空间相关的脏缓存块写入数据文件中。
时间检查点:可以设置以时间为基础的检查点,每隔一段时间执行一次检查点。
检查点事件的触发
每一个日志切换时
当实例以如下方式关闭时
NORMAL,TRANSACTION,IMMEDIATE
当使用 ALTER TABLESPACE [OFFLINE NORMAL|READ ONLY|BEGIN BACKUP] ,作用于某个数据文件上的检查点发生时.
设置以时间为基础的检查点事件
当数据库管理员需要手工操作时
ALTER SYSTEM CHECKPOINT
与检查点的相关初始化参数
LOG_CHECKPOINT_INTERVAL
用来指定重做日志文件每写多少操作系统块发生一次检查点事件
例如重做日志文件1M,系统操作块为1K:设置此参数为500,则重做日志文件写入500K时,检查点事件发生。
LOG_CHECKPOINT_TIMEOUT
用来指定每隔多长时间发生一次检查点
如1800,表示每隔1800秒,如果为0,表示此参数无效。
LOG_CHECKPOINT_TO_ALERT
用于设置是否将检查点信息记录到警告日志中。
4.SMON进程(系统监视进程)
SMON进程在数据库实例启动时,负责对数据库进行实例恢复操作。如果数据库非正常关闭,则当下次启动数据库实例时,SMON进程将根据重做日志文件对数据库进行恢复。
功能
在实例启动时负责对数据库进行恢复;
回收不再使用的临时空间。
将各个表空间的空闲碎片合并。
5.PMON进程(进程监控进程)
PMON进程在用户进程出现故障时执行进程恢复,负责清理内存储区和释放该进程所使用的资源。
功能
负责恢复失败的用户进程或服务器进程,并且释放进程所占用的资源;
清除非正常中断的用户进程留下的孤儿会话,回退未提交的事务,释放会话所占用的锁、SGA、PGA等资源;
监控调度进程和服务器进程的状态,如果它们失败,则尝试重新启动它们,并释放它们所占用的各种资源。
6.RECO进程(恢复进程)
RECO进程用于分布式数据库系统,它自动地解决在分布式数据库中的事务故障,自动恢复那些失败的分布式事务。
功能
RECO进程负责在分布式数据库环境中自动解决分布式事务的故障。
一个节点的RECO自动解决所有的悬而未决的事务。
当一个数据库服务器的RECO后台进程试图建立同一远程服务器的通信,如果该远程服务器不可用或者网络连接不能建立时,RECO自动地在一个时间间隔之后再次连接。
当且仅当数据库配置为分布式事务处理,且初始化参数DISTRIBUTED_TRANSACTIONS的值大于0时,RECO进程才会自动启动。
7.ARCH进程(归档进程)
Oracle数据库有两种运行模式:归档模式和非归档模式。如果数据库运行在非归档模式下,则日志文件在切换时,将被直接覆盖,不会产生归档日志;当数据库运行在归档模式下时,如果发生日志切换,则启动归档进程ARCH将已写满的日志文件复制到指定的存储设备中,以避免已经写满的日志文件被覆盖。
如果要启动ARCH进程,除需要数据库运行在归档模式下外,还需要设置初始化参数ARCHIVE_LOG_START为TRUE,ARCH进程启动后,数据库将具有自动归档功能。如果参数ARCHIVE_LOG_START为FALSE,则即使数据库运行在归档模式下,ARCH进程也不会启动。
功能
归档进程负责在日志切换后将已经写满的重做日志文件复制到归档目标中,防止写满的重做日志文件被覆盖
最多可启动10个归档进程( ARC0 - ARC9)
8.LCKn进程(封锁进程)
LCKn进程是在具有并行服务器选件环境下使用,可多至10个进程(LCK0,LCK1……,LCK9),用于实例间的封锁。
功能
LCKn进程用于Oracle并行服务器环境中。在数据库中最多可以启动10个LCKn进程,主要用于实例间的封锁。
9.Dnnn进程(调度进程)
当用户连接数据库时,将在客户端创建一个用户进程,用户进程连接到实例后,需要一个服务进程为它提供服务,数据库为用户进程提供服务的方式称为数据库操作模式。Oracle数据库具有两种操作模式:专用服务器操作模式和共享服务器操作模式。
功能
Dnnn进程是多线程服务器(Multithreaded Server,MTS)的组成部分,以后台进程的形式运行。
调度进程接受用户进程请求,将它们放入请求队列中,然后为请求队列中的用户进程分配一个服务器进程。最后,从响应队列返回数据给用户进程 。
六、数据字典
数据字典是Oracle数据库的核心组件,它是由一系列只读的基础表和视图组成的,它保存了关于数据库本身以及其中存储的所有对象的基本信息。
对数据字典的管理和维护由Oracle系统负责,任何数据库用户都无法对数据字典中内容进行修改,但是可以查看数据字典的内容。
Oracle中的数据字典有静态和动态之分,静态数据字典主要是在用户访问数据字典时不会发生改变的,而动态数据字典是依赖数据库运行性能的,反映数据库运行的一些内在信息。
数据字典中的内容都被保存在System表空间中。
1.静态数据字典
用户所使用的数据字典视图大致分为三类,并且各种类型的视图以不同名称的前缀表示。这三类视图介绍如下:
USER视图
是以USER_字符为名称前缀的数据字典视图。每个数据库用户都有一组属于自己的视图,在USER视图中包含了该用户模式下所有对象的信息。
ALL视图
是以ALL_字符为名称前缀的数据字典视图。ALL数据字典视图是USER视图的扩展,在ALL视图中记录了属于该用户模式的所有对象的信息以及该用户可以访问的属于其他模式的对象的信息。
DBA视图
是以DBA_字符为名称前缀的数据字典视图。在DBA数据字典视图中记录了全部数据库对象的信息。
2.动态数据字典
在数据库实例的整个运行过程中,Oracle会一直在一系列的“虚拟”表中记录与数据库活动相关的性能统计信息,这些虚拟表称为动态性能表。
所有动态性能表都以V$开头。
Oracle自动在动态性能表的基础上创建的视图称为动态性能视图。
例:动态性能视图V$SGA记录了系统全局存储区SGA的信息,通过查询该动态性能视图,用户可以获取当前数据库实例的全局存储区SGA的信息。
SELECT NAME, VALUE FROM V$SGA
Oracle常用数据字典
基本的数据字典
与数据库组件相关的数据字典
常用的动态性能视图
权限视图
来源:CSDN
作者:QilanAllen
链接:https://blog.csdn.net/QilanAllen/article/details/103689745