db_recovery_file_dest_size 100%used引发的web页面故障

原创 2016年08月31日 15:10:18

故障内容:

公司的某个web页面突然无法打开,显示:

 Load xx version failed, please check the database user or password is corrent, or column cversion in table tk_table is ok(select cversion from tk_table ),System start failed! 


排查问题

排查的时候从故障看,第一眼就看出是数据库连接出的问题,登录数据库服务器后,首先查看了服务器的连接数是不是满了,看看数据库进程是不是在。很显然这2种情况很快排除不是该原因造成的。

登录oracle
登录oracle确认数据库是可以登录的。

1、是不是密码过期?
[oracle@s0086-gz ~]$ sqlplus /nolog

SQL*Plus: Release 11.2.0.1.0 Production on Wed Aug 31 14:35:42 2016

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

SQL> conn xx as sysdba
Enter password: 
Connected.
SQL> select * from dba_profiles s where s.profile='DEFAULT' and  resource_name='PASSWORD_LIFE_TIME';


PROFILE       RESOURCE_NAMERESOURCE
------------------------------ -------------------------------- --------
LIMIT
----------------------------------------
DEFAULT       PASSWORD_LIFE_TIMEPASSWORD
UNLIMITED

密码设置的是不过期的,排除这个问题。

2、提示表的列不存在?
column cversion in table tk_table is ok(select cversion from tk_table 
切换到该web使用的用户,比如eclogoy
登录省略...
SQL> select TABLE_NAME from user_tables where TABLE_NAME='TK_TABLE';

TABLE_NAME
------------------------------
TK_TABLE
SQL> desc tk_table ;
 Name   Null?    Type
 ----------------------------------------- -------- ----------------------------
 COMPANYNAME    VARCHAR2(100)
 LICENSE    VARCHAR2(100)
....

表没有问题。

到这里根据错误提示,好像都是错误提示的那样有问题,排查了都是正常,那会是什么原因导致的呢?

或许是被错误提示给带进了直接排查oracle的问题,那有没有可能是程序本身出问题了?
查看程序错误日志:
错误ORA-19815: db_recovery_file_dest_size 100%used 

归档日志把闪回恢复区使用完了(注意:这里和服务器的磁盘空间不一样,服务器磁盘并没有满)
查看闪回恢复区的大小:
SQL>  show parameter db_recovery_file_dest_size;

NAME     TYPE VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest_size     big integer 50G
检查flash recovery area的使用情况(贴图是清除后的):
SQL> select * from v$flash_recovery_area_usage;
FILE_TYPE	     PERCENT_SPACE_USED PERCENT_SPACE_RECLAIMABLE  NUMBER_OF_FILES
-------------------- ------------------ -----------------------------------------------------------------------------------------------
CONTROL FILE			      0 			0						0
REDO LOG			      0 			0						      0
ARCHIVED LOG			   2.6 			0						      3
....
查看已经占用的空间大小:
SQL> select sum(percent_space_used)*3/100 from v$flash_recovery_area_usage;
SUM(PERCENT_SPACE_USED)*3/100
-----------------------------
			 .078


已经确认了是闪回区db_recovery_file_dest_size 被用完的问题了,那我们就清理下过期的归档日志:
退出后切换到RMAN(Recovery Manager)模式:
[oracle@s0086-gz ~]$ rman target /
Recovery Manager: Release 11.2.0.1.0 - Production on Wed Aug 31 15:00:54 2016

Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.

connected to target database: ECOLOGY (DBID=4086534050)

RMAN> crosscheck archivelog all;  #查看所有的归档日志
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=2000 device type=DISK
validation succeeded for archived log
archived log file name=/your's path/archivelog/2016_08_31/o1_mf_1_122_cwdm1qv9_.arc RECID=120 STAMP=921323835
validation succeeded for archived log
archived log file name=/your's path/archivelog/2016_08_31/o1_mf_1_123_cwdm1v9l_.arc RECID=122 STAMP=921323839
validation succeeded for archived log
archived log file name=/your's path/archivelog/2016_08_31/o1_mf_1_124_cwdm1v9t_.arc RECID=121 STAMP=921323837
Crosschecked 3 objects
RMAN> delete expired archivelog all; #删除无效的archive log

released channel: ORA_DISK_1
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=2000 device type=DISK
specification does not match any archived log in the repository
RMAN> DELETE ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-7';#删除7天前的archive log(这里也可以用:delete archivelog until time 'SYSDATE-7')

released channel: ORA_DISK_1
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=2000 device type=DISK

清理后,web页面恢复访问。


疑问:
是否可以设置参数定期清理过期归档日志?

版权声明:本文为博主原创文章,未经博主允许不得转载。

自己也遇到了-db_recovery_file_dest_size 修改大一点

今天给客户测试问题,让客户把数据发过来了。解压缩后一看,他们还是用的oracle 815版本的(他们exp导出时,带了导出日志,从导出日志中看出来是oracle 815版本的),不过没有关系,低版本的...

db_recovery_file_dest_size大小查看,修改

SQL> show parameter db_recover; NAME                                 TYPE ----------------------...

如何釋放 DB_RECOVERY_FILE_DEST_SIZE

oracle默認安裝之後,如何沒有手動設置歸檔路徑(alter system set log_archive_dest_1="LOCATION=/oracle/oracle/archive" scop...

db_recovery_file_dest_size空间满的问题

db_recovery_file_dest_size空间满的问题 http://cuuzhang.blog.163.com/blog/static/608115292010113094912462/...
  • orion61
  • orion61
  • 2011年08月10日 11:43
  • 771

恢复db_recovery_file_dest_size参数为默认值“0”方法

db_recovery_file_dest_size参数的作用是限制闪回恢复区可存放文件总大小。一旦将参数db_recovery_file_dest_size设置为非零值后“很难”恢复为默认值“0”。...

ORA-19815: WARNING: db_recovery_file_dest_size of 2147483648 bytes is 87.41% used

查看文章 ORA-19815: WARNING: db_recovery_file_dest_size of 2147483648 bytes is 87.41% used 2010-08-...

ORA-19815: WARNING: db_recovery_file_dest_size of 5218762752 bytes is 100.00% used, and has 0 remain

今天一个同学问的一个有关数据库的问题,我看了一下alert日志,发现有以下报错信息。现记录下来,以备后用 ORA-19815: WARNING: db_recovery_file_dest_size...

db_recovery_file_dest_size设置小 导致联机日志不能归档 Oracle不能起来

一、转载自  http://blog.sina.com.cn/s/blog_7282b74b0100tu3d.html ORACLE打开时提示联机日志无法归档(2011-07-18 11:48:06...

db_recovery_file_dest_size 修改大一点及删除归档日志

今天给客户测 试问题,让客户把数据发过来了。解压缩后一看,他们还是用的oracle 815版本的(他们exp导出时,带了导出日志,从导出日志中看出来是oracle 815版本的),不过没有关系,低版本...
  • e_wsq
  • e_wsq
  • 2017年11月19日 21:23
  • 110

spfile 、pfile、db启动顺序 SQL> show parameter db_recovery_file_dest_size; SQL> show parameter spfile

 pfile, spfile,参数文件,服务器参数文件1、   PFILE和SPFILE定义PFILE:文本参数文件(TEXT PARAMETER FILE)又叫静态参数文件,ASCII文本文件(...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:db_recovery_file_dest_size 100%used引发的web页面故障
举报原因:
原因补充:

(最多只允许输入30个字)