Java自学者论坛

 找回密码
 立即注册

手机号码,快捷登录

恭喜Java自学者论坛(https://www.javazxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,会员资料板块,购买链接:点击进入购买VIP会员

JAVA高级面试进阶训练营视频教程

Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程Go语言视频零基础入门到精通Java架构师3期(课件+源码)
Java开发全终端实战租房项目视频教程SpringBoot2.X入门到高级使用教程大数据培训第六期全套视频教程深度学习(CNN RNN GAN)算法原理Java亿级流量电商系统视频教程
互联网架构师视频教程年薪50万Spark2.0从入门到精通年薪50万!人工智能学习路线教程年薪50万大数据入门到精通学习路线年薪50万机器学习入门到精通教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程MySQL入门到精通教程
查看: 752|回复: 0

oracle服务器异常关闭,断电,导致oracle控制文件版本不一致,报错ora-12514,ora-00214解决记录

[复制链接]
  • TA的每日心情
    奋斗
    2024-4-6 11:05
  • 签到天数: 748 天

    [LV.9]以坛为家II

    2034

    主题

    2092

    帖子

    70万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    705612
    发表于 2021-4-18 04:50:16 | 显示全部楼层 |阅读模式

      解决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
    正常运行时间              03 小时 1050 秒
    跟踪级别                  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模式,问题解决。

     

    2017年11月8日17:16:01

    再记录一次无法连接的问题:

    问题描述:服务器归档内容过多,手动删除归档日志后,plsql连接不上,客户端sqlplus连不上, 服务端sqlplus能连接

    sqlplus当中的错误为:
    ORA-01034: ORACLE not available
    ORA-27101: shared memory realm does not exist
    进程 ID: 0
    会话 ID: 0 序列号: 0

    解决步骤:sqlplus /nolog模式登录(如果直接在cmd当中无法登录的话,可以尝试dos命令cd进入到D:\app\Administrator\product\11.2.0\dbhome_1\BIN目录下连接)

    登录后使用shutdown immediate命令,start命令,将数据库关闭,启动

    如果在start命令启动后启动后出现如下错误:通信通道的文件结尾问题

    SQL> startup open hstestdb
    ORACLE 例程已经启动。

    Total System Global Area 6847938560 bytes
    Fixed Size                  2188768 bytes
    Variable Size            3422554656 bytes
    Database Buffers         3405774848 bytes
    Redo Buffers               17420288 bytes
    数据库装载完毕。
    ORA-03113: 通信通道的文件结尾
    进程 ID: 2984
    会话 ID: 5 序列号: 3

    再次shutdown immediate关闭数据库,然后再启动到 startup mount模式,查询一下select * from v$log;看一下数据库最后正常的时间

    执行recover database until time '2013-03-01 12:12:12';恢复一下

    SQL> recover database until time '2013-03-01 12:12:12';
    完成介质恢复。

    再执行alter database open resetlogs; 更改恢复的内容

    SQL> alter database open resetlogs;

    数据库已更改。

    注意如果没有恢复,直接执行alter database open resetlogs应该会有如下提示

    SQL> alter database open resetlogs;
    alter database open resetlogs
    *
    第 1 行出现错误:
    ORA-01139: RESETLOGS 选项仅在不完全数据库恢复后有效

    最后使用startup再把数据库例程启动。

     

    还有一种试验解决监听问题的方法:

    找到D:\app\Administrator\product\11.2.0\dbhome_1\NETWORK\ADMIN

    将listener.ora和tnsnames.ora文件中的HOST名字依次改成ip地址;计算机名;127.0.0.1;localhost然后启动oracle看是否正常

     

    哎...今天够累的,签到来了1...
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|小黑屋|Java自学者论坛 ( 声明:本站文章及资料整理自互联网,用于Java自学者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-5-10 03:37 , Processed in 0.068353 second(s), 29 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表