ORACLE删除归档日志和ORA-00257问题
ORA-00257:ORACLE归档日志已满,再未有新空间开辟的情况下,不允许对数据库进行操作。
--查看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_DEST与DB_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份。
第三种不需要保持策略。
ORACLE删除归档日志和ORA-00257问题相关推荐
- RAC环境备份归档日志和RMAN恢复启动数据库
环境linux Oracle10.2.0.1 归档日志在ASM磁盘组 恢复到原来的RAC节点 根据Oracle的RAC环境的不同,RMAN备份.恢复操作也是不同的.如果RAC环境是建立在CLUSTER ...
- ORACLE 删除归档日志连接rman查看归档日志占有率
我们都知道在controlfile中记录着每一个archivelog文件的相关信息,当然们在OS下把这些物理文件delete掉后,在我们的controlfile中仍然记录着这些archivelog文件 ...
- oracle实例宕机重启,Oracle数据库归档日志满后造成系统宕机解决一例
第一次宕机时,初始以为是系统内存溢出,于是重启应用服务器,发现应用服务器在启动时报错,错误为无法连接到Oracle数据库.于是 第一次宕机时,初始以为是系统内存溢出,于是重启应用服务器,发现应用服务器 ...
- oracle 归档日期,Oracle中归档日期满报错解决方法
最近在工作的时候操作数据库常会遇到这样的问题:"ORA-00257 archiver error. Connect internal only, until freed",百度搜了 ...
- Oracle 删除归档日志脚本
归档日志记录着数据库的操作记录,是做数据恢复的依据,如果数据库开启了归档模式,那么就会产生大量的归档日志,当然如果有RMAN备份的话,可以在备份之后删除已经备份过的日志,如果是没有采用rman备份的话 ...
- oracle数据库归档闪回,oracle数据库开归档闪回模式
10G 归档相关 转:http://blog.163.com/z_rx/blog/static/2763637620077811571555/ 关于Oracle 10g 归档方式的讨论:关闭归档/启用 ...
- 当ORACLE归档日志满后如何正确删除归档日志
当ORACLE 归档日志满了后,将无法正常登入ORACLE,需要删除一部分归档日志才能正常登入ORACLE. 一.首先删除归档日志物理文件,归档日志一般都是位于archive目录下,AIX系统下文件格 ...
- oracle如何删除可回收归档,Oracle正确删除归档并回收空间的方法
一个Oracle归档日志经常满,表现为/oraarchive 这个文件空间占用100%大家一定抱怨Oracle为何没有归档维护工具,很多人直接删除了事,错了,Oracle有,而且很智能,可以正确的删除 ...
- 未解决ora-01034、ora-03113、oracle使用RMAN删除归档日志
接此,https://blog.csdn.net/bcbobo21cn/article/details/116762059 oracle不能用:继续解决问题: 前次操作没有 set ORACLE_SI ...
最新文章
- html资源文件记载进度条,用进度条显示文件读取进度《 HTML5:文件 API 》
- ffmpeg rtp时间戳
- 成信大2020C语言编程114,南京信息工程大学2020考研大纲822CC语言程序设计
- SRAM Controller
- mysql安装教程刘猿猿_mysql安装
- [Hands On ML] 5. 支持向量机
- 信息学奥赛之数学一本通_部分地区中考加分,又一批中学公布中考认可信息学特长生!...
- 【兼容M1】MovieSherlock Pro Mac 视频下载和转换工具
- 的garch预测_精品细读|基于隐含波动率、已实现波动率和GARCH模型波动率的预测...
- Gartner发布云产品评估报告:阿里云计算能力全球第一 1
- SaltStack 拉取和推送文件
- zookeeper保证单一视图
- Linux卸载Apache服务器
- Ubuntu安装播放mp4格式视频(安装ffmpeg)
- 小程序游戏年龄计算机,2018年小程序游戏排行榜,这十款游戏你玩过几个?
- 十年远景书计算机应用,写一篇十年愿景书
- 网络会议openmeetings下的openmeetings-util文件分析3
- 一条SQL查询语句的执行过程,一张图说清SQL查询语句执行过程
- 界面登录、登陆后才能访问另外页面
- python中forward的作用_Pytorch学习笔记07----nn.Module类与前向传播函数forward的理解