狮子的雄心,骆驼的耐力,孩子的执著!
分类: Oracle
2012-12-08 10:31:40
ORA-00257: archiver error. Connect internal only, until freed
普通用户登录oracle显示上面的错误
此问题属于归档日志满了。
*** 查询归档使用情况:
SQL> show parameter db_recovery_file_dest_size;
NAME TYPE VALUE
------------------------------------ ---------------------- ------------------------------
db_recovery_file_dest_size big integer 2G
SQL> select * from V$FLASH_RECOVERY_AREA_USAGE;
FILE_TYPE PERCENT_SPACE_USED PERCENT_SPACE_RECLAIMABLE NUMBER_OF_FILES
------------------------ ------------------ ------------------------- ---------------
CONTROLFILE 0 0 0
ONLINELOG 0 0 0
ARCHIVELOG 99.91 0 27
BACKUPPIECE 39.35 0 2
IMAGECOPY 0 0 0
FLASHBACKLOG 0 0 0
6 rows selected.
一、关闭日志归档(不建议采用)
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup mount;
ORACLE instance started.
Total System Global Area 2483027968 bytes
Fixed Size 2022792 bytes
Variable Size 570425976 bytes
Database Buffers 1895825408 bytes
Redo Buffers 14753792 bytes
Database mounted.
SQL> alter database flashback off;
Database altered.
SQL>alter database noarchivelog;
Database altered.
SQL>alter database open;
Database altered.
二、扩大归日志的磁盘配额:
SQL>alter system set DB_RECOVERY_FILE_DEST_SIZE=10G;
System altered.
三、删除无用的归档日志,步骤如下
1、手工删除归档日志的文件夹(按日期那种)
2、在oracle用户下以rman target /
3、crosscheck archivelog all;
4、delete expired archivelog all;--这里删除了一些与第1步中删除的文件日期匹配的文件
5、exit;
上面的这个删除归档日志的方法是不正规的,官方提供的方法是使用rman实现。
ORACLE正确删除归档并回收空间的方法
一个ORACLE归档日志经常满,表现为/oraarchive 这个文件空间占用100%大家一定抱怨ORACLE为何没有归档维护工具,很多人直接删除了事,错了,ORACLE有,而且很智能,可以正确的删除归档和 FLASHBACK,不过切记,ORACLE归档日志对于ORACLE的数据恢复和备份非常重要,不到万不得已不要删除归档日志。
删除归档日志的过程
以ORACLE用户身份登录到数据库服务器主机或通过网络连接
进入ORACLE数据备份工具
rman target/
或rman target/@orcl
在命令窗口里面执行
DELETE ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-7';
说明
SYSDATA-7,表明当前的系统时间7天前,before关键字表示在7天前的归档日志,如果使用了闪回功能,也会删除闪回的数据。
DB在startup时报如下错误:
SQL> alter database open;
alter database open
*
ERROR at line 1:
ORA-16038: log 1 sequence# 56 cannot be
archived
ORA-19809: limit exceeded for recovery files
ORA-00312: online log 1 thread 1:
'/u02/oradata/orcl/redo01.log'
失败的原因是group 1还没有归档,需要加上”unarchived”参数;
参照网上两篇文章得以解决:
http://blog.sina.com.cn/s/blog_69f38bff0100n3dz.html
http://liuxiaojian.iteye.com/blog/1179596
SQL> alter database clear unarchived logfile group 1;
Database altered.
成功,下面DB就可以正常open了;
SQL> alter database open;
Database altered.
oracle 归档日志管理