上一篇,给出了Ora-01033解决办法,但是,并没有彻底解决,几次重启关机后仍然出现Ora-01033反复出现错误。
现给出终极解决办法。
发现问题-探索根源
Ora-01033反复出现,尝试alter system switch logfile 命令,结果此命令长时间未结束。
Ctrl+c后出现ORA-00257错误。
进入Oracle所在服务器,“D:\oracle\product\10.2.0\db_1\flash_recovery_area\ORCL”发现此文件夹竟然应经达到2GB了
查一查归档日志空间大小
SQL*Plus: Release 11.2.0.1.0 Production on 星期五 3月 13 17:05:56 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> show parameter log_archive_dest;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
log_archive_dest string
log_archive_dest_1 string
log_archive_dest_10 string
log_archive_dest_2 string
log_archive_dest_3 string
log_archive_dest_4 string
log_archive_dest_5 string
log_archive_dest_6 string
log_archive_dest_7 string
log_archive_dest_8 string
log_archive_dest_9 string
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
log_archive_dest_state_1 string enable
log_archive_dest_state_10 string enable
log_archive_dest_state_2 string enable
log_archive_dest_state_3 string enable
log_archive_dest_state_4 string enable
log_archive_dest_state_5 string enable
log_archive_dest_state_6 string enable
log_archive_dest_state_7 string enable
log_archive_dest_state_8 string enable
log_archive_dest_state_9 string enable
SQL> archive log list
数据库日志模式 存档模式
自动存档 启用
存档终点 USE_DB_RECOVERY_FILE_DEST
最早的联机日志序列 543
下一个存档日志序列 543
当前日志序列 545
SQL> select * from v$flash_recovery_area_usage;
FILE_TYPE PERCENT_SPACE_USED PERCENT_SPACE_RECLAIMABLE NUMBER_OF_FILES
------------ ------------------ ------------------------- ---------------
CONTROLFILE 0 0 0
ONLINELOG 0 0 0
ARCHIVELOG 99.99 0 133
BACKUPPIECE 0 0 0
IMAGECOPY 0 0 0
FLASHBACKLOG 0 0 0
已选择6行。
SQL> show parameter recover
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest string D:\oracle\product\10.2.0\db_1/
flash_recovery_area
db_recovery_file_dest_size big integer 2G
recovery_parallelism integer 0
SQL>
其中 ARCHIVELOG 99.99
并且db_recovery_file_dest_size big integer 2G
根源发现:根源是归档日志已满。
解决问题
打开cmd,使用rman进行归档日志清理。
Microsoft Windows [版本 6.1.7601]
版权所有 (c) 2009 Microsoft Corporation。保留所有权利。
C:\Users\Administrator>set ORACLE_SID=ORCL
C:\Users\Administrator>rman target /
恢复管理器: Release 11.2.0.1.0 - Production on 星期五 3月 13 17:16:06 2020
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
恢复管理器与 TARGET 数据库不兼容: 要求 RMAN 8.0.4.0 到 10.2.0.0
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-00554: 内部恢复管理器程序包初始化失败
RMAN-06429: TARGET数据库与该版本的 RMAN 不兼容
C:\Users\Administrator>cd D:\oracle\product\10.2.0\client_1\BIN
C:\Users\Administrator>rman target /
恢复管理器: Release 11.2.0.1.0 - Production on 星期五 3月 13 17:18:07 2020
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
恢复管理器与 TARGET 数据库不兼容: 要求 RMAN 8.0.4.0 到 10.2.0.0
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-00554: 内部恢复管理器程序包初始化失败
RMAN-06429: TARGET数据库与该版本的 RMAN 不兼容
C:\Users\Administrator>cd D:\oracle\product\10.2.0\client_1\BIN
C:\Users\Administrator>d:
D:\oracle\product\10.2.0\client_1\BIN>rman target /
恢复管理器: Release 10.2.0.1.0 - Production on 星期五 3月 13 17:21:10 2020
Copyright (c) 1982, 2005, Oracle. All rights reserved.
连接到目标数据库: ORCL (DBID=1453266328)
RMAN>
因为本机安装了多个Oracle版本导致rman打开不兼容,重新打开cmd窗口,设置实例名后,直接rman target /会找到11gclient的rman,需要手动cd切换到10g的目录cd D:\oracle\product\10.2.0\client_1\BIN下再执行rman taget /
核心步骤
在rman中进行归档日志删除。
登录rman,检查一些无用的archivelog
下面步骤参考了:https://blog.51cto.com/pimg2005/857879,感谢作者。
- 命令>crosscheck archivelog all; (列出归档日志信息)
- 命令>delete expired archivelog all; (将上述列出的归档日志删除)
- 命令>delete archivelog until time 'sysdate-1' ; 删除截止到前一天的所有archivelog
- 命令>exit;
部分截图如下
再次查看占用率,已经降低到0.12%了。
至此,问题解决。