当ORACLE归档日志满后如何正确删除归档日志
4个回答
展开全部
1,首先删除归档日志物理文件,归档日志一般都是位于archive目录下,AIX系统下文件格式为“1_17884_667758186.dbf”,建议操作前先对数据库进行备份,删除时至少保留最近几天的日志用于数据库恢复。
2,把归档日志的物理文件删除后,我们就可以正常登入ORACLE了,但是还没完全把归档日志删除干净,ORACLE的controlfile中仍然记录着这些archivelog的信息,在oracle的OEM管理器中有可视化的日志展现出,当我们手工清除archive目录下的文件后,这些记录并没有被我们从controlfile中清除掉,接下去我们要做的就是这个工作。
利用RMAN进行删除操作,操作步骤如下:(window客户端系统为例):
1.指定数据库实例
C:/Documents and Settings/Administrator>SET ORACLE_SID =orcl
2.连接数据库
C:/Documents and Settings/Administrator>RMAN TARGET SYS/sysadmin@orcl
3.查看归档日志的状态
RMAN> list archivelog all;
4.手工删除归档日志文件
RMAN> DELETE ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-7';
5.退出rman.
2,把归档日志的物理文件删除后,我们就可以正常登入ORACLE了,但是还没完全把归档日志删除干净,ORACLE的controlfile中仍然记录着这些archivelog的信息,在oracle的OEM管理器中有可视化的日志展现出,当我们手工清除archive目录下的文件后,这些记录并没有被我们从controlfile中清除掉,接下去我们要做的就是这个工作。
利用RMAN进行删除操作,操作步骤如下:(window客户端系统为例):
1.指定数据库实例
C:/Documents and Settings/Administrator>SET ORACLE_SID =orcl
2.连接数据库
C:/Documents and Settings/Administrator>RMAN TARGET SYS/sysadmin@orcl
3.查看归档日志的状态
RMAN> list archivelog all;
4.手工删除归档日志文件
RMAN> DELETE ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-7';
5.退出rman.
2018-07-26 · 做真实的自己 用良心做教育
千锋教育
千锋教育专注HTML5大前端、JavaEE、Python、人工智能、UI&UE、云计算、全栈软件测试、大数据、物联网+嵌入式、Unity游戏开发、网络安全、互联网营销、Go语言等培训教育。
向TA提问
关注
展开全部
一、首先删除归档日志物理文件,归档日志一般都是位于archive目录下,AIX系统下文件格式为“1_17884_667758186.dbf”,建议操作前先对数据库进行备份,删除时至少保留最近几天的日志用于数据库恢复。
二、把归档日志的物理文件删除后,我们就可以正常登入ORACLE了,但是还没完全把归档日志删除干净,ORACLE的controlfile中仍然记录着这些archivelog的信息,在oracle的OEM管理器中有可视化的日志展现出,当我们手工清除archive目录下的文件后,这些记录并没有被我们从controlfile中清除掉,接下去我们要做的就是这个工作。
我们利用RMAN进行删除操作,操作步骤如下:(window客户端系统为例)
1.指定数据库实例
C:/Documents and Settings/Administrator>SET ORACLE_SID =orcl
2.连接数据库
C:/Documents and Settings/Administrator>RMAN TARGET SYS/sysadmin@orcl
3.查看归档日志的状态
RMAN> list archivelog all;
4.手工删除归档日志文件
RMAN> DELETE ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-7';
说明:
SYSDATA-7,表明当前的系统时间7天前,before关键字表示在7天前的归档日志,如果使用了闪回功能,也会删除闪回的数据。
同样道理,也可以删除从7天前到现在的全部日志,不过这个命令要考虑清楚,做完这个删除,最好马上进行全备份数据库
DELETE ARCHIVELOG from TIME 'SYSDATE-7'; 删除从7天前到现在的全部日志,慎用
UNIX/LINUX下也可以通过FIND找到7天前的归档数据,使用EXEC子操作删除
find /oraarchive -xdev -mtime +7 -name "*.dbf" -exec rm -f {} ;
这样做仍然会在RMAN里留下未管理的归档文件
仍需要在RMAN里执行下面2条命令
crosscheck archivelog all;
delete expired archivelog all;
所以还不如上面的方法好用,不过用FIND的好处就是,可以在条件上,和EXEC子项上做很多操作,实现更复杂的功能
5.退出rman
RMAN> exit
二、把归档日志的物理文件删除后,我们就可以正常登入ORACLE了,但是还没完全把归档日志删除干净,ORACLE的controlfile中仍然记录着这些archivelog的信息,在oracle的OEM管理器中有可视化的日志展现出,当我们手工清除archive目录下的文件后,这些记录并没有被我们从controlfile中清除掉,接下去我们要做的就是这个工作。
我们利用RMAN进行删除操作,操作步骤如下:(window客户端系统为例)
1.指定数据库实例
C:/Documents and Settings/Administrator>SET ORACLE_SID =orcl
2.连接数据库
C:/Documents and Settings/Administrator>RMAN TARGET SYS/sysadmin@orcl
3.查看归档日志的状态
RMAN> list archivelog all;
4.手工删除归档日志文件
RMAN> DELETE ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-7';
说明:
SYSDATA-7,表明当前的系统时间7天前,before关键字表示在7天前的归档日志,如果使用了闪回功能,也会删除闪回的数据。
同样道理,也可以删除从7天前到现在的全部日志,不过这个命令要考虑清楚,做完这个删除,最好马上进行全备份数据库
DELETE ARCHIVELOG from TIME 'SYSDATE-7'; 删除从7天前到现在的全部日志,慎用
UNIX/LINUX下也可以通过FIND找到7天前的归档数据,使用EXEC子操作删除
find /oraarchive -xdev -mtime +7 -name "*.dbf" -exec rm -f {} ;
这样做仍然会在RMAN里留下未管理的归档文件
仍需要在RMAN里执行下面2条命令
crosscheck archivelog all;
delete expired archivelog all;
所以还不如上面的方法好用,不过用FIND的好处就是,可以在条件上,和EXEC子项上做很多操作,实现更复杂的功能
5.退出rman
RMAN> exit
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
为何要删除,你既然开启了归档目的就是为了rman备份,备份语句里面可以加上参数可以自动删除备份的数据,之前搞个几个rman备份的脚本,你看下,分别是归档备份和全库备份的。
1、archbackup.sh
----------------------------分割线--------------------------------
#!/bin/sh
. /home/oracle/.bash_profile
rman cmdfile="/orabackup/rman/archbackup.rcv" log="/orabackup/rman/archbackup.log" append 2>>/orabackup/rman/archbackup.err
----------------------------分割线--------------------------------
2、archbackup.rcv
----------------------------分割线--------------------------------
connect target /
run {
allocate channel d1 type disk connect "sys/system@orcl1";
allocate channel d2 type disk connect "sys/system@orcl2";
crosscheck backup;
crosscheck archivelog all;
backup as compressed backupset archivelog all delete input format '/orabackup/archzip/al_%d_%t_%s_%p.dbf';
delete noprompt obsolete;
delete noprompt expired backup;
delete noprompt expired archivelog all;
release channel d1;
release channel d2;
}
----------------------------分割线--------------------------------
3、fullbackup.sh
----------------------------分割线--------------------------------
#!/bin/sh
. /home/oracle/.bash_profile
rman cmdfile="/orabackup/rman/fullbackup.rcv" log=" /orabackup/rman/fullbackup.log" append 2>> /orabackup/rman/fullbackup.err
----------------------------分割线--------------------------------
4、fullbackup.rcv
----------------------------分割线--------------------------------
connect target /
run {
allocate channel d1 type disk;
allocate channel d2 type disk;
allocate channel d3 type disk;
allocate channel d4 type disk;
#crosscheck backup;
#crosscheck archivelog all;
backup as compressed backupset format '/orabackup/fullzip/full_%d_%t_%s_%p.dbf' database ;
#delete noprompt obsolete;
#delete noprompt expired backup;
#delete noprompt expired archivelog all;
release channel d1;
release channel d2;
release channel d3;
release channel d4;
}
run {
allocate channel d1 type disk connect "sys/system@orcl1";
allocate channel d2 type disk connect "sys/system@orcl2";
crosscheck backup;
crosscheck archivelog all;
delete noprompt obsolete;
delete noprompt expired backup;
delete noprompt expired archivelog all;
release channel d1;
release channel d2;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
是报下面这个错吧
ORA-00257: archiver error. Connect internal only, until freed
看我这条笔记里的解决办法
http://hi.baidu.com/tj_angela/item/ef444e8a79f5b0874514cf69
ORA-00257: archiver error. Connect internal only, until freed
看我这条笔记里的解决办法
http://hi.baidu.com/tj_angela/item/ef444e8a79f5b0874514cf69
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |