【现象】:
今天发觉发布在局方测试机上的项目登录不了,登录时报了个can not open connection。奇怪,这个错之前一直没遇过,于是便登录到服务器上去看tomcat的log,结果发现了这个:
2012-02-26 17:31:57,089 [Prototyper] ERROR [org.logicalcobwebs.proxool.cmmbwebDataSource] - Prototype
java.sql.SQLException: ORA-00257: archiver error. Connect internal only, until freed.
【背景】:
从Oracle10g开始,oracle提供了“The Flash Recovery Area”这样一种feature来帮助用户实现以磁盘空间为基础的自动备份和恢复,通过在磁盘中划分出的“The Flash Recovery Area”保存“备份和恢复相关的文件”来实现,如ControlFile,OnlineLog,ArchiverLog,BackupPiece,ImageCopy和FlashBackLog。
详细可参考:http://docs.oracle.com/cd/B19306_01/backup.102/b14192/setup005.htm。
【原因】:
然后google了下,发现是Archive Log的问题,su - oracle;sqlplus /nolog;conn /as sysdba之后,查看闪回区(Flash Recovery Area)的使用情况:
select * from V$FLASH_RECOVERY_AREA_USAGE;
结果是:
可以见到,Archive Log已经几乎占满了oracle flash_recovery_area的所有空间了。
【有用的几个SQL】:
1.查看flash_recovery_area的位置和大小:show parameter recover;
2.查看flash_recovery_area的使用情况:select * from V$FLASH_RECOVERY_AREA_USAGE;
3.查看archive是否已启用,及archive目标位置:archive log list;
如果没有启用,可以用以下步骤启用:
1. SQL> alter system set log_archive_dest_1='location=/oracle/oracle10g/log/archive_log';
该语句含义是确定归档日志的路径,实际上Oracle 10g可以生成多份一样的日志,保存多个位置,以防不测
例如再添加一个日志位置可使用以下语句
SQL>alter system set log_archive_dest_2='location=/oracle/oracle10g/log2/archive_log';
2.关闭数据库
SQL> shutdown immediate
3.启动数据mount状态:
SQL> startup mount;
4、修改数据库为归档模式:
SQL> alter database archivelog;
5、打开数据库,查询:
SQL> alter database open;
修改日志文件命名格式:
SQL> alter system set log_archive_max_processes = 5;
SQL> alter system set log_archive_format = "archive_%t_%s_%r.log" scope=spfile;
【解决】:
方法1:重新指定归档路径。
(1)如果使用SPFILE启动数据库,
alter system set log_archive_dest_1='location=/proddata' scope=both;
(2)如果使用PFILE启动数据库,
进入初始化参数文件所在的目录,$ORACLE_HOME/dbs,本例中的PFILE是initnbo.ora,添加参数:log_archive_dest_1='location=/proddata'。
这里指定一个新的归档路径,这个路径要有足够的空间。然后关闭重启数据库。
方法2:增加闪回区(Flash Recovery Area)的大小。
alter system set db_recovery_file_dest_size=3G scope=both;
方法3:删除archive log
(1)手工删除,用系统级命令删除(如rm -rf)删除归档日志的物理文件后,还不行,因为Oracle的controlfile中仍然记录着这些archivelog的信息,所以在删除归档日志后,必须用RMAN维护控制文件,否则空间显示仍然不释放。方法是:
1)[root@sha3 oracle]# rman target sys/pass
2)RMAN> crosscheck archivelog all;
3)RMAN> delete expired archivelog all;
还可以这样:delete archivelog until time 'sysdate-1' ; 删除截止到前一天的所有archivelog。
(2)写shell脚本自动删除。(稍后再添加这部分内容)
- 大小: 7.5 KB
分享到:
相关推荐
归档日期满了报 ORA-00257 archiver error. Connect internal only, until freed 错误的处理方法
### 如何处理错误ORA-29275:部分多字节字符 #### 问题背景与描述 在Oracle数据库操作过程中,用户可能会遇到一个特定的错误提示——ORA-29275:部分多字节字符。这一错误通常出现在执行查询`SELECT * FROM V$...
### ora-01033: Oracle Initialization or Shutdown in Progress 解决方法 #### 一、问题背景及原因 **标题**: “ora-01033: Oracle initialization or shutdown in progress 解决方法” **描述**: “ora-01033: ...
-- 解决ORA-00904: "WMSYS"."WM_CONCAT": 标识符无效 的文件包....... -- 解决ORA-00904: "WMSYS"."WM_CONCAT": 标识符无效 的文件包....... -- 解决ORA-00904: "WMSYS"."WM_CONCAT": 标识符无效 的文件包....... ...
在Oracle数据库管理中,"ORA-00990: 权限缺失或无效"是一个常见的错误代码,它表示用户尝试执行的操作没有足够的权限。这个错误通常发生在试图访问、修改或者管理数据库对象(如表、视图、索引等)时。在本篇文章中...
ORA-32001:write to spfile requested but no spfile is in use请求写入spfile,但没有使用spfile的解决方法 在输入以下语句中报了这样的错误: SQL>alter system set control_files=’/u01/app/oracle/oradata/prod/...
ORA-00604: 递归SQL层1出现错误 ORA-03106: 致命的双工通信协议错误 ORA-02063: 紧接着line(源于dblink) 以及 ORA-04052: 在查找远程对象时出错 ORA-00604: 递归SQL层1出现错误 ORA-03120: 双工转换例行程序:整数...
在Oracle数据库中,"ORA-00904"是一个常见的错误代码,它表示尝试引用一个不存在或无效的标识符。在这个场景下,错误信息提到的是"WM_CONCAT"函数,这表明在Oracle 19c数据库环境中,用户尝试使用WM_CONCAT函数,但...
在Oracle数据库系统中,"ORA-00060: 等待资源时检测到死锁" 是一个常见的错误提示,它表明两个或多个事务在执行过程中陷入了无法继续进行的状态,因为彼此都在等待对方释放资源。这种情况通常发生在并发操作中,比如...
在oracle里面运行一下,解决Exception java.sql.SQLException ORA-00600 内部错误代码
NULL 博文链接:https://gembler.iteye.com/blog/346242
在Oracle数据库系统中,"ORA-01036:非法的变量名/编号"是一个常见的错误,通常出现在PL/SQL代码或者SQL查询语句中,当你尝试使用一个不正确或者未定义的变量时,Oracle数据库会抛出这个错误。这个错误可能是由于...
ORA-12154: TNS: 无法解析指定的连接标识符的解决方法
然而,在日常使用过程中,我们可能会遇到各种错误代码,其中“ORA-00257”是一个常见的错误,通常与数据库的归档日志操作相关。本文将详细讲解如何理解和解决“ORA-00257”错误,以及相关的Oracle数据库管理知识。 ...
oracle网络配置(listener_ora-sqlnet_ora-tnsnames_ora).mht
#### ORA-00073: Value Used Only When 指定的值仅在特定情况下使用。这可能是由于配置错误或逻辑错误。 #### ORA-00074: Parameter Not Specified 未指定参数。这可能是由于DDL语句格式错误或逻辑错误。 #### ORA...
ORA-00904 是一个常见的错误信息,通常发生在 SQL 语句中引用了一个不存在的列名。这种错误通常是由于开发者在编写 SQL 语句时,忘记了某个列名或写错了列名,导致 Oracle 无法找到该列名。解决这个错误的方法是,...
ORA-00603: ORACLE server session terminated by fatal error ORA-27504: IPC error creating OSD context ORA-27300: OS system dependent operation:sskgxp_select failed with status: 3 ORA-27301: OS ...
oracle12c程序连接时异常: ORA-01017: 用户名/口令无效; 登录被拒绝 的解决方案。