ORA-00257: Archiver error. Connect AS SYSDBA only until resolved错误解决

错误原因:服务器分配空间不足,数据库归档日志满导致系统数据库登陆失败。

解决办法:1、删除以前的日志

2、增大归档日志的容量

3、关闭归档模式

一、删除以前的容量

1、登录账号后,查看ORACLE_BASE目录

oracle@localhost \~\]$ echo $ORACLE_BASE; /[orc](https://so.csdn.net/so/search?q=orc&spm=1001.2101.3001.7020 "orc")/app/oracle **2、进入数据库操作界面** \[oracle@localhost \~\]$ [sqlplus](https://so.csdn.net/so/search?q=sqlplus&spm=1001.2101.3001.7020 "sqlplus") / as sysdba; **3、查看flash recovery area的使用情况** 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.9 0 255 BACKUPPIECE 0 0 0 IMAGECOPY 0 0 0 FLASHBACKLOG 0 0 0 注:可以看出,ARCHIVELOG日志已经达到99.9%了。造成归档满的原因是因为有一个用户在做大量更新操作,由于更新操作产生大量重做日志,归档日志切换频繁。解决方法是要把大量归档日志清除掉! **4、差看recovery目录** SQL\> show parameter [recovery](https://so.csdn.net/so/search?q=recovery&spm=1001.2101.3001.7020 "recovery"); NAME TYPE ------------------------------------ --------------------------------- VALUE ------------------------------ db_recovery_file_dest string /orc/app/oracle/fast_recovery_ area/orcl db_recovery_file_dest_size big integer 8016M db_unrecoverable_scn_tracking boolean TRUE recovery_parallelism integer 0 **5、退出数据库命令后,进入/orc/app/oracle/fast_recovery_area/orcl/ORCL/archivelog文件夹下保留最近日期的一个文件夹,删除其他的文件夹。** **6、使用rman维护控制文件,否则空间显示仍不释放。** \[oracle@localhost \~\]$ rman target sys/pass 恢复管理器: Release 12.2.0.1.0 - Production on 星期四 9月 3 17:55:59 2020 Copyright (c) 1982, 2017, Oracle and/or its affiliates. All rights reserved. 已连接到目标数据库: ORCL (DBID=1576223308) \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\* Rman target sys/oracle@db 其中sys是用户名,密码是oracle,@后面数据库实例 **7、检查错误文档** RMAN\> crosscheck archivelog all; 检查控制文件和实际物理文件的差别 **8、删除过期文档** RMAN\> delete expired archivelog all; delete expired删除的是那些本来RMAN以为存在但是实际上在磁盘或者磁带上已经被删除了的信息,删除的只是RMAN资料库中的记录 **9、删除截止到前一天所有的archivelog** RMAN\> delete archivelog until time 'sysdate-1'; 删除截止到前一天的所有archivelog **10、退出** RMAN\> exit(); **11、再次进入sql查询使用率(执行2-3步)**   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 ### 二、数据库中查看归档日志的存储大小以及修改存储容量 SQL\> show parameter db_recover; NAME TYPE ------------------------------------ ---------------------- VALUE ------------------------------ db_recovery_file_dest string /opt/oracle/flash_recovery_are a db_recovery_file_dest_size big integer 20G 修改db_recovery_file_dest_size大小为500G alter system set db_recovery_file_dest_size=500G scope=spfile(需要重启DB生效) --------------------------------------------------------------------------------------------------------------------------------------- Oracle 里面有个叫做spfile的东西,就是动态参数文件,里面设置了Oracle 的各种参数。所谓的动态,就是说你可以在不关闭数据库的情况下,更改数据库参数,记录在spfile里面。更改参数的时候,有4种scope选项。scope就是范围 ++ scope=spfile 仅仅更改spfile里面的记载,不更改内存,也就是不立即生效,而是等下次数据库启动生效。有一些参数只允许用这种方法更改 ++ scope=memory 仅仅更改内存,不改spfile。也就是下次启动就失效了 ++ scope=both 内存和spfile都更改 ++ 不指定scope参数,等同于scope=both. ### 三、修改为无归档日志模式 **开启归档日志模式** 1、登录服务端:sqlplus / as sysdba; 2、查询归档模是否开启:archive log list; 3、关闭数据库:shutdown immediate; 4、开启数据库至mount状态:startup mount; 5、修改数据库模式:alter database archivelog; 6、开启数据库:alter database open; 7、查看归档日志是否开启:archive log list; **关闭归档日志模式** 1、登录服务端:sqlplus / as sysdba; 2、关闭数据库:shutdown immediate; 3、打开数据库:startup mount; 4、关闭归档日志:alter database noarchivelog; 5、开启数据库:alter database open; 6、查看归档日志是否关闭:archive log list ;

相关推荐
Y第五个季节1 分钟前
Redis - HyperLogLog
数据库·redis·缓存
Allen Bright22 分钟前
【MySQL基础-20】MySQL条件函数全面解析:提升查询逻辑的利器
数据库·mysql
Justice link1 小时前
企业级NoSql数据库Redis集群
数据库·redis·缓存
爱的叹息1 小时前
主流数据库的存储引擎/存储机制的详细对比分析,涵盖关系型数据库、NoSQL数据库和分布式数据库
数据库·分布式·nosql
XiaoLeisj1 小时前
【MyBatis】深入解析 MyBatis XML 开发:增删改查操作和方法命名规范、@Param 重命名参数、XML 返回自增主键方法
xml·java·数据库·spring boot·sql·intellij-idea·mybatis
dleei2 小时前
MySql安装及SQL语句
数据库·后端·mysql
WannaRunning2 小时前
浅谈Tomcat数据源连接池
java·oracle·tomcat
信徒_2 小时前
Mysql 在什么样的情况下会产生死锁?
android·数据库·mysql
嘴对嘴编程4 小时前
oracle数据泵操作
数据库·oracle
·薯条大王9 小时前
MySQL联合查询
数据库·mysql