《大型数据库第2次理论课.ppt》由会员分享,可在线阅读,更多相关《大型数据库第2次理论课.ppt(10页珍藏版)》请在金锄头文库上搜索。
1、1ORACLE的启动过程1ORACLE的启动过程启动三个阶段的SQL语句为:(1)SQLstartupnomount(2)SQLalterdatabasemount(3)SQLalterdatabaseopen可否用startupmount或startupopen?关闭过程刚好相反。一般闭用shutdownimmedaite,当然也可以用shutdown(它要等事务提交完了之后才关闭)1.1实例启动的详细过程创建新的实例。(1)Unix下,只需要改变环境变量$ORACLE_SID的内容,即执行exportORACLE_SID=你要想创建的实例的名称。例如:ORACLE_SID=abc(2)在w
2、indwos下,用oradim来创建,例如:oradimnewsidabc加载过程。(1)sqlplus/“assysdba”(2)startupnomount通过上面两个步骤,就可以加载一个实例,注意startup是一个sqlplus集成环境中的一个命令,它有很多选项,后面会介绍。另外需要注意的是:这个过程一执行,就会有一些oracle的动态视图被创建,最重要的一个视频是v$process,该视图被认为是操作系统到数据库的入口。可以执行selectaddr,pid,spid,usernamefromv$process。spid为操作系统的进程号。注意:(1)startupnomount只是将
3、oracle的实例启动,并没有加载数据库,也就是说,与数据库相关的所有进程已经创建。可以用“psaef|greporacle”查看与oracle相关的进程。注意观察所有与oracle相关的进程名称最后面都是与$ORACLE_SID相同。(2)可以用selectinstance_namefromv$instance或showparameterinstance_name来查看启动的实例名。(3)启动的过程会写入日志。写入的日志名为:alert.log,该文件在什么地方?大家可以自己做实验验证,同时查看该文件的内容。1.2实例的启动过程中的参数加载从oracle9i开始,spfile被引入。orac
4、le首先spfile.ora,如果该文件不存在,则选择spfile.ora,如果两者都不在,oracle会选择init.ora,如果这三个文件都不存在,则oracle将报错。这些参数文件在unix下放在$ORACLE_HOME/dbs目录中,在Windows下,是放在$ORACLE_HOMEdatabase下。实验1:自己定义一个实例名,然后启动这个实验。验证oracle参数的加载顺序。观察操作系统启动了什么样的进程。观察启动日志文件的内容。1.4什么是实例参数实例参数文件是指spfile或init.ora文件,其构成是“键=值”。例如:db_name=ora10g要得到一个实例参数的当前值,
5、可以查询V$PARAMETER视图。另外,还可以在SQL*Plus中使用SHOWPARAMETER命令来查看某个参数对应的值,例如showparameterdb_block_size或showparameterdb_name(注:这两个参数名和它的值来自参数文件)。1.5转换spfile将init.ora文件可以转换为spfile文件。createspfilefrompfile也可以自己创建spfile的名称和路径:createspfile=/abc/spfilefrompfile也可以将spfile转换成init.oracreatepfilefromspfile注意:(1)spfile是一个
6、二进制文件。(2)如何提取spfile的字符串?(用strings命令)(3)为什么要采用spfile这种形式,见p69。1.3实例名与数据库名数据库名(在oracle参数文件(如:spfile或spfile.ora等)中,其定义为db_name)比实例名重要得多。它代表了实例即将挂接的数据库名称,关系到具体的特理文件。其标准定义:DB_NAME用来定义数据库名称,必须是一个不超过8个字符的字符串,在数据库创建中,DB_NAME被记录在数据文件,日志文件和控控制文件中,如果数据库实例启动过程中参数文件中的DB_NAME和控制文件中的数据库名称不一致,则数据库不能启动。通常缺省的情况下实例名(I
7、NSTANCE_NAME)和数据库名(DB_NAME)是一致的,但实际上实例名可以和数据库名不一样。1.2实例名与数据库名不一致的情况下加载过程(1)先启动两个不同的实例:dbtest和abc,其中abc的参数文件initabc.ora同为initdbtest.ora一样(2)让ORACLE_SID为abc,然后在sqlplus里面执行startup。注意:如果initabc.ora里面的db_name不等于dbtest,则启动不成功。如果先已经启动了dbtest,这时也启动不成功。注意:nomount阶段只是将参数文件(如:spfile或init.ora)中的各个参数加载到内存中,可以用下面
8、的语句来查看加载的参数:selectname,type,valuefromv$parameterwherenamelike%control%;实验:请按上面步骤实现实例名与数据库名不一致的情况下加载。1.3启动到数据库的mount状态启动到nomount状态后,Oracle可以从参数文件中获得控制文件的位置信息,并找到控制文件,并根据控制文件的数据文件位置进行数据文件的存在性判断(注:与数据库相关的文件有:控制文件,日志文件和数据库文件,与实例相关的文件是参数文件,如:spfile等)。Oracle10G之前,缺省情况下有3个控制文件,这3个控制文件的内容完全一样,是Oracle为了安全采取的
9、一个镜像,可将这三个文件放到不同的磁盘上,避免因磁盘的损坏使3个文件都损坏。如果是Oracle10G,如果不指定控制文件的存储位置,Oracle会将控制文件放到闪回恢复区(FlashbackRecoveryArea),由于通常闪回恢复区与数据库文件放在不同的磁盘上,所以这样也可以保护控制文件的安全。showparametercontrol_file或select*fromv$control_file可以查看控制文件的位置。实验:将数据库的三个控制文件更名,然后启动数据库,看是否可以加载,如果不能加载,用什么方法可以加载?1.3启动到数据库的mount状态startupnomountselect*fromv$controlfileshowparametercontrol-此时会显示控制文件的位置alterdatabasemountselect*fromv$controlfileshowparametercontrol_file控制文件相当重要,如果全部丢失,可以重建控制文件来打开数据库。如何重建控制文件?