捉虫日志-解决 Oracle ORA-01033 ORACLE initialization or shutdown in progress以及ORA-16038: 日志 3 序列号 535 无法归档

本文详细记录了解决Oracle数据库在启动时出现ORA-01033错误的过程,包括使用SQL*Plus进行数据库的关闭与重启,以及通过清除未归档的日志文件组来修复数据库的状态。

问题

em,em,

windows版本太多,oracle版本太多,

打开vmware虚拟机,打开PL/SQL developer,码农的一天开始了

what 's up,man??

pl/sql developer在疫情复工首日挂了一把,抛出错误:

Oracle ORA-01033 ORACLE initialization or shutdown in progress

 

2020-03-19更正:此办法未彻底解决问题,请转至第二篇博文

https://blog.youkuaiyun.com/wangdonghao137/article/details/104972391

 

环境

本机oracle database:OraDb10g

本机oracle client:OraClient10g,OraClient11g

本机os:win7 64 专业版

 

解决办法

借助网络及自身实践,解决方法如下:

1.打开开始菜单下oracle11g下的sqlplus,(本人尝试用cmd下sqlplus进入sys以sysdba身份登录报错)

2.sqlplus操作如下

/as sysdba登录



SQL*Plus: Release 11.2.0.1.0 Production on 星期一 2月 24 14:58:46 2020

Copyright (c) 1982, 2010, Oracle.  All rights reserved.

请输入用户名:  /as sysdba

连接到:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options

SQL> shutdown immediate
ORA-01109: 数据库未打开


已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup
ORACLE 例程已经启动。

Total System Global Area  935329792 bytes
Fixed Size                  1252280 bytes
Variable Size             301990984 bytes
Database Buffers          624951296 bytes
Redo Buffers                7135232 bytes
数据库装载完毕。
ORA-16038: 日志 3 序列号 535 无法归档
ORA-19809: 超出了恢复文件数的限制
ORA-00312: 联机日志 3 线程 1:
'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO03.LOG'


SQL> shutdown immediate
ORA-01109: 数据库未打开


已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup
ORACLE 例程已经启动。

Total System Global Area  935329792 bytes
Fixed Size                  1252280 bytes
Variable Size             301990984 bytes
Database Buffers          624951296 bytes
Redo Buffers                7135232 bytes
数据库装载完毕。
ORA-16038: 日志 3 序列号 535 无法归档
ORA-19809: 超出了恢复文件数的限制
ORA-00312: 联机日志 3 线程 1:
'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO03.LOG'


SQL> select group#,sequence#,archived,status from v$log;

    GROUP#  SEQUENCE# ARC STATUS
---------- ---------- --- ----------------
         1        538 NO  CURRENT
         3        535 NO  INACTIVE
         2        537 NO  INACTIVE

SQL> alter database clear unarchived logfile group 3;

数据库已更改。

SQL> shutdown immediate
ORA-01109: 数据库未打开


已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup
ORACLE 例程已经启动。

Total System Global Area  935329792 bytes
Fixed Size                  1252280 bytes
Variable Size             301990984 bytes
Database Buffers          624951296 bytes
Redo Buffers                7135232 bytes
数据库装载完毕。
数据库已经打开。
SQL>

至此,ok,解决了。

 

解决办法要点说明

ORA-16038: 日志 3 序列号 535 无法归档。这个序列号535是关键。

select group#,sequence#,archived,status from v$log;语句找出group为3

SQL> select group#,sequence#,archived,status from v$log;

    GROUP#  SEQUENCE# ARC STATUS
---------- ---------- --- ----------------
         1        538 NO  CURRENT
         3        535 NO  INACTIVE
         2        537 NO  INACTIVE

 

关键语句

alter database clear unarchived logfile group 3;

 

ok,打开pl/sql developer已应用程序账号密码登陆正常,打道回府。

 

教训

回想起来,估计是笔记本点击睡眠时没有正常关闭虚拟机,导致虚拟机中oracle 的redo文件损坏。

 

Oracle数据库错误 `ORA-01033: Oracle initialization or shutdown in progress` 通常发生在尝试连接数据库时,数据库正在进行启动或关闭操作。此错误表明数据库实例尚未完全打开或正在关闭,导致连接请求无法正常处理。 ### 错误原因 - **数据库未完全启动**:当数据库处于启动过程中的某个阶段(如`NOMOUNT`或`MOUNT`)时,尚未进入`OPEN`状态,此时用户尝试连接将触发此错误。 - **数据库正在关闭**:在执行关闭操作时,数据库会拒绝新的连接请求,以确保数据一致性。 - **服务未启动**:在某些情况下,数据库服务可能未启动,导致连接请求无法处理。 - **监听器问题**:如果监听器配置不正确或未启动,也可能导致此错误。 ### 解决方案 #### 1. 确认数据库状态 使用`SQL*Plus`或`SVRMGRL`(在较新版本中已被`SQL*Plus`取代)检查数据库实例状态: ```sql -- 以sysdba身份登录 sqlplus / as sysdba -- 查看数据库状态 SELECT status FROM v$instance; ``` 如果状态为`STARTED`或`MOUNTED`,则表示数据库尚未完全打开。 #### 2. 启动数据库 如果数据库尚未打开,执行以下命令启动数据库: ```sql -- 如果数据库处于NOMOUNT状态 ALTER DATABASE MOUNT; -- 如果数据库处于MOUNT状态 ALTER DATABASE OPEN; ``` #### 3. 检查监听器状态 确保Oracle监听器已启动,可以使用以下命令检查监听器状态: ```bash lsnrctl status ``` 如果监听器未运行,使用以下命令启动监听器: ```bash lsnrctl start ``` #### 4. 检查服务状态 在Windows系统中,检查Oracle服务是否启动。主要服务包括: - `OracleService<SID>` - `OracleOraDB<version>TNSListener` 确保这些服务处于运行状态。 #### 5. 检查日志文件 查看`alert_<SID>.log`文件,通常位于`$ORACLE_BASE/diag/rdbms/<SID>/<SID>/trace/`目录下,以获取更多关于启动或关闭过程的详细信息[^1]。 #### 6. 重新启动数据库 如果数据库长时间处于中间状态,可以尝试关闭并重新启动数据库: ```sql -- 关闭数据库 SHUTDOWN IMMEDIATE; -- 启动数据库 STARTUP; ``` ### 示例代码:检查数据库状态并启动 ```sql -- 登录并检查状态 sqlplus / as sysdba SELECT status FROM v$instance; -- 如果状态为STARTED,则挂载数据库 ALTER DATABASE MOUNT; -- 打开数据库 ALTER DATABASE OPEN; ``` ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值