ORA-00257:archiver error解决办法*

当遇到Oracle数据库报ORA-00257错误时,通常是由于归档日志过多导致磁盘空间不足。解决方法包括:1)更改数据库为归档模式并调整归档目录到更大空间的位置;2)增大`db_recovery_file_dest_size`参数以扩大归档日志存储空间;3)清理不必要的归档日志,使用RMAN命令删除过期或无用的备份和归档日志。确保在清理前做好数据备份。
摘要由CSDN通过智能技术生成

ORA-00257:archiver error解决办法
出现ORA-00257错误(空间不足错误),通过查找资料,绝大部分说这是由于归档日志太多,占用了全部的硬盘剩余空间导致的,通过简单删除日志或加大存储空间就能够解决。

一、更改归档模式、目录、日志大小
1、更改Oracle为归档模式
1.1 关闭oracle
SQL> shutdown immediate;

Database closed.
Database dismounted.
ORACLE instance shut down.

1.2 启动为mount状态
SQL> startup mount;

ORACLE instance started.
Total System Global Area 2572144640 bytes
Fixed Size 2283984 bytes
Variable Size 738199088 bytes
Database Buffers 1828716544 bytes
Redo Buffers 2945024 bytes
Database mounted.

1.3 更改为归档模式
SQL> alter database archivelog;

Database altered.
备注:‘archivelog’为 归档模式;‘noarchivelog’为非归档模式。

1.4 更改数据库为‘打开’状态
SQL> alter database open;

1.5 查看归档模式信息
SQL> archvie log list; #它会提示归档的模式、是否启用、参数
Database log mode Archive Mode
Automatic archival Enabled
Archive destination USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence 88
Next log sequence to archive 90
Current log sequence 90

2 更改归档目录
2.1 查看参数db_recovery_file_dest
2.1.1 “db_recovery_file_dest”是用于定义存储归档日志的目录。通过show parameter命令,显示参数的值为(默认为)fast_recovery_area。示例如下:
SQL> show parameter db_recovery;

NAME TYPE VALUE


db_recovery_file_dest string /usr/local/oracle/flash_recovery_area
db_recovery_file_dest_size big integer 4182M

2.1.2 查看v$recovery_file_dest视图,可得知fast_recovery_area的空间限制、已使用的空间、文件数等。

SQL> select * from v$recovery_file_dest;

NAME SPACE_LIMIT SPACE_USED SPACE_RECLAIMABLE NUMBER_OF_FILES


D:\oracle\fast_recovery_area 4385144832 4346230272 2741248 102

2.2 更改归档日志目录
语法:alter system set 参数=值 scope=spfile;(设置成比较大的空间的目录,我这里是设置成了home下面)
示例:
SQL> alter system set db_recovery_file_dest=’/home/oracle/flash_recovery_area’ scope=spfile;

System altered.

3 更改归档日志大小
3.1 查看参数’db_recovery_file_dest_size’值
SQL> show parameter db_recov;

NAME TYPE VALUE


db_recovery_file_dest string /usr/local/oracle/flash_recovery_area
db_recovery_file_dest_size big integer 4182M

3.2 更改参数’db_recovery_file_dest_size’值大小
SQL> alter system set db_recovery_file_dest_size=41820M scope=spfile;

System altered.

3.3 关闭数据库,重启数据库
SQL> shutdown immediate;

Database closed.
Database dismounted.
ORACLE instance shut down.

SQL> startup open;

ORACLE instance started.
Total System Global Area 2572144640 bytes
Fixed Size 2283984 bytes
Variable Size 738199088 bytes
Database Buffers 1828716544 bytes
Redo Buffers 2945024 bytes
Database mounted.
Database opened.

3.4 再次查看参数’db_recovery_file_dest_size’值
SQL> show parameter db_reco;

NAME TYPE VALUE


db_recovery_file_dest string /home/oracle/flash_recovery_area
db_recovery_file_dest_size big integer 41820M

此时重启之后,就可以了。

=========================================================================
二、清理归档日志
1.登录数据库服务器,切换用户oracle,连接oracle
[root@userbeta~]# su - oracle
[oracle@userbeta~]$ sqlplus / nolog
SQL> connect / as sysdba
在这里插入图片描述
2. 检查flash recovery area的使用情况,可以看见archivelog已经很大了,达到99.94
SQL> select * from V$FLASH_RECOVERY_AREA_USAGE;
在这里插入图片描述
3.清理一下archivelog归档日志,生产环境建议备份
查询日志目录位置:show parameter recover;
删除归档日志,USERDB是数据库实例名:
cd /u01/app/oracle/flash_recovery_area/USERDB/archivelog
使用root帐户删除该目录下的文件或者备份其它地方
在这里插入图片描述

4.使用rman 操作,内容太多,只做部分截图
[oracle@userbeta archivelog]$ rman
RMAN> connect target /
crosscheck backup;
delete obsolete;
delete expired backup;
crosscheck archivelog all;
delete expired archivelog all;
//此步会有提示,输入 YES 回车
exit; //退出rman
在这里插入图片描述
5.确认是否操作成功
#sqlplus /nolog
SQL> connect /as sysdba
SQL> select * from V$FLASH_RECOVERY_AREA_USAGE;
在这里插入图片描述
6.删除完成,重新连接数据库

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值