ORA-00257: archiver error. Connect internal only, until freed.处理办法(亲测可行)

来源:互联网 发布:win10怎么连接usb网络 编辑:程序博客网 时间:2024/05/29 15:38

今日登录本机oracle数据库时突然报错:

SQL> conn henry/hu0456@orcl11g64b
ERROR:
ORA-00257: archiver error. Connect internal only, until freed.

从网上搜的文章基本都是提示归档日志空间不足。

利用sys管理员登录

SQL> conn / as sysdba
已连接。

查看了下V$FLASH_RECOVERY_AREA_USAGE,看看归档目录使用的情况。

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                     0                      0             0
BACKUP PIECE                          0                         0               0
IMAGE COPY                            0                         0               0
FLASHBACK LOG                         0                         0               0
FOREIGN ARCHIVED LOG                  0                         0               0
已选择7行。

我这里使用率显示0

再次查看归档日志目录:

SQL> archive log list
数据库日志模式            存档模式
自动存档             启用
存档终点            E:\app\Administrator\logs\archivelog
最早的联机日志序列     861
下一个存档日志序列   861
当前日志序列           1129

于是,查看磁盘空间E盘发现剩余200GB空间可用

SQL> show parameter log_archive_dest

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
log_archive_dest                     string      E:\app\Administrator\logs\arch
                                                 ivelog
log_archive_dest_1                   string
log_archive_dest_10                  string
log_archive_dest_11                  string
log_archive_dest_12                  string
log_archive_dest_13                  string
log_archive_dest_14                  string
log_archive_dest_15                  string
log_archive_dest_16                  string

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

SQL> show parameter db_recovery_file_dest_size
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest_size           big integer 3912M

SQL> set linesize 200

SQL>select * from v$log;
    GROUP#    THREAD#  SEQUENCE#      BYTES  BLOCKSIZE    MEMBERSARC STATUS           FIRST_CHANGE# FIRST_TIME     NEXT_CHANGE# NEXT_TIME
---------- ---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- -------------- ------------ ---
         1          1       1128   52428800        512          1NO  INACTIVE              20156232 08-4月 -17         20159457 08-4月 -17
         2          1       1129   52428800        512          1NO CURRENT               20159457 08-4月 -17       2.8147E+14
         3          1        861   52428800        512          1NO  INACTIVE              15592666 24-1月 -17        15601707 24-1月 -17

上面列表可看出

ARC

列可正常归档,如果全部为

NO

oracle

将无法进行归档,

此时

oracle

实例会自动关闭。

上面列表可看出

ARC

列可正常归档,如果全部为

NO

oracle

将无法进行归档,

此时

oracle

实例会自动关闭。

上面列表可看出

ARC

列可正常归档,如果全部为

NO

oracle

将无法进行归档,

此时

oracle

实例会自动关闭。

上面列表可看出ARC列全部为NOoracle将无法进行归档,此时oracle实例会自动关闭

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

查询以确定数据库位于

archivelog

模式中且归档过程正在运行

SQL> select * from v$recovery_file_dest;
NAME
SPACE_LIMIT SPACE_USED SPACE_RECLAIMABLE NUMBER_OF_FILES
----------- ---------- ----------------- ---------------
 4102029312          0                 0               0

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

查询以确定数据库位于archivelog模式中且归档过程正在运行(此处已经停止)

SQL>select log_mode from v$database;
LOG_MODE
------------
ARCHIVELOG
SQL> select archiver from v$instance;
ARCHIVE
-------
FAILED

下面需要重构归档日志文件:

SQL> alter database clear unarchived logfile group2;
alter database clear unarchived logfile group 2
*
第 1 行出现错误:
ORA-01624: 日志 2 是紧急恢复实例 orcl11g64b (线程 1) 所必需的
ORA-00312: 联机日志 2 线程 1: 'E:\APP\ADMINISTRATOR\ORADATA\ORCL11G64B\REDO02.LOG'

SQL>alter database clear unarchived logfile group3;
数据库已更改。

SQL> conn henry/hu0456@orcl11g64b
已连接。(此处已经可以连接了)

SQL> conn / as sysdba
已连接。
SQL> select * from v$log;
    GROUP#    THREAD#  SEQUENCE#      BYTES  BLOCKSIZE    MEMBERSARC STATUS           FIRST_CHANGE# FIRST_TIME     NEXT_CHANGE# NEXT_TIME
---------- ---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- -------------- ------------ ---
         1          1       1131   52428800        512          1YES ACTIVE
               20178043 08-4月 -17         20180632 08-4月 -17
         2          1       1132   52428800        512          1 NO  CURRENT               20180632 08-4月 -17       2.8147E+14
         3          1       1130   52428800        512          1 YES
ACTIVE                20177832 08-4月 -17         20178043 08-4月 -17

再次重启数据库

SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup mount;
ORACLE 例程已经启动。
Total System Global Area 2522038272 bytes
Fixed Size                  2178376 bytes
Variable Size            1711276728 bytes
Database Buffers          788529152 bytes
Redo Buffers               20054016 bytes
数据库装载完毕。

SQL> select * from v$log;
    GROUP#    THREAD#  SEQUENCE#      BYTES  BLOCKSIZE    MEMBERS ARC STATUS           FIRST_CHANGE# FIRST_TIME     NEXT_CHANGE# NEXT_TIME
---------- ---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- -------------- ------------ ---
         1          1       1131   52428800        512          1YES INACTIVE             20178043 08-4月 -17         20180632 08-4月 -17
         3          1       1130   52428800        512          1YES INACTIVE              20177832 08-4月 -17         20178043 08-4月 -17
         2          1       1132   52428800        512          1 NO  CURRENT              20180632 08-4月 -17       2.8147E+14

SQL> alter database clear unarchived logfile group 2;
数据库已更改。
SQL> alter database clear unarchived logfile group 1;
数据库已更改。
SQL> alter database clear unarchived logfile group 3;
数据库已更改。

SQL> select * from v$log;
    GROUP#    THREAD#  SEQUENCE#      BYTES  BLOCKSIZE    MEMBERS ARC STATUS           FIRST_CHANGE# FIRST_TIME     NEXT_CHANGE# NEXT_TIME
---------- ---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- -------------- ------------ ---
         1          1       1134   52428800        512          1NO  CURRENT               20180634 08-4月 -17       2.8147E+14
         3          1          0   52428800        512          1YES UNUSED
               20180633 08-4月 -17         20180634 08-4月 -17
         2          1          0   52428800        512          1YES UNUSED               20180632 08-4月 -17         20180633 08-4月 -17

再次查看归档状态

SQL> select log_mode from v$database;
LOG_MODE
------------
ARCHIVELOG
SQL> select archiver from v$instance;
ARCHIVE
-------
STARTED  已开始归档

数据库正常(此方法不用删除归档日志)

0 0
原创粉丝点击