简介
首先区分一下数据库和数据库实例。简单的说,数据库是死的,而数据库实例是活的。数据库由一系列存储用户数据和元数据的文件组成。元数据,又叫数据的数据,是关于数据库结构、配置和操作的信息。
数据库实例则包含了一系列后台进程,这些进程操作存储的数据;实例还包含了供进程使用的共享内存。
每个实例都有一个实例ID(SID),用以区分主机上不同的实例。对于本地连接,可以通过设置ORACLE_SID 和 ORACLE_HOME来定位一个实例;对于远程连接,则需要网络地址和数据库服务名称。
一个实例必须被启动,之后才能进行信息的读写。创建一个实例可以通过DBCA,或者是CREATE DATABASE SQL语句
实例的属性由实例初始化参数来标识。当实例被启动时,一个初始化参数文件会被用来配置这个实例
初始化参数文件
参数影响着实例的基础功能。这些参数被称为初始化参数。实例启动时从一个文件读入初始化参数。改动这些参数可以使用DBCA或者Oracle提供的一些advisor,例如memory advisor。
一旦读出,初始化参数就存在于内存中,许多参数可以动态更改。共有两种参数文件
1 服务器参数文件;推荐的;二进制;db可读写;不能手工编辑;DBCA/DB更改参数时自动更新;更改spfile参数可以制定是否同时更改内存参数
2 文本参数文件;不推荐;文本;db只读;手工编辑;只能重启DB生效;如果实例从pfile启动,可以动态改参数,不会更新pfile
可以使用SQL语句来创建下列文件:
1 从pfile到spfile
2 从内存到spfile
3 从spfile到pfile
当使用DBCA创建数据库时,spfile同时被建立。
后台进程
Oracle实例的后台进程负责管理内存结构,异步操作IO把数据写入磁盘文件,并且执行常规维护任务。这些后台进程加强了DB的功能,否则就需要有多个DB程序,针对每一个实例。这些进程监控其他DB进程来提供增长的并行性,以便的到更好的性能和可靠性。
实际环境中的后台进程取决于当前DB中使用的特性。一些基础后台进程包括:
Database writer(DBWn):DB写进程把更改的块从DB缓冲区写到磁盘文件,最多36个。
Log wriger(LGWR):日志写进程把redo日志条目写到磁盘。重写日志条目由SGA中的重写日志缓冲区生成。LGWR把重做日志条目顺序的写入在线重写日志文件online redo log file.
Checkpoint(CKPT):在特定的时间点,由DBWn把所有SGA中改动的DB缓存写入到数据文件。这种时间被称为检查点。检查点进程通知DBWn,更新数据文件和控制文件,并且记录此次更新的时间。
System monitor(SMON):系统监控器实施实例恢复,当一个失败的实例重启的时候。
Process monitor(PMON):进程监视器执行恢复,当一个用户进程失败的时候。它会清理缓存并释放失败进程使用的资源。
Archiver(ARCn):归档进程把在线重做日志文件复制到归档存储,当日志文件满了或者日志切换发生时。DB必须在归档模式,才能运行归档进程。
Manageability monitor(MMON):这个进程负责许多管理相关的后台任务,比如:
当指定指标超过阈值时,发出警报;
出发额外进程来做快照;
为最近被改动的SQL对象抓取统计值
Job Queue Processes(CJQ0 and Jnnn):作业队列进程运行用户作业,通常在批处理模式。作业是用户定义的,预订运行1或多次的任务。
服务器和客户进程
除了后台进程,DB建立服务器进程来处理用户进程的请求。服务器进程可以是独占的或者共享的,对应DB运行在独占服务器模式或共享服务器模式。
实例内存结构
内存的大小影响DB性能,初始化参数决定内存大小。有两种重要的内存区域。
System Global Area(SGA):保存实例的数据和控制信息的共享的内存区域。多个用户能够共享这个区域的数据,避免了重复和耗时的磁盘操作。
Program Global Area(PGA):单独的DB服务进程使用的内存区域。当连接DB实例时,会建立一个会话,其使用服务进程来提供通信,每个服务进程对应一个PGA。PBA用来处理SQL并保持登录以及其他会话信息。
实例的启动和关闭
启停DB实例,需要用户以特定的权限连接。权限包括SYSDBA和SYSOPER,后者没有访问用户对象的权限。
DB实例可以被启动到不同的状态,以便进行一些特殊的操作。启动实例会经过三个阶段:
1. start实例读取初始化参数文件,分配SGA,启动后台进程。
2. 如果mount数据库,则实例会打开控制文件,但是不打开数据文件。用户可执行某些无法在open模式下进行的操作,比如启动或关闭归档日志。
3. 如果open数据库,则会打开数据文件和在线重做日志文件
关闭数据库是一个逆过程,同时有不同的关闭模式,包括NORMAL、IMMEDIATE、TRANSACTIONAL和ABORT。关闭实例经历下列阶段。
1. 当用户从会话退出,或者断开连接之后,DB把SGA中的数据写到数据和在线重写日志文件中。数据文件被执行一次检查点,他们的头部被标记成当前时间。这些文件被关闭,数据库的状态变为CLOSED。控制文件仍然是打开的。
2. 实例反挂载数据库并在控制文件更新相应条目来记录一次干净的关闭。关闭控制文件。数据库现在被关闭和反挂载。实例处在NOMOUNT状态。
3. 实例停止后台进程,并且释放被SGA使用的共享内存。
查看并修改初始化参数
更改参数可以使用EM、DBCA或者SQL命令。对于参数的修改有三种级别,对于SQL来说,分别对应ALTER SYSTEM命令的三个参数,分别是SCOPE=MEMORY/BOTH/SPFILE,他们对应的情形分别是:仅针对当前运行实例;当前以及重启后;仅重启后;
操作内存
内存管理包括维护实例内存结构的最佳大小,当DB变化的时候。包括SGA和实例PGA。实例PGA是所有单独PGA的集合。基本的说,内存管理有两种模式。一种是自动模式,由数据库自动调整SGA每个模块和每个PGA的大小;另一种是手动模式,用户需要设置SGA中每个模块的大小和实例PGA的大小。
阅读(1039) | 评论(0) | 转发(0) |