今日登录本机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 已开始归档
数据库正常(此方法不用删除归档日志)