ORA-00257:archiver error解决办法*

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

一、更改归档模式、目录、日志大小

1 查看归档日志

1.1 查看参数db_recovery_file_dest
1.1.1 “db_recovery_file_dest”是用于定义存储归档日志的目录。通过show parameter命令,显示参数的值为(默认为)fast_recovery_area。示例如下:
1.数据库启动 MOUNT 状态
$sqlplus / as sysdba

sql>shutdown immeiate --如果卡住,则试 shutdown abort
sqL>startup mount --数据库启动 MOUNT 状态

SQL> show parameter db_reco;

NAME                                 TYPE
------------------------------------ ----------------------
VALUE
------------------------------
db_recovery_file_dest                string
E:\Oracle\flash_recovery_area
db_recovery_file_dest_size           big integer
6G

1.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
----------- ---------- ----------------- ---------------
E:\Oracle\flash_recovery_area
 6442450944 4083002880                 0             127

2 更改归档日志目录

语法:alter system set 参数=值 scope=spfile;(设置成比较大的空间的目录,我这里是没有更改目录位置)
示例:

SQL> alter system set db_recovery_file_dest=’/home/oracle/flash_recovery_area’ scope=spfile;
System altered.

3 更改归档日志大小(自行选择是否增加空间)

3.1查看flash recovery area的使用情况

SQL> select * from V$FLASH_RECOVERY_AREA_USAGE;

FILE_TYPE                                PERCENT_SPACE_USED
---------------------------------------- ------------------
PERCENT_SPACE_RECLAIMABLE NUMBER_OF_FILES
------------------------- ---------------
CONTROL FILE                                              0
                        0               0

REDO LOG                                                  0
                        0               0

ARCHIVED LOG                                          99.54
                        0             127


FILE_TYPE                                PERCENT_SPACE_USED
---------------------------------------- ------------------
PERCENT_SPACE_RECLAIMABLE NUMBER_OF_FILES
------------------------- ---------------
BACKUP PIECE                                              0
                        0               0

IMAGE COPY                                                0
                        0               0

FLASHBACK LOG                                             0
                        0               0


FILE_TYPE                                PERCENT_SPACE_USED
---------------------------------------- ------------------
PERCENT_SPACE_RECLAIMABLE NUMBER_OF_FILES
------------------------- ---------------
FOREIGN ARCHIVED LOG                                      0
                        0               0


已选择7行。

3.2 查看参数’db_recovery_file_dest_size’值

SQL> show parameter recover;

NAME                                 TYPE
------------------------------------ ----------------------
VALUE
------------------------------
db_recovery_file_dest                string
E:\Oracle\flash_recovery_area
db_recovery_file_dest_size           big integer
3912M
recovery_parallelism                 integer
0

SQL> alter system set db_recovery_file_dest_size=6144M scope=spfile;

系统已更改。

3.3 查看归档日志大小

SQL> show parameter db_reco;

NAME                                 TYPE
------------------------------------ ----------------------
VALUE
------------------------------
db_recovery_file_dest                string
E:\Oracle\flash_recovery_area
db_recovery_file_dest_size           big integer
6G
SQL>

4 rman使用

删除归档日志处理步骤:

一、物理删除

oracle安装目录下找到flash_recovery_area 我这里要删的是orcl库
flash_recovery_area\orcl\ARCHIVELOG 删除指定日期

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

二、rman删除

1. rman连接
E:\Oracle\flash_recovery_area\orcl\ARCHIVELOG>rman

恢复管理器: Release 11.2.0.1.0 - Production on 星期五 3月 24 11:41:22 2023

Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.

RMAN> connect target /
2.进入 RMAN,清掉 7 天前的归档日志
#务必先执行(只要删除过achivelog目录下文件。都得执行下)
rman>crosscheck archivelog all;
#清除过期归档日志:
rman>delete noprompt expired archivelog all;
rman>delete noprompt obsolete  until time 'sysdate-7'  ;
2.1其他根据时间删除归档日志:
rman>delete noprompt obsolete  until time 'sysdate-7'  ;
rman>delete  archivelog all completed before 'sysdate - 7' ;
rman>delete noprompt force archivelog until time 'sysdate-1/4';

再次查询,发现使用率正常,已经降到0,

SQL> select * from V$FLASH_RECOVERY_AREA_USAGE;
3 别忘记打开数据库
sql>alter database open

