archivelog满,导致oracle无法访问。

一、背景

ORA-00257: archiver error. Connect internal only, until freed。
考虑到前些天已经扩大了硬盘空间,应该是archive log大小已经达到Oracle中对archive log大小的限制。而DBA已经放假了。因此决定清除下无用的日志同时修改下对日志大小的限制。
由于我对Oracle并不熟悉,因此在完成后将整个过程记录下来,便于以后查阅。
二、环境
RHEL 6.3 + Oracle 11gR2
三、过程
由于archive log空间满导致了不能远程登录,因此ssh到服务器后,使用sqlplus sys/pass as sysdba登陆oracle。
首先看archiv log所在位置
SQL> show parameter log_archive_dest;

会看到类似下面的结果
NAME                                    TYPE        VALUE 
------------------------------------ ----------- ------------------------------ 
log_archive_dest                  string 
log_archive_dest_1              string 
log_archive_dest_10            string

这时候如果value是空的,可以尝试

SQL> archive log list;

然后我查看了下使用情况

SQL> select * from V$FLASH_RECOVERY_AREA_USAGE;

FILE_TYPE    PERCENT_SPACE_USED PERCENT_SPACE_RECLAIMABLE NUMBER_OF_FILES 
------------ ------------------ ------------------------- --------------- 
CONTROLFILE                .13                        0              1 
ONLINELOG                  2.93                        0              3 
ARCHIVELOG                99.72                      0              122 
BACKUPPIECE                  0                        0              0 
IMAGECOPY                      0                        0              0 
FLASHBACKLOG                0                        0              0

显然,已经使用了超过99%的日志空间
这时候,我直接进入flash_recovery_are的目录
cd /orace/app/oracle/flash_recovery_area/ORCL/archivelog

然后我决定先备份下相关文件
tar Jcvf arlog.20140125.tar.xz *

第一次操作时发现会提示文件在压缩过程中变化了。才想起来我没有停止Oracle服务。因此回到sqlplus先将Oracle停下来
SQL> shutdown immediate;

这个过程等待了好久才完成。。
这时候重新打包。打包过程持续了差不多两个多小时。。。
完成后,先把压缩包备份到其他目录并且scp到了一台备份文件用的服务器。然后很暴力地删除了这个文件夹下2013年的全部目录
1 rm -rf 2013_*

完成了。将数据库启动起来

sqlplus sys/pass as sysdba

SQL> startup

我第一次startup失败了,提示ORA-03113: end-of-file on communication channel。我又重新执行了下
SQL> startup mount

成功。用rman修复相关信息
rman target sys/pass 
RMAN> delete expired archivelog all;

完成后,回到sqlplus修改archivelog大小
SQL> alter system set db_recovery_file_dest_size=5G scope=spfile;

修改完不会立即生效。需要重启Oracle
SQL> shutdown immediate 
SQL> startup

这时候查看大小
SQL> show parameter db_recover 
NAME                                TYPE        VALUE 
------------------------------------ ----------- ------------------------------ 
... 
db_recovery_file_dest_size          big integer 5G

整个过程就完成了。

时间: 2024-10-12 15:23:31

archivelog满,导致oracle无法访问。的相关文章

Oracle归档日志满了导致Oracle连接(ORA-00257)报错处理

最近一段时间,有收到一台Oracle服务器的连接告警, 刚刚开始还以为是Oracle的监听被关闭导致,结果连上服务器看下Oracle的监听进程正常,自己连接一次发现有报ORA-00257错,又去监控系统中在看下日志再用sqlplus连上Oracle后查了下,知道是Oracle的归档日志写满闪回区导致Oracle连接异常,查看归档日志方法如下: SQL> show parameter db_recovery_file_dest; #查看归档日志的物理路径及闪回区的大小 SQL> select f

硬盘空间满导致mysql ibd文件被删后提示Tablespace is missing for table 'db_rsk/XXX"

