ORACLE 11G DB RAC ORA-00257archiver error解决办法

ORA-00257archiver error解决办法

1.之前有处理单机过oracle 11.2.0.4归档日志磁盘空间不足的问题 ,但是没有处理过ORACLE RAC的归档日志磁盘空间不足的问题

所以没有预想到会是出现asm磁盘空间不足的议题

Oracle数据库是目前业界最常用的大型数据库系统,我在单机ORACLE的实际项目中有遇到出现ORA-00257错误(空间不足错误),

通过查找资料,发现绝大部分说这是由于归档日志太多,占用了全部的硬盘剩余空间导致的,可通过简单删除日志或加大存储空间就能够解决。但是我在Oracle11g RAC上两个RAC节点发现,它们的存储空间都还有很大,却也报这个错误,经过大半天的折腾,发现原来是Oracle11g RAC中的ASM磁盘空间不足导致的。

操作系统CentOS 6.5 x86-64Linux

数据库Oracle 11.2.0.4.0

2.问题现象

数据库系统已经运行了一年多,在5月8号开发同事用应用账号连接数据库后,发现无法连接登入,并且出现ORA-00257:archive error.connect internal only,until freed 错误。

提示归档错误,通过查找ORACLE错误代码,解释为硬盘空间不足,需要删除归档日志增加空间,但是服务器两个节点可用空间都还有1.4T,目前只用了10GB左右,这是为什么呢?

且在5月8号用rman形式删除清理系统100天以前的归档日志以后好了,没想到第二天5月9号又出现了。没有理由啊,一天的归档日志大过一百天的归档日志,所以我就质疑数据库报错的准确性,认为这只是表面的归档日志空间已满,实质性的问题却还不知道。

3.诊断过程:

