日期:2014-05-16  浏览次数:20419 次

Oracle DBA 学习日记
一、Oracle数据库启动与关闭
1,oracle server主要由两部门组成:Instance(实例)和Database(数据库),其中,instance是指一组后台进程/线程和一块共享内存区域;database就是指存储在磁盘上的一批物理文件;

2,数据库启动过程有3个状态:nomount状态、mount状态、open状态;

   启动nomount状态的步骤是[startup nomount],oracle首先寻找参数文件(pfile/spfile),然后根据参数文件中的设置创建实例和分配内存,启动后台进程;所以,只需要一个参数文件就可以启动oracle后台实例instance,而不需要控制文件(control file)和数据文件(data file)的参与;
   创建数据库第一步如果未成功,首先检查系统配置(内核参数等),是否分配了足够的系统资源等;关于参数文件(pfile/spfile),oracle首选spfile<SID>.ora作为启动参数文件;如果其不存在,则选择spfile.ora;两者都不存在时,选择init<SID>.ora启动oracle;如果上面三者都不存在,则无法正常启动oracle instance;
   参数文件中,最重要的是db_name这个属性,将其设置为数据库实例名,就可以启动数据库实例,而且他未设置的属性会被设置为默认的文件夹;
   在完成数据库实例的创建之后,oracle就可以逐步导航,完成数据库的加载、打开等工作;

   启动到mount状态后[alter database mount|startup mount],oracle从参数文件中获取控制文件,通常情况下,oracle会默认自动在同一个目录下创建3个一样的控制文件,这是为了因为介质故障而破坏控制文件;此时,数据库需要计算mount id,并记录在控制文件中,然后开始启动HeartBeat(心跳),每3秒钟更新一次控制文件;
   在/dbs目录下,有一个orapwd<SID>.ora文件,缺省情况下是orapwd.ora文件,在数据库没有启动之前,数据库内建用户无法通过数据库本身验证身份,而oracle则是利用该口令文件来实现验证;而该两个文件都不存在的情况下,启动数据库的mount状态时会报错;在linux下的/dbs目录下面还有一个lock文件,名为lk<SID>,用户在启动数据库时创建,用于操作系统锁定数据库;数据库关闭时释放;
   
   启动到open状态:p40

   

我的异常网推荐解决方案:oracle存储过程,http://www.aiyiweb.com/oracle-develop/177537.html