IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    各版本Oracle数据库快速关闭的方式

    Guang Cai Li发表于 2022-07-11 15:26:00
    love 0

    有经验的DBA都知道SHUTDOWN ABORT 是关闭数据库的最快方式。

    但是,以这种形式关闭数据库会使数据库处于不一致的状态(没有回滚),在这种情况下的备份在下次启动时需要恢复 。

    在8.1.6以前的版本里,数据库是不推荐使用SHUTDOWN ABORT,因为在这么老的版本上这么做导致数据库损坏的概率很大。

     

    在执行快速关闭之前,建议按照如下顺序来操作:

    1.通过下面的查询判定干净的关闭数据库需要多少回滚(以字节计算)

    select sum(used_ublk) * <undo / rollback segment 表空间的block size> from v$transaction;

    2. SHUTDOWN ABORT

    将不进行事务回滚,快速的中断所有进程 (客户端 和 后台)。

     

    A SHUTDOWN IMMEDIATE时SMON会尝试中断所有客户端进程(SIGKILL),但是很多情况下SMON无法及时完成,这是使用SHUTDOWN ABORT的原因。

    3.在下次启动时,SMON会回滚事务。

    可以通过STARTUP RESTRICT启动

    然后通过下面的查询语句查看回滚(块的个数)

    select sum(distinct(ktuxesiz)) from x$ktuxe where ktuxecfl = ‘DEAD’;

    6.当回滚完成 (当上次关闭数据库时候,活动事务不多的情况下,有可能启动后立刻就完成了), 执行 SHUTDOWN IMMEDIATE。
    当完成此步骤后,数据库将干净的关闭

     

    这里早前碰见过一个BUG,一个没有发布的SQLPLUS内部bug会阻止SQLPLUS会话被SMON中断,客户端进程的truss / pdump等会显示SQLPLUS会话在等待WAITPID

     



沪ICP备19023445号-2号
友情链接