您的位置:首页 > 其它

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

2017-04-08 17:51 399 查看
今日登录本机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    MEMBERS
ARC
STATUS           FIRST_CHANGE# FIRST_TIME     NEXT_CHANGE# NEXT_TIME
---------- ---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- -------------- ------------ ---
         1          1       1128   52428800        512          1
NO  INACTIVE              20156232 08-4月 -17         20159457 08-4月 -17
         2          1       1129   52428800        512          1
NO
 CURRENT               20159457 08-4月 -17       2.8147E+14
         3          1        861   52428800        512          1
NO  INACTIVE              15592666 24-1月 -17
        15601707 24-1月 -17

上面列表可看出
ARC
列可正常归档,如果全部为
NO

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

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

oracle
将无法进行归档,
此时
oracle
实例会自动关闭。
上面列表可看出ARC列全部为NO,oracle将无法进行归档,此时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 group
2;

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 group
3;

数据库已更改。

SQL> conn henry/hu0456@orcl11g64b

已连接。(此处已经可以连接了)

SQL> conn / as sysdba
已连接。
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          1
YES 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          1
YES INACTIVE
             20178043 08-4月 -17         20180632 08-4月 -17
         3          1       1130   52428800        512          1
YES 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          1
NO  CURRENT               20180634 08-4月 -17       2.8147E+14
         3          1          0   52428800        512          1
YES UNUSED
               20180633 08-4月 -17         20180634 08-4月 -17
         2          1          0   52428800        512          1
YES 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  已开始归档

数据库正常(此方法不用删除归档日志)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