一、进程和例程
进程――是操作系统中的一个概念,是一个可以独立调度的活动,用于完成指定的任务。
进程和程序的区别:
1、进程是动态的概念,即动态地创建,完成任务后消亡,程序是静态的实体;
2、进程强调执行过程,程序是指令的有序集合;
3、进程在内存中,程序在外存中。
ORACLE进程包括“服务进程”和“后台进程”。
服务进程:给客户端的用户进程“提供服务”的进程,在服务器端创建用户进程“必须通过”服务进程才能访问数据库。分为专用服务进程(只为一个用户进程提供服务)和共享服务进程(为多个用户进程提供服务)。服务进程主要完成的任务包括:
1、“解析、执行”SQL语句(由用户提交) ;
2、“搜索”SGA区共享池中的“库缓存”,如果数据块不在库缓存中,则将硬盘的数据文件中相关的数据块“读入库缓存”;
3、将查询或执行后形成的“数据返回”给用户。
注意:服务进程由“后台进程”提供支持。
后台进程:为了使系统性能最优,并支持协调“服务进程”,提供了“后台进程”。 后台进程存在于操作系统中,在例程启动时自动启动。只要数据库还在运行,后台进程就一直存在。
TIPS:查询启动的后台进程可使用以下语句,select * from v$bgprocess
主要的后台进程(区别“服务进程”):
1、DBWR(数据库写进程)
2、LGWR(日志写进程)
3、SMON(系统监视进程)
4、PMON(进程监视进程)
5、CKPT(检查点进程)
----------前5个后台进程是必须的
6、ARCH(归档进程)
7、RECO(恢复进程)
8、LCKn(锁进程)
9、SNP(作业进程)
10、SNPn(快照进程)
11、Dnnn(调度进程)
12、Snnn(服务器进程)
13、Pnnn(并行查询服务器进程)
********************************************
例程-----一组内存结构(SGA)+一组“后台进程”
SGA区――是一组共享的内存结构,包含一个例程的数据和控制信息。
如果多个用户同时连接到同一个例程,这些用户将共享SGA中的数据,
SGA也称“共享全局区”
SGA=共享池+大池+JAVA池+数据高速缓冲区+日志高速缓冲区
共享池=库缓冲+数据字典缓冲
PGA=“服务进程”+排序区+堆栈区+游标区+会话区
PGA区――是在“用户进程”连接到数据库,并创建一个对应的会话时,
由ORACLE为“服务进程”分配的,专门用于当前用户会话的内存区
会话终止时,PGA区所占用的内存会自动释放*****
PGA区的大小由操作系统决定,并且分配后保持不变
PGA区是“非共享”的,只有“服务进程”本身才能访问,
《注意:SGA区是所有“服务进程”都可以“共享”的内存区》
PGA区――是一个内存区域,它包含(专用或共享)服务器进程的数据和控制信息。
它是由Oracle在启动服务器进程后创建的“非共享”内存。
只有该服务器进程才可以访问该区域。
为附加到Oracle例程的每个服务器进程分配的“PGA总内存”,
也称做由该例程分配的“PGA聚集内存”
专用服务进程(dedicated)和共享服务进程(shared)
1、专用服务进程模式
在“专用服务进程”模式中,监听程序将接收到的用户请求,直接传递到“ORACLE专用服务进程”
客户机1(用户进程1)――监 |专用服务进程1| |系 统|
客户机2(用户进程2)――听 |专用服务进程2| |全局区|
客户机3(用户进程3)――程 |专用服务进程3| | SGA |
客户机4(用户进程4)――序 |专用服务进程4| | |
2、共享服务进程模式
7。3版本以后,增加了“共享服务进程”――多个用户进程可以“共享很少的服务进程”
原理:
首先,监听程序将接收到的用户请求传递到调度进程,调度进程将请求放在请求队列中;
调度进程按“先进先出”的原则从队列调出一个请求,然后将用户请求传递给空闲的“共享服务进程”;
共享服务进程为完成该请求到SGA进行所有必要的数据库调用。
当服务器完成请求后,共享服务进程将“响应”放进“队列”,再由调度进程“返回”给相关的用户进程。
客户机1(用户进程1)――监 请 | 共享服务进程1 |系 统|
客户机2(用户进程2)――听 调度进程 求 | |全 局|
客户机3(用户进程3)――程 队 | | 区 |
客户机4(用户进程4)――序 列 | 共享服务进程2 | SGA |
二、参数文件及参数显示
1、参数文件
SPFILE:服务器初始化参数文件
PFILE: 文本初始化参数文件
E:\oracle\admin\myora\pfile\init.ora.1128200620711 (PFILE,第一次启动数据库时的参数文件,可改名为init.ora)
E:\oracle\ora92\sysman\ifiles\def_MYORA.ora (PFILE,最近一次启动数据库时的参数文件,系统自动生成)
E:\oracle\ora92\database\spfilemyora.ora(SPFILE,二进制文件,不能使用文本编辑器编辑)
E:\oracle\ora92\database\pwdmyora.ora(二进制文件,不能使用文本编辑器编辑)
2、显示参数:
show parameter[s] -------显示所有初始化参数的配置
select * from v$parameter -------显示所有初始化参数的配置
查询参数的三个视图:
v[_]$parameter:用于用户当前会话的数据库参数;
v[_]$system_parameter:用户整个系统的数据库参数,新的会话将从该视图中获取它们的参数值;
v[_]$spparameter:这个视图包含了已存储参数文件的内容。
show parameter java_pool_size
show parameter large_pool_size
show parameter shared_pool_size
show parameter log_buffer ――日志缓存的大小
show parameter db_cache_size ――数据库缓冲=数据缓冲+日志缓冲
show parameter db_block_size
show parameter sort_area_size
修改参数:
注意:请务必确认你已经了解了要进行修改的参数,
同时应该清楚该参数修改之后会给数据库带来什么样的影响,
强烈建议在修改之前对原始文件进行备份!
静态初始化参数――只能通过关闭数据库进行更新的参数 <例:db_block_size>
动态初始化参数――可以在当前数据库实例中进行更新的参数 <例:open_cursors>
alter system 会影响当前数据库上运行的所有会话;
show parameter open_cursors ----默认是300
alter system set open_cursors=500; ----不是所有的参数都可通过命令动态修改
创建参数文件:
create pfile=...from spfile=...
create pfile='e:\pfile.txt' from spfile='e:\oracle\ora92\database\spfileSID.ora'
create spfile=...from pfile=...
create spfile='e:\oracle\ora92\database\spfileSID.ora' from pfile='e:\pfile.txt'
-------------------------**脱机备份和脱机恢复**-----------------------------
一、脱机备份
脱机备份――是在数据库处于“干净”关闭状态下进行的“操作系统备份”,是对于构成数据库的全部文件的备份。
需要备份的文件――参数文件、所有控制文件、所有数据文件、所有联机重做日志文件
《思考:启动数据库时文件的使用顺序?参数文件--->所有控制文件--->所有数据文件--->所有联机重做日志文件》
建议――由于脱机备份需要关闭数据库,不能保证数据库的7*24小时的运行,所有建议在“夜间或休息时间”进行备份
注意――利用脱机备份只能恢复到“备份时刻”的数据库数据和状态,而不能恢复“备份时刻”到“故障时刻”之间的数据和状态
备份文件的位置与清单――
1、参数文件(*.ora 4个):
E:\oracle\admin\myora\pfile\init.ora.1128200620711 (第一次启动数据库时的参数文件,可改名为init.ora)
E:\oracle\ora92\sysman\ifiles\def_MYORA.ora (最近一次启动数据库时的参数文件,系统自动生成)
E:\oracle\ora92\database\spfilemyora.ora(二进制文件,不能使用文本编辑器编辑)
E:\oracle\ora92\database\pwdmyora.ora(二进制文件,不能使用文本编辑器编辑)
2、控制文件(*.ctl 3个):select status, name from v$controlfile;
3、数据文件(*.dbf 11个):select status, file_name from dba_data_files;
4、日志文件(*.log 3个):select group#, status, member from v$logfile;
默认情况下,控制文件、数据文件、日志文件存放在相同的路径:
E:\oracle\oradata\myora\
脱机备份的步骤――
第一步:conn system/password as sysdba
第二步:shutdown immediate <“干净”关闭数据库>
第三步:按照上述备份文件清单,备份所有文件
建 议――在改变了数据库结构(如改变了参数设置、表空间、表,改变了控制文件、数据文件、日志文件的位置或名称)之后,都应该进行一次脱机备份
二、故障模拟――上述备份文件如果被删除或移动,启动数据库时就会出错
下面模拟数据文件被删除的故障情况,步骤如下:
第一步:shutdown immediate
第二步:在Oracle的目录结构中删除一个数据文件,如users01.dbf
第三步:startup open <出错!原因是找不到数据文件>
三、脱机恢复――将所有备份文件“复制”回原来的位置
第一步:shutdown immediate
第二步:将备份文件全部复制到原来所在的位置,以便恢复到备份时刻
第三步:startup open