设为首页 收藏本站
查看: 452|回复: 0

[经验分享] ORA-00257: archiver error. Connect internal only, until freed 错误的处理方法

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-9-9 08:54:46 | 显示全部楼层 |阅读模式
ORA-00257: archiver error. Connect internal only, until freed 错误的处理方法

背景: 最近总是在捣鼓oracle数据库,前几天给公司的一台oracle数据库做了实时同步功能,同步必须要打开归档日志功能,由于生产数据量比较大,不到1天的时间就把oracle日志空间占满了。报如下错误:ORA-00257: archiver error. Connect internal only, until freed

QQ截图20150909085434.png

1. 用sys用户登录
  sqlplus sys/password as sysdba;


2. 看看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




3. 可以用archive log list  检查一下log sequence
SQL> archive log list;
Database log mode                 Archive Mode
Automatic archival                   Enabled
Archive destination                  USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence     1892
Next log sequence to archive  1894
Current log sequence              1894

4. 检查flash recovery area的使用情况,可以看见archivelog已经很大了,达到96.62
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                96.62                       0              141
BACKUPPIECE                   0                         0               0
IMAGECOPY                      0                         0               0
FLASHBACKLOG                0                         0               0

5. 计算flash recovery area已经占用的空间
SQL> select sum(percent_space_used)*3/100 from v$flash_recovery_area_usage;
SUM(PERCENT_SPACE_USED)*3/100
-----------------------------
                       2.9904
                       
6.

查看日志所在目录及日志空间设置的最大值:
SQL> show parameter db_recovery_file_dest;

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest                string      D:\app\Administrator\flash_rec
                                                 overy_area
db_recovery_file_dest_size           big integer 3912M

                       
7 上述结果告诉我们,归档位置用的是默认值,放在flash_recovery_area下(db_recovery_file_dest目录=D:\app\Administrator\flash_recovery_area



用Rman转移或清除对应的归档日志, 删除一些不用的日期目录的文件,注意保留最后几个文件

---------------------------------------------------------------------------------------
注意:
如果直接删除归档日志后,必须用RMAN维护控制文件,否则空间显示仍然不释放。
---------------------------------------------------------------------------------------

8. rman target sys/pass
[iyunv@sha3 oracle]# rman target sys/pass
Recovery Manager: Release 10.2.0.4.0 - Production on Tue Jan 20 01:41:26 2009
Copyright (c) 1982, 2007, Oracle.  All rights reserved.
connected to target database: tt (DBID=4147983671)

9. 检查一些无用的archivelog
RMAN> crosscheck archivelog all;

10. 删除过期的归档
RMAN> delete expired archivelog all;
delete archivelog until time 'sysdate-1' ; 删除截止到前一天的所有archivelog

11. 再次查询,发现使用率正常,已经降到23.03
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                23.03                         0              36
BACKUPPIECE                   0                         0               0
IMAGECOPY                     0                         0               0
FLASHBACKLOG                  0                         0               0


======================================================

下面的命令用于校验归档日志的有效性,列出无效的归档日志,以及以何种方式清除归档日志,列出几种常用的:
crosscheck archivelog all;                            --->校验日志的可用性
list expired archivelog all;                          --->列出所有失效的归档日志
delete archivelog until sequence 16;                  --->删除log sequence为16及16之前的所有归档日志
delete archivelog all completed before 'sysdate-7';    --->删除系统时间7天以前的归档日志,不会删除闪回区有效的归档日志
delete archivelog all completed before 'sysdate - 1';  --->同上,1天以前的
delete archivelog from time 'sysdate-1';              --->注意这个命令,删除系统时间1天以内到现在的归档日志
delete noprompt archivelog all completed before 'sysdate';  --->该命令清除所有的归档日志
delete noprompt archivelog all;                              --->同上一命令


+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++




其它有用的Command:
----------------------------------

如果archive log模式下不能正常startup,则先恢复成noarchive log,startup成功后,再shutdown;
shutdown immediate;
startup mount;
alter database noarchivelog;
alter database open;
shutdown immediate;
再次startup以archive log模式
shutdown immediate;
startup mount;
show parameter log_archive_dest;  
alter database archivelog;
archive log list;                 
alter database open;
如果还不行,则删除一些archlog log
SQL> select group#,sequence# from v$log;
    GROUP# SEQUENCE#
---------- ----------
         1         62
         3         64
         2         63
原来是日志组一的一个日志不能归档
SQL> alter database clear unarchived logfile group 1;
alter database open;
最后,也可以指定位置Arch Log, 请按照如下配置
select name from v$datafile;
alter system set log_archive_dest='D:\app\Administrator\backup' scope=spfile
或者修改大小
SQL> alter system set db_recovery_file_dest_size=100G scope=both;


备注:

应该是scope=both和scope=spfile
Oracle 里面有个叫做spfile的东西,就是动态参数文件,里面设置了Oracle 的各种参数。所谓的动态,就是说你可以在不关闭数据库的情况下,更改数据库参数,记录在spfile里面。更改参数的时候,有4种scope选项。scope就是范围
++ scope=spfile 仅仅更改spfile里面的记载,不更改内存,也就是不立即生效,而是等下次数据库启动生效。有一些参数只允许用这种方法更改
++ scope=memory 仅仅更改内存,不改spfile。也就是下次启动就失效了
++ scope=both 内存和spfile都更改
++ 不指定scope参数,等同于scope=both.



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-111251-1-1.html 上篇帖子: 在oracle数据库本地创建用户表空间 下篇帖子: Oracle 使用物化视图实现表数据同步 error
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表