贵阳天柱网站建设招聘,app开发公司应聘,网站空间国外那个好,seo全网优化指南一、背景
由于近期在做应用升级和系统改造#xff0c;导致几天没怎么观察DG库的状态。这几天归档日志暴涨导致磁盘空间用尽#xff0c;从库无法接收主库的归档日志#xff0c;且从库无法工作。经过检查#xff0c;发现从库所需要的日志在主库均存在。所以当前文档使用归档…一、背景
由于近期在做应用升级和系统改造导致几天没怎么观察DG库的状态。这几天归档日志暴涨导致磁盘空间用尽从库无法接收主库的归档日志且从库无法工作。经过检查发现从库所需要的日志在主库均存在。所以当前文档使用归档日志的方式进行恢复
二、DG从库基于归档日志恢复
1、临时手动删除
手动删除无用文件、超过保留期限且占用空间大的备份文件、归档日志、数据库日志、审计日志等。
2、从库取消日志同步 SQLalter database recover managed standby database cancel;3、查询未同步的日志
# 主库查询归档日志序号
SQL archive log list;
Database log mode Archive Mode
Automatic archival Enabled
Archive destination /data/oracle/archive
Oldest online log sequence 115312
Next log sequence to archive 115314
Current log sequence 115314# 从库查询归档日志应用情况
SQLselect SEQUENCE#,FIRST_TIME,NEXT_TIME ,APPLIED from v$archived_log order by 1;SEQUENCE# FIRST_TIME NEXT_TIME APPLIED
---------- ------------ ------------ ---------115211 27-MAR-25 27-MAR-25 YES115212 27-MAR-25 27-MAR-25 YES115213 27-MAR-25 27-MAR-25 NO# 从库检查归档日志物理存储
注意此处可以根据归档日志产生时间以及编号来交叉验证缺少的归档日志
$ cd /data/oracle/archive4、主库查询 注意此处需要校验从库缺少的归档日志是否存在。如果存在则可以使用归档进行直接恢复。如果不存在则需要考虑使用其它方法恢复。但是当前文档是基于归档日志进行恢复的。
基于SCN增量备份进行恢复使用完全备份直接恢复
注意此处可以根据归档日志产生时间以及编号来确认从库缺少的归档日志是否存在
$ cd /data/oracle/archive# 经检查从库缺失的归档日志在主库还存在5、从库查看归档日志 注意这里查看归档日志的目的是看从库从哪个归档日志断开的最后应用的归档日志可能未完全应用。 经确认从库 115213 号归档日志仅应用了一半所以此处先移动该日志到其它路径下主库发送完整日志到该路径下 同时更改权限
6、从库重启日志同步 注意由于10G DG在自动断开同步的情况下重启MRP进程后需要在主库执行从库归档路径参数关闭再开启
# 主库发送归档日志到从库
$ scp 115213.arc [从库IP]:/data/oracle/archive# 从库更改权限
$ chown oracle:dba 115213.arc# 从库重启MRP进程
SQLalter database recover managed standby database using current logfile disconnect from session;7、主库执行参数更改 注意此处需要查看主库指定的从库归档参数是哪个才能准确重启归档参数
# 主库中指定的从库归档参数
log_archive_dest_2SERVICEORCL LGWR ASYNC VALID_FOR(all_logfiles,all_roles) DB_UNIQUE_NAMEDGS# 根据指定参数重启开关
SQLalter system set log_archive_dest_state_2defer;
SQLalter system set log_archive_dest_state_2enable;8、查看归档应用 注意此处明确看到正在恢复所以只需要等待恢复完成即可
$ tail -f alert_ORCL.log2025-03-27T11:28:47.52642108:00
PR00 (PID:2359): Media Recovery Log /data/oracle/archive/oatest_1_115213_1056118119.arc
PR00 (PID:2359): Media Recovery Waiting for T-1.S-115213 (in transit)
2025-03-27T11:29:22.17585508:00rfs (PID:31442): Opened log for T-1.S-115214 dbid 1148449189 branch 1056118119
三、永久解决磁盘爆满的方案
上述临时解决磁盘空间爆满的方式显然这不是我们DBA的风格DBA的风格都是追求自动化所有的一切只需要经过简单的手动处理就可以达到一劳永逸
1、定期自动化删除
创建删除脚本加入crontab实现定期自动化执行
定期自动化的操作流程
1、创建删除脚本 注意此处根据归档保留策略而定即可。如果确定可以删除那么可直接删除保留策略前的日志。或者将这部分日志移动、发送到其它路径或者服务器保存。
#!/bin/bash
#############################################################################
#
#AuthorAlbert
#Date27-Mar-25
#
# Main purposeThis script is used to delete expired files.
#
#
#############################################################################
# Parameter
logpath/data/scripts/scripts_db
CURTIMEdate %Y%m%d%H%M%S
delF_log$logpath/del_file_list_30.logexport weekdate %wif [ ! -f $delF_log ]; then
touch $delF_log
chmod 777 $delF_log
else
rm -rf $delF_log
touch $delF_log
chmod 777 $delF_log
fi#if [ $week -ne 0 ] ; then
# echo Today cannot Sunday:$week $delF_log
# exit 0
#fipad$(printf %0.1s -{1..60})folList[0][需要删除的文件的路径]echo Delete 30 days before file $delF_log
echo Perform Date :$CURTIME $delF_log
echo $pad $delF_log
for i in ${folList[]}
do
echo Location is : $i $delF_log
find $i -type d -mtime 30 $delF_log
find $i -type f -mtime 30 $delF_log
find $i -type f -mtime 30 -exec rm -rf {} \;
done
echo $pad $delF_log
echo Complete Time :$CURTIME $delF_log2、加入定时计划
[oraclehekdwdg ~]$ crontab -e
00 22 * * * sh /data/scripts/del_file_list_30.sh# 重启定时任务即可
[oraclehekdwdg ~]$service crond restart3、一劳永逸 实现自动化检查、删除就可以释放双手了。去干想干的事情。