美文网首页
oracle服务器异常关闭,断电,导致oracle控制文件版本不

oracle服务器异常关闭,断电,导致oracle控制文件版本不

作者: BenjaminY | 来源:发表于2019-08-29 14:47 被阅读0次

    解决oracle无法连接,首先检查数据库的监听是否正常,监听命令:

    lsnrctl status 查看监听器命令 lsnrctl start 会看到启动成功的界面 lsnrctl stop 停止监听器命令

    正常的监听启动后会看到orcl的实例,如果没有,说明监听有问题

    Microsoft Windows [版本 6.1.7601]
    版权所有 (c) 2009 Microsoft Corporation。保留所有权利。
    
    C:\Users\Administrator>lsnrctl status
    
    LSNRCTL for 64-bit Windows: Version 11.2.0.1.0 - Production on 13-7月 -2018 23:1
    2:59
    
    Copyright (c) 1991, 2010, Oracle.  All rights reserved.
    
    正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))
    LISTENER 的 STATUS
    ------------------------
    别名                      LISTENER
    版本                      TNSLSNR for 64-bit Windows: Version 11.2.0.1.0 - Produ
    ction
    启动日期                  13-7月 -2018 20:02:08
    正常运行时间              0 天 3 小时 10 分 50 秒
    跟踪级别                  off
    安全性                    ON: Local OS Authentication
    SNMP                      OFF
    监听程序参数文件          d:\app\Administrator\product\11.2.0\dbhome_1\network\a
    dmin\listener.ora
    监听程序日志文件          d:\app\administrator\diag\tnslsnr\txf\listener\alert\l
    og.xml
    监听端点概要...
      (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC1521ipc)))
      (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=127.0.0.1)(PORT=1521)))
    服务摘要..
    服务 "CLRExtProc" 包含 1 个实例。
      实例 "CLRExtProc", 状态 UNKNOWN, 包含此服务的 1 个处理程序...
    服务 "orcl" 包含 1 个实例。
      实例 "orcl", 状态 READY, 包含此服务的 1 个处理程序...
    服务 "orclXDB" 包含 1 个实例。
      实例 "orcl", 状态 READY, 包含此服务的 1 个处理程序...
    命令执行成功
    
    C:\Users\Administrator>
    

    控制文件介绍:

    每一个oracle都至少会生成一个控制文件,一个数据库可以拥有多个控制文件,但是一个控制文件只能属于一个数据库。

    控制文件内部除了存放数据库名及其创建日期,数据文件,日志文件等相关信息,在系统运行的过程中还会存放系统更改号,检查点信息及归档的当前状态等信息。

    出于安全考虑,数据库会自动创建2到3个控制文件,每个控制文件记录相同的信息,这个可以确保在数据库运行时,某个控制文件损坏,oracle会自动使用另一个控制文件,当所有控制文件损坏时,数据库将无法工作。

    注:通过 v$controlfile 可以查看oracle的控制文件信息。
    select name from v$controlfile
    

    本次问题发生情况:服务器异常断电,启动后,oracle无法连接,使用plsql连接报错ora12514监听出现问题,进一步检查后发现是控制文件不一致,导致数据库无法启动。

    解决步骤:

    cmd窗体运行以下语句

    1.使用nolog模式,DBA登录

    sqlplus /nolog

    conn / as sysdba

    2.先关闭数据库

    shutdown immediate

    3.使用nomount模式登录

    startup nomount

    4.拷贝其中一个控制文件到另外一个地方,完成替换

    host copy D:\app\Administrator\oradata\orcl\control01.ctl D:\app\Administrator\flash_recovery_area\orcl\control02.ctl

    5.手动启动到mount模式

    alter database mount;

    6.手动启动到open模式

    alter database open;

    注:本次解决问题的关键在于搞清楚数据库不同的启动模式的区别。

    直接使用startup命令启动数据库,数据库会自动按次序执行nomount,mount,open模式打开数据库,这样就会生成新的控制文件,

    因为服务器异常断电后,原有的控制文件不一致,所以就会导致数据库启动不了

    因此先以nomount模式启动:只会创建实例,不加载数据库,也不会打开任何数据文件然后使用host copy命令复制其中一个控制文件到另外一个控制文件的地方,

    再启动到mount,open模式,问题解决。

    相关文章

      网友评论

          本文标题:oracle服务器异常关闭,断电,导致oracle控制文件版本不

          本文链接:https://www.haomeiwen.com/subject/apyiectx.html