Oracle数据库归档日志满了会导致数据库实例自动关闭,不能正常使用数据库,那归档日志满了该如何处理呢

删除归档文件
首先删除归档文件在物理主机磁盘中的文件
物理文件删除后ORACLE的controlfile中仍然记录着这些archivelog的信息,在oracle的OEM管理器中有可视化的日志展现出,接下来要做的就是从controlfile中清除掉多余归档日志文件记录

一、查看是否开启归档日志

SQL> archive log list;  
Database log mode          Archive Mode  
Automatic archival         Enabled  
Archive destination        /oracle/archivelogs  
Oldest online log sequence     1564  
Next log sequence to archive   1566  
Current log sequence           1566  

二、删除数据库归档文件。

cd /oracle/archivelogs  
执行下面命令删除7天以前的归档日志:  
find . -xdev -mtime +7 -name "*.dbf" -exec rm -f {}  \;  
等同于在rman里执行  
DELETE ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-7';  
三、执行rman逻辑上删除过期日志

rman  
RMAN> connect target /  
>crosscheck archivelog all;    //检查归档日志  
>delete expired archivelog all;   //删除失效的归档日志

RMAN>list expired archivelog all; /*列出所有expired(过期)的归档日志文件,此时你就可看到移走的归档日志文件均被标记为expired  
>quit  


至此归档文件完全删除~!

 

 

2、

oracle数据库查询获得系统归档日志的切换频率及大小
 select max (first_time) max_first_time,to_char (first_time, 'yyyy-mm-dd') day,count (recid) count_number,count (recid) * 200 size_mb from v$log_history group by to_char (first_time, 'yyyy-mm-dd') order by 1

3、

Oracle查看当前连接的数据库实例及状态:

SQL> select instance_name,status

INSTANCE_NAME          STATUS

-------------------------------- ------------------------

orcl                                   OPEN

归档模式(archivelog):可以在线/离线备份数据库,可以是全备份或者是部分备份(单个表空间/数据文件) ;

非归档模式(noarchivelog):只能离线备份而且必须备份所有的数据文件,控制文件,日志文件

Oracle查看当前连接的数据库的归档模式:

SQL> select name, log_mode from v$database;

NAME             LOG_MODE

------------------ ------------------------

ORCL                  ARCHIVELOG

 查看数据库日志文件的大小

sys@bomsdb> select distinct(bytes/1024/1024) MB from v$log;

MB

----------

200

如果上面的查询返回不止一条,说明你的系统中存在不同大小的redolog。应该强烈抵制这种事情的发生。确保数据库具有相同大小的redo log,便于管理和使用。

4、

查看已经使用到的最老的日志文件

select name,sequence#,to_char(first_time,'dd-mon-yyyy hh24:mi:ss') from v$archived_log order by first_time;

5、oracle 正确删除归档日志,并清除 V$ARCHIVED_LOG 数据


1. 连接 RMAN 管理

 rman target /

2. 查看归档日志列表

RMAN> crosscheck archivelog all;

3. 删除所有归档日志

RMAN> DELETE ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE';

4. 清空V$ARCHIVED_LOG

SQL> execute sys.dbms_backup_restore.resetCfileSection(11);

5. 查看 V$ARCHIVED_LOG

SQL> select * from V$ARCHIVED_LOG;

6. 生成新的日志文件

SQL> alter system switch logfile;

——————————————————————————————————————————

6、

Configure retention policy to redundancy 1;--指保留一次备份,其余的都是过期的

--Configure retention policy to recovery window of 7 days;--指保留7天内的备份,其余的都是过期的

7、


切换重做日志
SQL> alter system switch logfile;

8、

(1) 归档日志的查询
SQLPlus执行conn /as sysdba去查看,也可以只直接在PLSQL中查询:
执行:
select * from v$flash_recovery_area_usage;

 

oracle 手动删除归档日志_hive

ARCHIVED LOG行的percent_space_used 表示归档日志占用空间的百分比:
如果 ARCHIVED LOG 超过90% oracle随时有宕机的危险。
(2)  增大归档日志空间
该操作需要在SQLPlus中进行:
alter system set db_recovery_file_dest_size=20G;

9、

Delete Archivelog until time

如果数据库处于归档日志模式,则 Oracle 数据库正在归档重做日志组文件。
当重做日志文件被归档时,重做日志文件会被新的重做数据覆盖。但是,如果您不安排任何删除作业,则不会删除或自动删除存档日志
您需要定期删除归档日志,否则您将收到归档程序错误。
————————————————

10、


使用语句来查询每天产生归档的大小

 Select to_char(completion_time,'yyyy-mm-dd') as date1,count(0) as cnt,round(sum((blocks *block_size)/1024/1024)) as mb from v$archived_log
group by to_char(completion_time,'yyyy-mm-dd') order by date1 desc;

 

--CNT为每天归档次数,MB为每天的归档量

 

 11、


设置数据库归档时间间隔,比如30分钟归档一次。

  • SYS@test>alter system set archive_lag_target=1800;
  • System altered.


12、

Oracle归档日志空间不足引发的问题及归档日志的检测与删除

https://wenku.baidu.com/view/ef383cdd48fe04a1b0717fd5360cba1aa8118cf7.html?_wkts_=1687331136142&bdQuery=Oracle%E5%BD%92%E6%A1%A3%E6%97%A5%E5%BF%97%E7%A9%BA%E9%97%B4%E4%B8%8D%E8%B6%B3%E5%BC%95%E5%8F%91%E7%9A%84%E9%97%AE%E9%A2%98%E5%8F%8A%E5%BD%92%E6%A1%A3%E6%97%A5%E5%BF%97%E7%9A%84%E6%A3%80%E6%B5%8B%E4%B8%8E%E5%88%A0%E9%99%A4

oracle 手动删除归档日志_hive_02

 

oracle 手动删除归档日志_数据库_03

 

oracle 手动删除归档日志_hive_04

 

oracle 手动删除归档日志_hive_05

 

oracle 手动删除归档日志_归档日志_06

 

oracle 手动删除归档日志_归档日志_07

 

oracle 手动删除归档日志_归档日志_08

 

oracle 手动删除归档日志_hive_09

 

oracle 手动删除归档日志_hive_10

 

oracle 手动删除归档日志_数据库_11

 

 

 

 

 

13、