因为数据库不是我架设的,对oracle也不太熟,所以不知道归档日志放置的路径,通过语句查找也得到的是个+ARC/back/archivelog/**之类的,但是我就是想破脑袋,用find的方式也找不到具体存放路径。

a.查看数据库REDOLOG情况

[[email protected]~]$ sqlplus / as sysdba

SQL> connect / as sysdba

SQL> select * from v$log;

GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARC STATUS FIRST_CHANGE#FIRST_TIME

---------- ---------- ---------- ---------- ---------- ------------------------------------------ --------------

1 1 101 52428800 1 NO CURRENT 3621973 9-5月 -17

2 1 99 52428800 1 NO INACTIVE 3600145 9-5月 -17

3 1 100 52428800 1 NO INACTIVE 3611932 9-5月 -17

发现ARC状态为NO,表示系统没法自动做归档。

b.查看Oracle数据库后台归档服务进程

[[email protected]~ ]ps -ef | grep oracle

发现grid       3081      1  0 10:14 ?        00:00:00 oracle+ASM1 (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))

一个节点如上述服务正常,但另外一个节点却LOCAL=NO的类似情况,反正服务不正常

c.查看FLASH_RECOVERY_AREA空间中各部分使用情况

SQL> select * from v$recovery_file_dest;

NAME

--------------------------------------------------------------------------------

SPACE_LIMIT SPACE_USED SPACE_RECLAIMABLE NUMBER_OF_FILES

----------- ---------- ----------------- ---------------

+BACKUP

1.2885E+11  484442112       0       5

##注:空间大把的有

SQL> select * from v$flash_recovery_area_usage;

FILE_TYPE     PERCENT_SPACE_USED PERCENT_SPACE_RECLAIMABLE

-------------------- ------------------ -------------------------

NUMBER_OF_FILES

---------------

CONTROL FILE    .04 0 1

REDO LOG    .33 0 4

ARCHIVED LOG      0 0 0

FILE_TYPE     PERCENT_SPACE_USED PERCENT_SPACE_RECLAIMABLE

-------------------- ------------------ -------------------------

NUMBER_OF_FILES

---------------

BACKUP PIECE      0 0 0

IMAGE COPY      0 0 0

FLASHBACK LOG      0 0 0

FILE_TYPE     PERCENT_SPACE_USED PERCENT_SPACE_RECLAIMABLE

-------------------- ------------------ -------------------------

NUMBER_OF_FILES

---------------

FOREIGN ARCHIVED LOG      0 0 0

7 rows selected.

发现ARCHIVELOG、BACKUPPIRCR都不大,就是0,没什么占用率,这样FLASH_RECOVERY_AREA空间的空间还大把的有。

因为之前报错时,不知道如何处理问题,就像直接shutdown immediate一个节点看看,没想到半天没任何反应,就直接使用shutdown abort强行关闭,该节点出现下列节点挂载实例报问题

d.故障节点挂载实例报错:

SQL> startup

ORACLE instance started.

Total System Global Area  413372416 bytes

Fixed Size                  2253784 bytes

Variable Size             327158824 bytes

Database Buffers           79691776 bytes

Redo Buffers                4268032 bytes

Database mounted.

ORA-03113: end-of-file on communication channel

Process ID: 2420

Session ID: 1 Serial number: 5

e.查找资料发现,下面做法可行:

SQL> conn / as sysdba

Connected to an idle instance.

SQL> startup nomount

ORACLE instance started.

Total System Global Area  413372416 bytes

Fixed Size                  2253784 bytes

Variable Size             327158824 bytes

Database Buffers           79691776 bytes

Redo Buffers                4268032 bytes

SQL> alter database mount;

Database altered.

SQL> alter database open;

alter database open

*

ERROR at line 1:

ORA-01034: ORACLE not available

Process ID: 0

Session ID: 0 Serial number: 0

发现在打开数据文件报错

SQL> recover database until time ‘2017-05-09‘

ORA-00283: recovery session canceled due to errors

ORA-01124: cannot recover data file 1 - file is in use or recovery

ORA-01110: data file 1: ‘+DATADG/fmall/datafile/system.259.907327891‘

用覆盖形式恢复也报错

f.后面有资料提出可使用RMAN操作系统删掉归档来解决问题

rman下crosscheck然后delete。

[[email protected]~ ]rman target  sys/pass

RMAN > crosscheck archivelog all;

validation succeeded for archived log

archived log file name=+ARCH/fmall/archivelog/2017_03_08/thread_2_seq_6362.21528.938070989 RECID=43022 STAMP=938070990

validation succeeded for archived log

RMAN-06900: WARNING: unable to generate V$RMAN_STATUS or V$RMAN_OUTPUT row

RMAN-06901: WARNING: disabling update of the V$RMAN_STATUS and V$RMAN_OUTPUT rows

ORACLE error from target database:

ORA-01089: immediate shutdown in progress - no operations are permitted

Process ID: 14578

Session ID: 235 Serial number: 2647

校验日志的可用性,报错或者等待很久没有结果出来

RMAN > delete archivelog all completed before ‘sysdate-30‘;

RMAN-08137: WARNING: archived log not deleted, needed for standby or upstream capture process

如果你删除三十天前的归档日志,等待很久却没有结果,甚至像上面一样报错可以参考我下面的做法

RMAN > delete force noprompt archivelog until time ‘sysdate-30‘;

强制性删除三十天前的归档日志

网站异常告警解除,说明归档日志腾出空间,致使数据库可正常提供应用连接。

g.实例证明,归档日志空间已满导致应用无法连接数据库

有经验的DBA告诉我说,RAC会有一个ASM的磁盘空间议题,我经过查询ASM磁盘空间发现,我的妈呀,ARCH的空间就才腾出282M。

SQL> select name,total_mb,free_mb from v$asm_disk;

NAME TOTAL_MB    FREE_MB

------------------------------ ---------- ----------

GRIDDG_0001           4768      4585

ARCH_0000           944137      282

DATADG_0000         1238390      1202771

GRIDDG_0000           4768      4553

BACKUP_0000          953675      949001

再次进入RMAN,使用delete archivelog的方式再删除15天后,查看ASM磁盘空间大小:

SQL> select name,total_mb,free_mb from v$asm_disk;

NAME TOTAL_MB    FREE_MB

------------------------------ ---------- ----------

GRIDDG_0001            4768        4585

ARCH_0000             944137       716045

DATADG_0000            1238390      1202771

GRIDDG_0000            4768        4553

BACKUP_0000            953675       949001

空出了将近700多G的空间,太可怕了,短短十五天就能够用掉将近七百多G的归档日志空间,我的数据库大小才1.1G,归档日志就一天以十几二十G的速度疯长。一定是哪里出了问题,必须彻查。

当然首先要做的估计就是把清理归档日志命令写成脚本纳入crontab里,按一定时间进行处理。初步怀疑是应用程式sql语句中存在类似于死循环的东西,导致归档日志如此庞大,后续有什么发现,我将再次记录下来。

致此,归档日志空间已满议题是暂时解决了。

时间: 2024-10-04 14:47:13

ORACLE 11G DB RAC ORA-00257archiver error解决办法的相关文章

Oracle 11G R2 RAC中的scan ip 的用途和基本原理【转】

Oracle 11G R2 RAC增加了scan ip功能,在11.2之前,client链接数据库的时候要用vip,假如你的cluster有4个节点,那么客户端的tnsnames.ora中就对应有四个主机vip的一个连接串,如果cluster增加了一个节点,那么对于每个连接数据库的客户端都需要修改这个tnsnames.ora. 引入了scan以后,就方便了客户端连接的一个接口,顾名思义 single client access name ,简单客户端连接名,这是一个唯一的名称,在整个公司网络内部

Oracle 11g R2 RAC安装规划

前言 使用虚拟机VMWARE安装Oracle 11g R2 RAC,需要模拟两个主机节点和一个共享存储,安装系统和创建虚拟存储文件这里不作介绍,可以自行百度方法,很简单. 一.主机规划 二.数据库规划 三.准备工作 3.1.HOSTS和主机名配置 #在所有节点添加主机名,重启生效: [[email protected] ~]# cat /etc/sysconfig/network NETWORKING=yes HOSTNAME=node1 NTPSERVERARGS=iburst [[email

oracle 11g r2 rac ssh两节点互信对等配置Permission denied (publickey,gssapi-with-mic,password)

问题:安装oracle 11g r2 RAC grid 时,配置两节点ssh互信对等配置不成功,具体错误信息如下: ------------------------------------------------------------------------ Verifying SSH connectivity has been setup from rac1 to rac1 -----------------------------------------------------------

Loadrunner参数化连接oracle、mysql数据源报错及解决办法

Loadrunner参数化连接oracle.mysql数据源报错及解决办法 (本人系统是Win7 64,  两位小伙伴因为是默认安装lr,安装在 最终参数化的时候,出现连接字符串无法自动加载出来: 最后通过安装在,问题到此解决 1.通过数据库连接参数化大量数据,电脑本地已经成功安装了数据库驱动,且本地可以配置数据源成功,在loadrunner 中配置数据源却找不到对应的数据库驱动. ----A:检查当前loadrunner工具的版本,是32位还是64位(目前还没有64位的),32位是不能安装64

ORACLE错误1033出现和ORA-00600错误解决办法

非法关机以后,Oracle数据经常出现这个错误: EXP-00056:ORACLE错误1033出现 ORA-01033:ORACLE initialization or shutdown in progress 用户: 口令: 这个显然是数据库没有办法启动,但是数据库服务还是可以启动,但程序无法连接数据库. 首选找问题要看看数据库BDUMP目录下的ALERT文件具体报什么错误 你看到最后几行会有 报错ORA-00600: 内部错误代码,参数: [kcratr1_lostwrt], [], [],

关于 Jupyter notebook -- kernel error 解决办法!

关于 Jupyter notebook -- kernel error 解决办法! 方法一: >>正确安装Anaconda >>打开Anaconda Prompt >>输入jupyter kernelspec list查看安装的内核和位置 >>进入安装目录,打开kernel.jason, 查看python的编辑器的路径文件是否与安装路径一样>>如果不一样,那么输入 python -m ipykernel install --user, 重新安装内

Oracle 11g R2 RAC dbca新建实例报错

此oracle问题本人在论坛上作了提问http://bbs.51cto.com/thread-1167548-1.html,最后自己找到方法解决,以此博客再作记录. 环境:CentOS6.5 64位,Oracle 11g R2 11.2.0.1.0 现象:oracle rac生产环境中,已经有一个实例正常使用,有需求再建一实例. 新建实例过程中,最后步骤具体报错如下:    [Thread-829] [ 2015-09-09 11:29:42.007 CST ] [DatabaseImpl.cr

centos 6 oracle 11G DB install

因业务迁移,需重新部署oracle DB,此文仅作部署记录,部署文档主要参考官方文档http://docs.oracle.com/cd/E11882_01/install.112/e47689/toc.htm 概要: 主机:OpenStack 云主机 系统:Completing a Minimal Linux centos 6.8 x86_64 DB:Oracle Database 11g Release 2(11.2) 内存:2Gb 硬盘:/dev/vda 20Gb /dev/vdb 30Gb

在Windows 10上安装Oracle 11g数据库出现的问题及解决

在Windows 10上安装Oracle 11g数据库,并且很多次出现过:当安装的进度条进行到快要结束的时候弹出一个提示框.如下: [Java(TM)2 Platform Standard Edition binary 已停止工作:出现了一个问题,导致程序停止正常工作.如果有可用的解决方案,Windows 将关闭程序并通知你]的错误提示信息. 最后,发现是因为jdk的安装路径含有中文才导致这一致命的错误,接下来我是这样做的: 1.将整个jdk文件夹移动到某一英文路径. 2.修改环境变量中的系统变