如果想把删除的归档先做备份,然后再进行删除,则用以下这种方法,不过清理时间可能会较长,如与所示:

单独备份归档日志,并进行清理的脚本:
rman>backup archivelog all format '/backup/dbL0arc_%d_%s_%p_%c.arc' tag 'dbL0' filesperset 10

delete all input; --/backup/这个目录要改为现场以前归档文件备份存放的目录名称
建议用单独的归档目录存 Oracle 数据库的归档,例如
将归档路径调成一个不设预定大小的路径,如:   ALTER SYSTEM SET LOG_ARCHIVE_DEST_1='LOCATION=/u02/archivelog';

==============================================
额外:
Oracle 数据库关闭归档方法:

1.以 SYS 用户登录数据库到 SQL>下,其中 C:\:为 Windows 操作系统,#:为非 Windows 操作
系统
C:\>或#下执行:sqlplus / as sysdba
2.数据库进入到 mount 状态
sql>startup mount
3.关闭归档
sql>alter database noarchivelog;
4.打开数据库
sql>alter database open;
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: ORA-00257Oracle数据库中的一个错误代码,表示归档错误。错误信息中的“connect internal only, until freed”表示只有内部连接才能解决这个问题,直到空间释放为止。这个错误通常是由于归档日志文件已满或磁盘空间不足导致的。要解决这个问题,可以通过删除旧的归档日志文件或增加磁盘空间来释放空间。 ### 回答2: ORA-00257Oracle数据库中常见的错误之一,它表示归档器发生故障,无法继续归档。这个错误经常出现在数据库空间不足或者磁盘空间不足的情况下。另外,当出现一个归档进程正在使用或者另一个归档进程正在进行数据转储时,也可能出现ORA-00257错误。 这个错误可以通过在SQLPLUS命令行界面中连接到内部(internal)以解决。连接到内部可以使用以下命令: sqlplus / as sysdba 连接到内部后,可以尝试使用以下命令释放空间并解决ORA-00257错误: 1.查看当前的归档日志: archive log list; 2.查看归档日志的状态: select * from v$archive_dest_status; 3.检查数据库的归档日志目录: select name, value from v$parameter where name like '%log_archive_dest%'; 4.手动归档当前的重做日志: alter system archive log current; 5.删除重复或无用的归档日志: RMAN> crosscheck archivelog all; RMAN> delete noprompt expired archivelog all; 当然,磁盘空间不足也是ORA-00257错误的常见原因。在这种情况下,需要增加磁盘空间或定期清理日志来避免出现这个错误。 总之,ORA-00257错误是Oracle数据库中常见的归档器错误之一。尽管出现这个错误可能有多种原因,但可以通过连接到内部,查找并释放空间以及清理无用的归档日志来解决这个问题。 ### 回答3: ORA-00257Oracle数据库中的一个错误代码,表示出现了归档器错误,只能通过内部连接访问,直到释放。 当Oracle数据库中的归档日志没有及时清空时,就可能会出现ORA-00257错误。归档日志是Oracle数据库保留的一些历史记录,用于恢复数据和保证数据一致性。每当Oracle数据库执行完一定量的事务操作后,就会将这些操作记录下来,并写入到归档日志中。但是,如果归档日志没有及时清空,就会导致存储空间不足,从而导致ORA-00257错误的发生。 解决ORA-00257错误的方法是通过内部连接访问数据库,并释放所有占用该日志的进程。首先,需要先停止所有使用归档日志的进程,然后释放归档日志,最后再启动这些进程,即可解决错误。 具体操作步骤如下: 1. 使用管理员账号登录到数据库中。 2. 执行以下SQL语句,停止所有使用归档日志的进程。 SQL> ALTER system SWITCH logfile; SQL> ALTER system SWITCH logfile; SQL> ALTER system SWITCH logfile; SQL> SHUTDOWN immidiate; 3. 使用以下命令释放归档日志。 SQL> startup mount; SQL> ARCHIVE LOG ALL; SQL> ALTER DATABASE OPEN; 4. 最后,启动之前停止的进程。 SQL> ALTER system ARCHIVELOG ALL; 以上就是解决ORA-00257错误的完整步骤。需要注意的是,在清空归档日志之前,需要备份相关的数据以保证数据的安全性。同时,也应该定期清空归档日志,避免存储空间不足导致ORA-00257错误的再次发生。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值