一、进程和例程
进程——是操作系统中的一个概念,是一个可以独立调度的活动,用于完成指定的任务。
进程和程序的区别:
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