<p><br>
ORA-16014错误和flash空间满<br><br>
昨天创建一个表 create table user as select name from t_userinfo<br>
t_userinfo 这个表很大. 过了一段时间一直在读写硬盘.持续了有3个小时.<br>
PL/SQL DEVELOPER 也无法中断.<br>
通过查v$sqlarea 的sql_fulltext 找到了 sql_Id=gutz8yut71m22<br>
然后在v$session找到了 session_id=646 serial#=57<br>
然后alter system kill session '646,57' 无法删除.<br>
查v$session_wait 的event 发现是log siwtch<br>
shutdown immediate 也无法关闭.只好在windows下关闭了oracle服务.<br>
再次启动时候,很怕数据库做回滚操作,因为我已经把归档日志删除了1.1G,也害怕无法恢复.<br><br><br><br><br>
1.问题以及解决过程<br><br>
SQL> select status from v$instance;<br><br>
STATUS<br>
------------<br>
MOUNTED<br><br>
SQL> alter database open;<br>
alter database open<br>
*<br>
第 1 行出现错误:<br>
ORA-16014: 日志 2 的序列号 27 未归档, 没有可用的目的地<br>
ORA-00312: 联机日志 2 线程 1:<br>
'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO02.LOG'<br><br><br>
SQL> show parameter db_recovery_file<br><br>
NAME TYPE VALUE<br>
------------------------------------ ----------- ------------------------------<br>
db_recovery_file_dest string D:\oracle\product\10.2.0/flash<br>
_recovery_area<br>
db_recovery_file_dest_size big integer 2G<br><br>
SQL> alter system archive log current;<br>
alter system archive log current<br>
*<br>
第 1 行出现错误:<br>
ORA-01109: 数据库未打开<br><br><br>
SQL> alter system switch logfile;<br>
alter system switch logfile<br>
*<br>
第 1 行出现错误:<br>
ORA-01109: 数据库未打开<br><br>
SQL> show parameter db_recovery<br><br>
NAME TYPE VALUE<br>
------------------------------------ ----------- ------------------------------<br>
db_recovery_file_dest string C:\oracle\product\10.2.0/flash<br>
_recovery_area<br>
db_recovery_file_dest_size big integer 2G<br><br>
SQL> alter system set db_recovery_file_dest_size=3G scope=both;<br><br>
系统已更改。<br><br>
SQL> alter database open;<br><br>
数据库已更改。<br><br>
(1).检查flash recovery area的使用情况:<br><br>
SQL> select * from v$flash_recovery_area_usage;<br><br>
FILE_TYPE PERCENT_SPACE_USED PERCENT_SPACE_RECLAIMABLE NUMBER_OF_FILES<br>
------------ ------------------ ------------------------- ---------------<br>
CONTROLFILE 0 0 0<br>
ONLINELOG 0 0 0<br>
ARCHIVELOG 7.23 0 48<br>
BACKUPPIECE 0 0 0<br>
IMAGECOPY 0 0 0<br>
FLASHBACKLOG 0 0 0<br><br>
已选择6行。<br><br>
SQL><br><br>
(2).计算flash recovery area已经占用的空间:<br><br>
SQL> select sum(percent_space_used)*3/100 from v$flash_recovery_area_usage;<br><br>
SUM(PERCENT_SPACE_USED)*3/100<br>
-----------------------------<br>
2.1369<br><br>
也可以用下面的语句检查<br>
SELECT substr(name, 1, 30) name, space_limit AS quota,space_used AS used,space_reclaimable <br><br>
AS reclaimable, number_of_files AS files <br>
FROM v$recovery_file_dest ;<br><br>
create table as 语句产生了很多归档导致 online redo log无法归档,在这里,我们通过设置<br><br>
db_recovery_file_dest_size参数,增大了flash recovery area来解决这个问题。<br><br>
(3).也可以通过删除flash recovery area中不必要的备份来释放flash recovery area空间来解决这个问<br><br>
题:<br><br>
c:\RMAN <br>
rman> connect target sys/pwd@test<br>
(1). delete obsolete;<br>
(2). crosscheck backupset; delete expired backupset;<br>
(3). crosscheck archivelog all; delete expired archivelog all;<br>
Oracle指出,我们可以通过执行以下命令:<br>
RMAN> backup recovery area;<br>
将闪回区的内容备份到第三方介质,也同样可以解决这个问题。<br>
是以为记。</p>
ORA-16014错误和flash空间满<br><br>
昨天创建一个表 create table user as select name from t_userinfo<br>
t_userinfo 这个表很大. 过了一段时间一直在读写硬盘.持续了有3个小时.<br>
PL/SQL DEVELOPER 也无法中断.<br>
通过查v$sqlarea 的sql_fulltext 找到了 sql_Id=gutz8yut71m22<br>
然后在v$session找到了 session_id=646 serial#=57<br>
然后alter system kill session '646,57' 无法删除.<br>
查v$session_wait 的event 发现是log siwtch<br>
shutdown immediate 也无法关闭.只好在windows下关闭了oracle服务.<br>
再次启动时候,很怕数据库做回滚操作,因为我已经把归档日志删除了1.1G,也害怕无法恢复.<br><br><br><br><br>
1.问题以及解决过程<br><br>
SQL> select status from v$instance;<br><br>
STATUS<br>
------------<br>
MOUNTED<br><br>
SQL> alter database open;<br>
alter database open<br>
*<br>
第 1 行出现错误:<br>
ORA-16014: 日志 2 的序列号 27 未归档, 没有可用的目的地<br>
ORA-00312: 联机日志 2 线程 1:<br>
'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO02.LOG'<br><br><br>
SQL> show parameter db_recovery_file<br><br>
NAME TYPE VALUE<br>
------------------------------------ ----------- ------------------------------<br>
db_recovery_file_dest string D:\oracle\product\10.2.0/flash<br>
_recovery_area<br>
db_recovery_file_dest_size big integer 2G<br><br>
SQL> alter system archive log current;<br>
alter system archive log current<br>
*<br>
第 1 行出现错误:<br>
ORA-01109: 数据库未打开<br><br><br>
SQL> alter system switch logfile;<br>
alter system switch logfile<br>
*<br>
第 1 行出现错误:<br>
ORA-01109: 数据库未打开<br><br>
SQL> show parameter db_recovery<br><br>
NAME TYPE VALUE<br>
------------------------------------ ----------- ------------------------------<br>
db_recovery_file_dest string C:\oracle\product\10.2.0/flash<br>
_recovery_area<br>
db_recovery_file_dest_size big integer 2G<br><br>
SQL> alter system set db_recovery_file_dest_size=3G scope=both;<br><br>
系统已更改。<br><br>
SQL> alter database open;<br><br>
数据库已更改。<br><br>
(1).检查flash recovery area的使用情况:<br><br>
SQL> select * from v$flash_recovery_area_usage;<br><br>
FILE_TYPE PERCENT_SPACE_USED PERCENT_SPACE_RECLAIMABLE NUMBER_OF_FILES<br>
------------ ------------------ ------------------------- ---------------<br>
CONTROLFILE 0 0 0<br>
ONLINELOG 0 0 0<br>
ARCHIVELOG 7.23 0 48<br>
BACKUPPIECE 0 0 0<br>
IMAGECOPY 0 0 0<br>
FLASHBACKLOG 0 0 0<br><br>
已选择6行。<br><br>
SQL><br><br>
(2).计算flash recovery area已经占用的空间:<br><br>
SQL> select sum(percent_space_used)*3/100 from v$flash_recovery_area_usage;<br><br>
SUM(PERCENT_SPACE_USED)*3/100<br>
-----------------------------<br>
2.1369<br><br>
也可以用下面的语句检查<br>
SELECT substr(name, 1, 30) name, space_limit AS quota,space_used AS used,space_reclaimable <br><br>
AS reclaimable, number_of_files AS files <br>
FROM v$recovery_file_dest ;<br><br>
create table as 语句产生了很多归档导致 online redo log无法归档,在这里,我们通过设置<br><br>
db_recovery_file_dest_size参数,增大了flash recovery area来解决这个问题。<br><br>
(3).也可以通过删除flash recovery area中不必要的备份来释放flash recovery area空间来解决这个问<br><br>
题:<br><br>
c:\RMAN <br>
rman> connect target sys/pwd@test<br>
(1). delete obsolete;<br>
(2). crosscheck backupset; delete expired backupset;<br>
(3). crosscheck archivelog all; delete expired archivelog all;<br>
Oracle指出,我们可以通过执行以下命令:<br>
RMAN> backup recovery area;<br>
将闪回区的内容备份到第三方介质,也同样可以解决这个问题。<br>
是以为记。</p>
本文记录了解决因flash recovery area空间不足导致的ORA-16014错误的过程,包括调整参数db_recovery_file_dest_size及清理不必要的备份文件。
614

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



