ORACLE删除归档日志和ORA-00257问题

ORA-00257ORACLE归档日志已满,再未有新空间开辟的情况下,不允许对数据库进行操作。

--查看ORACLE归档是否开启 和 使用路径使用参数

Sqlplus / as sysdba

SQL > archive log list;

如图,ORACLE已经开启了归档模式,归档文件存放在ORACLE内置参数DB_RECOVERY_FILE_DEST路径下

当前归档日志的序列号是173.

--查看参数DB_RECOVERY_FILE_DEST设置的值

show parameter db_recovery_file_dest;

--在操作系统中找到最新归档日志文件

--查看序列号格式

show parameter log_archive_format;

%s: 日志序列号:
%S: 日志序列号(带有前导)
%t: 重做线程编号.
%T: 重做线程编号(带有前导)
%a: 活动ID号
%d: 数据库ID号
%r 联机重做日志(resetlogs)的id值

是不是感觉看不懂,咋数据库设置的文件格式与实际文件不匹配呀,这是因为ORACLE数据库log_archive_format参数不对DB_RECOVERY_FILE_DEST参数生效,要想使用log_archive_format参数设置归档文件格式,得使用DB_RECOVERY_FILE_DEST_N参数。

注意:DB_RECOVERY_FILE_DESTDB_RECOVERY_FILE_DEST_N不能共存,属于见面死关系。

--将db_recovery_file_dest参数置空

alter system set db_recovery_file_dest = '' scope=spfile;


--配置log_archive_dest_1参数

alter system set log_archive_dest_1='location=D:\app\Administrator\flash_recovery_area_My' scope=spfile;


--修改归档文件命名格式

alter system set log_archive_format='%t_%s_%r.arch' scope=spfile;


--重新启动数据库,使上述所有修改的参数生效

SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup
Total System Global Area 1720328192 bytes
Fixed Size                  2176448 bytes
Variable Size            1023412800 bytes
Database Buffers          687865856 bytes
Redo Buffers                6873088 bytes
数据库装载完毕。
数据库已经打开。
SQL> archive log list;
数据库日志模式                 存档模式
自动存档                           启用
存档终点                           D:\app\Administrator\flash_recovery_area_My
最早的联机日志序列          296
下一个存档日志序列          298
当前日志序列                     298
SQL> alter system switch logfile;

这么一看是不是就很清楚了?1_298_1018868058.ARCH,线程号是1,序列号是298,重做日志ID是1018868058

这3个参数在视图V$archived_log都可以查到。

select * from v$archived_log where archived='YES' and deleted='NO' ;

归档日志空间满了,我不是找到文件夹把归档日志删除了就可以了呢?

当然不行,注意我们查询视图V$archived_log的时候,加了条件deleted = 'NO'

你自己跑去目录把文件删除了,Oracle是不知道的,所以我们得使用Oracle的命令来删,这样Oracle才会更新相应的视图.

----删除ORACLE归档日志

rman target /   --操作系统认证进入rman

crosscheck archivelog all;   --检测所有归档

list expired archivelog all;  --列出所有无效的归档

delete noprompt expired archivelog all;  --删除过期的归档

但大多数时候都没有过期归档

delete archivelog until time 'sysdate - 7';  --删除7天前归档

至此,已经解决ORA-00257问题了。

如果归档空间过小的默认(4999M),还可以扩展归档文件存放空间

alter system set db_recovery_file_dest_size=100G; --设置使用空间大小

在删除归档日志的时候,我们删除过期的无效归档,很多的时候是毛都删不掉的,这就很疑惑了,归档多得ORACLE都报错了,怎么会还没过期日志呢?这就得讲讲rman 策略的问题了。

rman target / -- 操作系统认证进入rman

RMAN> show all;

--保持可以恢复的最新的1份数据库备份,任何超过最新1份的备份都将被标记为redundancy。默认值是1份
CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default

--是否对备份的数据文件及归档等文件开启优化的算法,默认关闭
CONFIGURE BACKUP OPTIMIZATION OFF; # default

--指定所有I/O操作的设备类型是硬盘或者磁带,默认值是硬盘
CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default

--强制数据库在备份文件或者执行改变数据库结构的命令之后将控制文件自动备份,默认值为关闭
CONFIGURE CONTROLFILE AUTOBACKUP OFF; # default

--配置控制文件的备份路径和备份格式
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # default

--配置数据库设备类型的并行度
CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default

--数据库的每次备份的copy数量,oracle的每一次备份都可以有多份完全相同的拷贝
CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default

--数据库的归档日志的存放设备类型
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default


CONFIGURE MAXSETSIZE TO UNLIMITED; # default
CONFIGURE ENCRYPTION FOR DATABASE OFF; # default
CONFIGURE ENCRYPTION ALGORITHM 'AES128'; # default
CONFIGURE COMPRESSION ALGORITHM 'BASIC' AS OF RELEASE 'DEFAULT' OPTIMIZE FOR LOAD TRUE ; # default

--删除策略
CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default

--配置控制文件的快照文件的存放路径和文件名,这个快照文件是在备份期间产生的,用于控制文件的读一致性
CONFIGURE SNAPSHOT CONTROLFILE NAME TO 'D:\APP\ADMINISTRATOR\PRODUCT\11.2.0\DBHOME_1\DATABASE\SNCFYLJ.ORA'; # default

RMAN>

归档日志的过期策略是RETENTION(保留)策略主导,还是 DELETION(删除)策略主导,目前我也还未分清。

以后清楚了会更新文章.

另外RETENTION(保留)策略一共有3个选项:

CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS;
CONFIGURE RETENTION POLICY TO REDUNDANCY 5;
CONFIGURE RETENTION POLICY TO NONE;

第一种recover window是保持所有足够的备份,可以将数据库系统恢复到最近七天内的任意时刻。任何超过最近七天的数据库备份将被标记为obsolete。


第二种redundancy 是为了保持可以恢复的最新的5份数据库备份,任何超过最新5份的备份都将被标记为redundancy。它的默认值是1份。


第三种不需要保持策略。

发布了35 篇原创文章 · 获赞 61 · 访问量 16万+

猜你喜欢

转载自blog.csdn.net/woailyoo0000/article/details/100821581
今日推荐