昨天一早,开发人员反馈说一个测试环境报Tablespace is missing for table 'db_rsk/XXX",周末刚升级过,特地让开发回去查了下,说脚本中肯定没有drop table的操作.datadir下检查了下,发现frm文件在的ibd文件没有了,bing了下,没发现类似异常.于是先回到mysql.err往回搜索,半天后发现上周五下午mysql出现了一次异常宕机,说是磁盘空间不足了,看日志该文件被损坏了,如下: 2016-11-12 11:31:00 28443 [ERRO

物理磁盘空间使用已满导致数据库hang起

情况描述 一天公司小张过来咨询,说是数据库查询报错了:乍一看好像是数据库有坏快了,为了排查更加详细的错误信息,决定查看一下告警日志,发现问题所在,原来是数据库的物理磁盘空间满了 Writing to the above trace file is disabled for now on... Tue Jul 29 17:30:32 2014 Non critical error ORA-48181 caught while writing to trace file "/u01/app/orac

linux no space left on device的解决办法(iNode满导致)

今天在腾讯云的服务器被攻击后,apache启动报错,查找原因发现是磁盘空间不够no space left on device, 诡异的是df命令磁盘占用仅55% 继续查找原因,发现是iNode已满,即没有索引空间 这就好办了,首先定位哪个目录占用iNode最多,命令如下: find */ ! -type l | cut -d / -f 1 | uniq -c 定位完成,清理目录,整个世界都清净了 linux no space left on device的解决办法(iNode满导致),布布扣,b

Linux inode满导致创建文件报磁盘空间不足

客户报不能挂载存储,系统异常.登陆系统,尝试手动mount分区,报失败.进入挂载点,尝试写入一个文件,报磁盘空间不足,首先怀疑是系统磁盘空间满: $ df Filesystem           1K-blocks      Used Available Use% Mounted on /dev/xvda 33030016 10407780 22622236 32% / tmpfs 368748 0 368748 0% /lib/init/rw varrun 368748 56 368692

Oracle数据访问组件ODAC的安装方法

Oracle数据访问组件ODAC(Oracle Data Access Components)顾名思义就是用来访问Oracle数据库的小程序.我们可以编程调用这些组件来实现在没有安装Oracle数据库软件的电脑上完成对Oracle数据库的访问. 工具/原料 ODAC安装包 步骤1. 下载ODAC安装包 到Oracle官方网站下载ODAC安装包.在网页上找到你要的版本.我下载的是: 64-bit ODAC 11.2 Release 6 (11.2.0.4.0) Xcopy for Windows

C# 免安装ORACLE客户端访问数据库

c#开发程序时,在没有安装oracle客户端时,访问数据库报 “System.Data.OracleClient 需要 Oracle 客户端软件 8.1.7 或更高版本.” 在没有安装oracle客户端的情况下,可连接oracle数据库执行各种操作 使用方法: 将oci.dll.ociw32.dll.Oracle.DataAccess.dll.orannzsbb11.dll.oraocci11.dll.oraociicus11.dll.OraOps11w.dll拷到程序bin目录下 C# 免安装

Oracle数据库案例整理-Oracle系统执行失败-sql_trace至TRUE导致Oracle在根文件夹中缺乏可用空间

1.1       述 在"$ORACLE_BASE/diag/rdbms/$ORACLE_SID/$ORACLE_SID/trace"文件夹下产生大量"oracle_w000_9708.trc"和"oracle_w000_9708.trm"文件. 产生这些文件的速度太快.导致Oracle根文件夹可用空间不足. 1.2       可能原因 导致"$ORACLE_BASE/diag/rdbms/$ORACLE_SID/$ORACLE_S

因iis监听地址导致页面无法访问

安装iis遇到某些组件安装失败,将监听地址改为了127.0.0.1,安装成功后此原因导致外网访问iis失败 netsh http add iplisten ipaddress=10.*.*.*     (ipaddress后填写服务器内网IP) 使用 netsh http show iplisten 查看修改是否生效. netsh http delete iplisten ipaddress=xxx.xxx.xxx.xxx 删除添加的监听