ORA-03113的解决方案

笔者日前遇到服务器断电后oracle数据库崩溃的问题,在按照网上教程修复时发现,有关于报错ora-03113的解决方案混乱且不起作用。笔者在总结了前人的博客并结合在修复中遇到的问题,总结了一份较为全面的解决方案,有不足之处敬请补充。

一、查看日志

1.定位日志位置

此步骤最为重要,笔者在浏览大部分解决方案时上来就是说的解决办法,并未梳理排查步骤。实际工作中针对某一报错可能有十几种原因,盲目套用万能解决方案有时候会错上加错。此处笔者介绍oracle 11g以上的版本的日志位置。

默认情况下,oracle的日志文件记录在$ORACLE/rdbms/log目录下,一般来说默认路径为:

bash 复制代码
/oracle/oracle/diag/rdbms/rac/rac1/trace
/oracle/oracle/diag/rdbms/rac/rac1/alert

具体路径需要根据安装位置等自行调整,如笔者的示例数据库就在,此路径是安装orcl时设置的全局数据库名称,每个人安装习惯不同,路径有所不同。

bash 复制代码
diag/rdbms/orcl/orcl/trace


2.查看日志文件

根据控制台报错找到对应的报错日志文件,使用txt打开即可。根据控制台报错的log编号找到对应trc文件。例:Orc-ora-2854文件。

一般只需要从后向前看最新的报错记录信息即可。这里笔者根据此错误总结了几个常见的报错,包括

1.归档日志空间不足,一般表现日志表现为ORA-19815: 警告:

bash 复制代码
db_recovery_file_dest_size 字节 (共 4102029312 字节) 已使用 100.00%, 尚有 0 字节可用。

2.控制文件版本号不一致,如下图所示。

3.如有其他原因请自行百度

二、解决办法

1.归档日志空间不足

针对归档日志空间不足,解决办法分为两步,

一、删除原有的归档日志释放空间

1.使用rman工具,win+r+cmd打开cmd输入以下命令,删除7天前的归档日志。

bash 复制代码
rman target
RMAN> delete noprompt archivelog until time "sysdate-7";

2.此处添加几条备用的命令,可供读者选择

检查归档日志

bash 复制代码
crosscheck archivelog all;

删除所有过期归档日志

bash 复制代码
delete expired archivelog all;

二、修改归档日志空间的大小(扩容)

win+r+cmd打开cmd输入以下命令登录数据库。

c 复制代码
sqlplus / as sysdba

输入以下命令,此处设置归档日志大小为4g,可根据实际进行调整。为不影响复制,没有添加注释,有需要的可以自行百度含义。

bash 复制代码
SQL> startup mount  
SQL> conn / as sysdba  
SQL> select * from v$recovery_file_dest;  
SQL> alter system set db_recovery_file_dest_size=4G;
SQL> alter database open;  

完成后重启即可解决问题。

2.控制文件版本号不一致

1.首先尝试修复控制文件。

通过RMAN命令。一般数据库控制文件位于\app\chadmini\oradata\orcl目录下,在cmd中按照命令依次恢复,此处路径需要根据控制文件的位置调整。

bash 复制代码
rman target
rman>shutdown immediate
startup nomount
Restorecontrolfile from 'D:\app\chadmini\oradata\orcl\CONTROL01.CTL'

完成以上操作后,对数据库进行重启,如还是无法启动,可以确认当前所有控制文件均出现问题,开始重建控制文件。

2.重建控制文件

重建控制文件,按照以下步骤重建,重建前对文件进行备份。笔者控制文件位于D:\app\chadmini\oradata\orcl下,数据库文件名称WXSL.DBF为故下方命令均以此目录为示范。其中文件及路径根据具体数据库文件调整,重建完成后重新启动数据库,重新配置监听即可。对应的数据库文件和名称如图所示。

按照以下命令逐步执行,注意;即命令结束的位置。

bash 复制代码
sqlplus /NOLOG;
conn / as sysdba;
shutdown immediate;
startup nomount;
CREATE CONTROLFILE REUSE DATABASE "orcl" NORESETLOGS NOARCHIVELOG
            MAXLOGFILES 16
            MAXDATAFILES 100
            MAXINSTANCES 2
            MAXLOGHISTORY 453
            LOGFILE
            GROUP 1'D:\app\chadmini\oradata\orcl\REDO01.LOG' SIZE 50M,
            GROUP 2'D:\app\chadmini\oradata\orcl\REDO02.LOG' SIZE 50M,
            GROUP 3'D:\app\chadmini\oradata\orcl\REDO03.LOG' SIZE 50M
            DATAFILE
            'D:\app\chadmini\oradata\orcl\WXSL.DBF',
            'D:\app\chadmini\oradata\orcl\SYSAUX01.DBF',
            'D:\app\chadmini\oradata\orcl\SYSTEM01.DBF',
            'D:\app\chadmini\oradata\orcl\UNDOTBS01.DBF',
            'D:\app\chadmini\oradata\orcl\USERS01.DBF'
            CHARACTER SET ZHS16GBK;
			
recover database;
Alter database open;
alter tablespace temp
            add tempfile'D:\app\chadmini\oradata\orcl\TEMP01.DBF'
            SIZE 200M REUSE AUTOEXTEND ON MAXSIZE 5G;
相关推荐
BlackWolfSky9 小时前
鸿蒙高级课程笔记2—应用性能优化
笔记·华为·harmonyos
范纹杉想快点毕业9 小时前
从单片机基础到程序框架:全方位技术深度解析
数据库·mongodb
JMchen1239 小时前
Android网络安全实战:从HTTPS到双向认证
android·经验分享·网络协议·安全·web安全·https·kotlin
晚风_END9 小时前
Linux|操作系统|elasticdump的二进制方式部署
运维·服务器·开发语言·数据库·jenkins·数据库开发·数据库架构
devmoon9 小时前
Polkadot SDK 自定义 Pallet Benchmark 指南:生成并接入 Weight
开发语言·网络·数据库·web3·区块链·波卡
熊猫不是猫QAQ9 小时前
想要真正的私密分享?NasChat把NAS变成专属TG,隐私+自由
经验分享
玄同7659 小时前
Python Random 模块深度解析:从基础 API 到 AI / 大模型工程化实践
人工智能·笔记·python·学习·算法·语言模型·llm
掌心向暖RPA自动化9 小时前
影刀RPA如何在网页和桌面软件中实现自动滚动长截图?最好同时支持横向滚动纵向滚动的?
经验分享·自动化·影刀rpa·长截图
数据知道9 小时前
PostgreSQL 故障排查:紧急排查与 SQL 熔断处理(CPU 占用 100% 等情况)
数据库·sql·postgresql
静听山水9 小时前
Redis的Pipeline (管道)
数据库·redis·php