C:/>sqlplus / as sysdba
SQL*Plus: Release 10.2.0.1.0 - Production on 星期四 2月 25 10:49:58 2010
Copyright (c) 1982, 2005, Oracle. All rights reserved.
连接到:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
SQL> select * from scott.emp;
select * from scott.emp *
第 1 行出现错误:
ORA-01219: 数据库未打开: 仅允许在固定表/视图中查询
SQL> startup database open;
SP2-0714: 无效的 STARTUP 选项组合
SQL> startup open;
ORA-01081: 无法启动已在运行的 ORACLE - 请首先关闭它
SQL> startup nomount;
ORA-01081: 无法启动已在运行的 ORACLE - 请首先关闭它
SQL> shutdown immediate;
ORA-01109: 数据库未打开
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup nomount;
ORACLE 例程已经启动。
Total System Global Area 805306368 bytes
Fixed Size 1251532 bytes
Variable Size 427820852 bytes
Database Buffers 369098752 bytes
Redo Buffers 7135232 bytes
SQL> alter database mount;
数据库已更改。
SQL> alter database open;
alter database open 第 1 行出现错误:
ORA-16038:日志 3 序列号 90 无法归档
ORA-19809: 超出了恢复文件数的限制
ORA-00312: 联机日志 3 线程 1:
'D:/ORACLE/PRODUCT/10.2.0/DB_1/ORADATA/ORCL/ONLINE LOG/O1_MF_3_5NFPBVRH_.LOG'
ORA-00312: 联机日志 3 线程 1:
'D:/ORACLE/PRODUCT/10.2.0/DB_1/FLASH_RECOVERY_AREA /ORCL/ONLINELOG/O1_MF_3_5NFPBWZ3_.LOG'
ORA-00312: 联机日志 3 线程 1:
'D:/ORACLE/PRODUCT/10.2.0/DB_1/ORADATA/ORCL/ONLINE LOG/O1_MF_3_REDO.LOG'
SQL> alter database clear unarchived logfile 'D:/ORACLE/PRODUCT/10.2.0/DB_1/ORADATA/ORCL/ONLINELOG/O1_MF_3_5NFPBVRH_.LOG';
alter database clear unarchived logfile 'D:/ORACLE/PRODUCT/10.2.0/DB_1/ORADATA/ORCL/ONLINELOG/O1_MF_3_5NFPBVRH_.LOG'
*
第 1 行出现错误:
ORA-01514: 日志说明中出现错误: 没有此类日志
ORA-01517: 日志成员:
'D:/ORACLE/PRODUCT/10.2.0/DB_1/ORADATA/ORCL/ONLINE LOG/O1_MF_3_5NFPBVRH_.LOG'
SQL> alter database drop logfile member 'D:/ORACLE/PRODUCT/10.2.0/DB_1/ORADATA/ORCL/ONLINELOG/O1_MF_3_5NFPBVRH_.LOG';
数据库已更改。
SQL> alter database drop logfile member 'D:/ORACLE/PRODUCT/10.2.0/DB_1/FLASH_RECOVERY_AREA/ORCL/ONLINELOG/O1_MF_3_5NFPBWZ3_.LOG';
alter database drop logfile member 'D:/ORACLE/PRODUCT/10.2.0/DB_1/FLASH_RECOVERY_AREA/ORCL/ONLINELOG/O1_MF_3_5NFPBWZ3_.LOG'
*
第 1 行出现错误:
ORA-00361: cannot remove last log member string for group string
D:/ORACLE/PRODUCT/10.2.0/DB_1/FLASH_RECOVERY_AREA/ ORCL/ONLINELOG/O1_MF_3_5NFPBWZ3_.LOG (? 3)
ORA-00361: cannot remove last log member string for group string
Cause: An attempt has been made to remove the last member of a log file group.
Action: If desired, delete the entire log, by using DROP LOGFILE.
alter database drop logfile 'D:/ORACLE/PRODUCT/10.2.0/DB_1/FLASH_RECOVERY_AREA /ORCL/ONLINELOG/O1_MF_3_5NFPBWZ3_.LOG' *
SQL> alter database drop logfile 'D:/ORACLE/PRODUCT/10.2.0/DB_1/FLASH_RECOVERY_ AREA/ORCL/ONLINELOG/O1_MF_3_5NFPBWZ3_.LOG';
第 1 行出现错误:
ORA-00350: 日志 3 (线程 1) 中需要归档
ORA-00312: 联机日志 3 线程 1:
'D:/ORACLE/PRODUCT/10.2.0/DB_1/FLASH_RECOVERY_AREA /ORCL/ONLINELOG/O1_MF_3_5NFPBWZ3_.LOG'
SQL> alter database drop logfile group 3;
alter database drop logfile group 3
第1 行出现错误:
ORA-00350: ?? 3 (?? orcl ???, ?? 1) ????
ORA-00312: ???? 3 ?? 1:
'D:/ORACLE/PRODUCT/10.2.0/DB_1/FLASH_RECOVERY_AREA/ORCL/ONLINELOG/O1_MF_3_5NFPBWZ3_.LOG'
删不掉,提示第三组联机日志需要归档。
d.归档联机日志
SQL> archive log start;
已处理的语句
SQL> archive log next;
ORA-16014: 日志3 的序列号 90 未归档, 没有可用的目的地 --说明已经归档的文件大小超过归档的最大设置。
ORA-00312: 联机日志 2 线程 1: 'D:/ORACLE/PRODUCT/10.2.0/DB_1/FLASH_RECOVERY_AREA /ORCL/ ONLINELOG/O1_MF_3_5NFPBWZ3_.LOG'
SQL> show parameter db_recovery
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest string D:/oracle/product/10.2.0/flash_recovery_area
db_recovery_file_dest_size big integer 2G
SQL> alter system set db_recovery_file_dest_size=3G scope=both;
系统已更改。
(1).检查flash recovery area的使用情况:
SQL> select * from v$flash_recovery_area_usage;
FILE_TYPE PERCENT_SPACE_USED PERCENT_SPACE_RECLAIMABLE NUMBER_OF_FILES
------------ ------------------ ------------------------- ---------------
CONTROLFILE .33 0 1
ONLINELOG 7.32 0 3
ARCHIVELOG 25.06 0 35
BACKUPPIECE 67.69 0 4
IMAGECOPY 0 0 0
FLASHBACKLOG 0 0 0
已选择6行。 .
计算flash recovery area已经占用的空间:
SQL> select sum(percent_space_used)*3/100 from v$flash_recovery_area_usage; SUM(PERCENT_SPACE_USED)*3/100
------------ ------------------ ------------------------- ---------------
3.012
可以看到,这里已经有3.012G使用了,这说明我们刚开始设置的db_recovery_file_dest_size=2G不足,导致online redo log无法归档,在这里,我们通过设置db_recovery_file_dest_size参数,增大了flash recovery area来解决这个问题。(3).也可以在rman中通过删除flash recovery area中不必要的备份来释放flash recovery area空间来解决这个问题:
(1). delete obsolete;
(2). crosscheck backupset; delete expired backupset;
这里事先手工把归档的文件删除一部分,然后用rman 用上面的 命令把flash recovery area 实际空间变小。问题就解决了。
本文记录了在Oracle数据库中遇到的在线日志无法归档的问题及解决过程。详细介绍了如何通过调整db_recovery_file_dest_size参数值来增加Flash Recovery Area的大小,以及如何在RMAN中清理过期备份以释放空间。
660

被折叠的 条评论
为什么被折叠?



