oracle数据库启动与关闭

    xiaoxiao2021-04-17  40

    数据库启动与关闭

     过程一定是Nomount –mount—open—close—dismount—shutdown

     

     

    Open—根据控制文件中记录的数据,日志文件个数,位置,版本一致性验证。若不一致,则判断数据文件是否最新,最新就看undo是否有事务未提交,undo结合redo日志对此未完成的事务取消,这也叫回退。当数据文件不一致,有事务提交未写入数据文件中,undo中记录了未写入数据文件的修改的block更改过程,重做一遍,将修改的block重新写入block,这也叫前滚。回退和前滚是用来在数据库不一致性关闭时候来做实例恢复的。

     

    Mount—实例的控制文件已经打开,物理结构与控制文件开始关联,实例开始关联库,此时控制文件中记录的库名与实例中的由参数文件定义的db_name,必须一致+根据参数文件中定义的控制文件的个数,路径,版本一致性验证通过才能mount。在此状态可以操作物理结构,对数据库进行归档、闪回等操作。还可以查看很多视图如v$controlfile等

     

    Nomount—参数文件生效,实例已经启动

     

    Shutdown

     

    10g

    Sqlplus / as sysdba

    Select open_mode from v$database;

    Shutdown immediate

    Alter database nomount;

    Alter database mount;

    Alter database open;

     

     

    关于一致性关闭数据库

    Shutdown immediate    一致性关闭,触发CKPT,事务强行结束

    Shutdown transactional  一致性关闭,触发CKPT,等待事务结束

    Shutdown normal       一致性关闭,触发CKPT,等待事务结束,等待会话结束

    一致性关闭时,回退未提交的更改,数据库缓冲区高速缓存会写入数据文件,启动时不需要恢复实例。

     

     

    10g

    Sqlplus / as sysdba

    Shutdown abort

    Startup

    Shutdown abort

    Startup mount

    Alter database archivelog;此时报错,未一致性关闭,需要实例恢复

    Alter database open;只要正常打开,一致性关闭一下,再次启动便恢复了实例

    Shutdown immediate

    Startup mount

    Alter database archivelog;正常

    Alter database noarchivelog;

     

    A终端:

    10g

    Sqlplus scott/tiger

    B终端:

    10g

    Sqlplus / as sysdba

    Shutdown normal  无法关闭因为A会话未结束,一旦结束便会关闭

     

    A终端:

    10g

    Sqlplus scott/tiger

    Update emp set sal=sal+1;

    B终端:

    10g

    Sqlplus / as sysdba

    Shutdown transactional  无法关闭因为A事务未结束,一旦结束便会关闭,若A此时rollback,便会立即关闭

     

     

     

    转载请注明原文地址: https://ju.6miu.com/read-674274.html

    最新回复(0)