处理归档满了fast_recovery_area无剩余空间的案例

本文详细介绍了当Oracle数据库的归档日志区域空间不足时的处理方法,包括增加空间大小、手工删除不必要的归档日志文件以及利用RMAN命令进行归档日志清理。同时,文章还强调了在使用操作系统命令删除文件后,需要通过RMAN的crosscheck命令验证文件状态,并使用DELETEEXPIRED命令清理过期的日志和备份。最后,提供了数据库空间管理的总结和常见问题解决方案。
部署运行你感兴趣的模型镜像
今天早晨收到手机短信系统预警信息,登陆公司系统后检查发现是一台数据库系统。
查看系统alter日志发现如下信息:
************************************************************************
ARC1: Error 19809 Creating archive log file to '/app/oracle/fast_recovery_area/ATS/archivelog/2015_07_28/o1_mf_1_189_%u_.arc'
Errors in file /app/oracle/diag/rdbms/ats/ats/trace/ats_arc0_29634.trc:
ORA-19815: WARNING: db_recovery_file_dest_size of 5218762752 bytes is 100.00% used, and has 0 remaining bytes available.
Errors in file /app/oracle/diag/rdbms/ats/ats/trace/ats_arc3_29640.trc:
ORA-19815: WARNING: db_recovery_file_dest_size of 5218762752 bytes is 100.00% used, and has 0 remaining bytes available.
************************************************************************
************************************************************************
You have following choices to free up space from recovery area:
You have following choices to free up space from recovery area:
1. Consider changing RMAN RETENTION POLICY. If you are using Data Guard,
1. Consider changing RMAN RETENTION POLICY. If you are using Data Guard,
   then consider changing RMAN ARCHIVELOG DELETION POLICY.
   then consider changing RMAN ARCHIVELOG DELETION POLICY.
2. Back up files to tertiary device such as tape using RMAN
2. Back up files to tertiary device such as tape using RMAN
   BACKUP RECOVERY AREA command.
   BACKUP RECOVERY AREA command.
3. Add disk space and increase db_recovery_file_dest_size parameter to
3. Add disk space and increase db_recovery_file_dest_size parameter to
   reflect the new space.
   reflect the new space.
4. Delete unnecessary files using RMAN DELETE command. If an operating
4. Delete unnecessary files using RMAN DELETE command. If an operating
   system command was used to delete files, then use RMAN CROSSCHECK and
   system command was used to delete files, then use RMAN CROSSCHECK and
   DELETE EXPIRED commands.
************************************************************************
   DELETE EXPIRED commands.
ARC0: Error 19809 Creating archive log file to '/app/oracle/fast_recovery_area/ATS/archivelog/2015_07_28/o1_mf_1_188_%u_.arc'
************************************************************************
ARC3: Error 19809 Creating archive log file to '/app/oracle/fast_recovery_area/ATS/archivelog/2015_07_28/o1_mf_1_187_%u_.arc'
Errors in file /app/oracle/diag/rdbms/ats/ats/trace/ats_arc1_29636.trc:
ORA-19815: WARNING: db_recovery_file_dest_size of 5218762752 bytes is 100.00% used, and has 0 remaining bytes available.
************************************************************************
You have following choices to free up space from recovery area:
1. Consider changing RMAN RETENTION POLICY. If you are using Data Guard,
   then consider changing RMAN ARCHIVELOG DELETION POLICY.
2. Back up files to tertiary device such as tape using RMAN
   BACKUP RECOVERY AREA command.
3. Add disk space and increase db_recovery_file_dest_size parameter to
   reflect the new space.
4. Delete unnecessary files using RMAN DELETE command. If an operating
   system command was used to delete files, then use RMAN CROSSCHECK and
   DELETE EXPIRED commands.
************************************************************************
ARC1: Error 19809 Creating archive log file to '/app/oracle/fast_recovery_area/ATS/archivelog/2015_07_28/o1_mf_1_189_%u_.arc'


原来是系统归档满了,我们从预警信息中已经看到,oracle给出了4种处理方案。现在oracle是越来越智能了。
我采用的是第3种方案,修改归档日志区的大小。
先看看目前的大小

SQL> show parameter db_reco    

NAME         TYPE  VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest       string  /app/oracle/fast_recovery_area
db_recovery_file_dest_size      big integer 4G

SQL> Alter system set db_recovery_file_dest_size=20G scope=both;

System altered.

SQL> show parameter db_reco    

NAME         TYPE  VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest       string  /app/oracle/fast_recovery_area
db_recovery_file_dest_size      big integer 20G

SQL> select file_type, percent_space_used as used,percent_space_reclaimable as reclaimable,      number_of_files as "number" from v$flash_recovery_area_usage;

FILE_TYPE     USED RECLAIMABLE number
-------------------- ---------- ----------- ----------
CONTROL FILE        0    0      0
REDO LOG        0    0      0
ARCHIVED LOG    40.47    0     32
BACKUP PIECE        0    0      0
IMAGE COPY        0    0      0
FLASHBACK LOG        0    0      0
FOREIGN ARCHIVED LOG       0    0      0

7 rows selected.

我们也可以手工删除归档日志信息。
cd /app/oracle/fast_recovery_area
rm -rf *
登陆到rman 进行处理。

RMAN> crosscheck archivelog all;
  
released channel: ORA_DISK_1
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=68 device type=DISK
validation failed for archived log
archived log file name=/app/oracle/fast_recovery_area/ATS/archivelog/2015_07_28/mf_1_5_7bxbhkof_.arc RECID=1 STAMP=766015219
validation failed for archived log
archived log file name=/app/oracle/fast_recovery_area/ATS/archivelog/2015_07_28/f_1_6_7bxw2gpo_.arc RECID=2 STAMP=766033231
……………………………………
validation failed for archived log
archived log file name=/app/oracle/fast_recovery_area/ATS/archivelog/2015_07_28/o1_mf_1_105_7gc3co97_.arc RECID=132 STAMP=770306728
validation failed for archived log
archived log file name=/app/oracle/fast_recovery_area/ATS/archivelog/2015_07_28/o1_mf_1_106_7gc3cv1w_.arc RECID=123 STAMP=770306728
validation failed for archived log
archived log file name=/app/oracle/fast_recovery_area/ATS/archivelog/2015_07_28/o1_mf_1_107_7gc3mbpr_.arc RECID=127 STAMP=770306728
validation succeeded for archived log
archived log file name=/app/oracle/fast_recovery_area/ATS/archivelog/2015_07_28/o1_mf_1_1_7gxtrlnq_.arc RECID=134 STAMP=770312597
validation succeeded for archived log
archived log file name=/app/oracle/fast_recovery_area/ATS/archivelog/2015_07_28/o1_mf_1_2_7gxtrloz_.arc RECID=135 STAMP=770312597
validation succeeded for archived log
archived log file name=/app/oracle/fast_recovery_area/ATS/archivelog/2015_07_28/o1_mf_1_3_7gxtrodg_.arc RECID=136 STAMP=770312599
validation failed for archived log
archived log file name=/app/oracle/fast_recovery_area/ATS/archivelog/2015_07_28/o1_mf_1_1_7gc3ojqw_.arc RECID=126 STAMP=770306728
……………………………………
validation succeeded for archived log
archived log file name=/app/oracle/fast_recovery_area/ATS/archivelog/2015_07_28/o1_mf_1_20_7gxlq29k_.arc RECID=113 STAMP=770306728
validation succeeded for archived log
archived log file name=/app/oracle/fast_recovery_area/ATS/archivelog/2015_07_28/o1_mf_1_21_7gxl3zdm_.arc RECID=114 STAMP=770306728
Crosschecked 136 objects
  
RMAN> DELETE EXPIRED  archivelog all;
  
released channel: ORA_DISK_1
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=68 device type=DISK
List of Archived Log Copies for database with db_unique_name ORA11G
……………………………………
Do you really want to delete the above objects (enter YES or NO)? yes
deleted archived log
……………………………………
deleted archived log
archived log file name=/app/oracle/fast_recovery_area/ATS/archivelog/2015_07_28/o1_mf_1_14_7gpood3n_.arc RECID=115 STAMP=770306728
deleted archived log
archived log file name=/app/oracle/fast_recovery_area/ATS/archivelog/2015_07_28/o1_mf_1_15_7gqhvvhh_.arc RECID=106 STAMP=770306727
Deleted 124 EXPIRED objects
总结:
1.使用os命令删除fast_recovery_area内容后,需要使用crosscheck检测(如:archivelog all,backup等)。
2.然后使用 DELETE EXPIRED命令删除(archivelog all,backup等)
3.指定备份策略,fast_recovery_area设置合适大小+合适的策略
4.resetlogs打开数据库后,做好备份
5.fast_recovery_area无剩余空间处理思路
   5.1)如果数据库不能登录:重启至mount,增大fast_recovery_area,open数据库,然后使用rman删除历史垃圾数据(备份集,日志,闪回日志等)
   5.2)如果数据库可以使用sys登录,增大fast_recovery_area(使其数据库可以正常工作),然后使用rman处理垃圾数据。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/12798004/viewspace-1753761/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/12798004/viewspace-1753761/

您可能感兴趣的与本文相关的镜像

GPT-oss:20b

GPT-oss:20b

图文对话
Gpt-oss

GPT OSS 是OpenAI 推出的重量级开放模型,面向强推理、智能体任务以及多样化开发场景

上述命令是使用 `scp`(Secure Copy Protocol)命令在 Linux/Unix 系统中通过 SSH 安全地将本地文件或目录递归复制到远程主机。你执行的命令如下: ```bash scp -r /u01/app/oracle/fast_recovery_area/PROD/ root@192.168.8.106:/u01/app/oracle/fast_recovery_area/DUP/ ``` ### 命令解释: - `scp`: 安全复制命令,用于在本地和远程主机之间复制文件。 - `-r`: 递归复制整个目录及其子目录和文件(必须用于目录)。 - `/u01/app/oracle/fast_recovery_area/PROD/`: 源目录路径(本地 Oracle 数据库的快速恢复区中的 PROD 实例数据)。 - `root@192.168.8.106`: 目标主机的登录用户(root)和 IP 地址。 - `:/u01/app/oracle/fast_recovery_area/DUP/`: 目标路径(远程主机上的目标目录)。 ### 执行过程说明: 1. 系统会通过 SSH 连接到 `192.168.8.106` 的 `root` 用户。 2. 提示输入 `root` 用户的密码(除非已配置 SSH 免密登录)。 3. 开始将本地 `/u01/app/oracle/fast_recovery_area/PROD/` 中的所有内容递归复制到远程主机的 `/u01/app/oracle/fast_recovery_area/DUP/` 目录下。 4. 复制过程中会保持原始文件权限、时间戳等元信息(但不会保留所有 ACL 或 SELinux 属性,除非使用额外参数如 `-p`)。 --- ### 注意事项与潜在问题: #### ✅ 正确性建议: - 确保远程路径 `/u01/app/oracle/fast_recovery_area/DUP/` 已存在,否则需先创建: ```bash ssh root@192.168.8.106 "mkdir -p /u01/app/oracle/fast_recovery_area/DUP" ``` - 使用 `-p` 参数保留修改时间、访问时间和模式: ```bash scp -rp /u01/app/oracle/fast_recovery_area/PROD/ root@192.168.8.106:/u01/app/oracle/fast_recovery_area/DUP/ ``` #### ⚠️ 安全风险: - 使用 `root` 登录存在安全风险,建议使用普通用户 + sudo 或专用管理账户。 - 推荐配置 SSH 密钥认证以避免每次输入密码,并提高自动化能力。 #### 📦 性能优化(大文件场景): 如果 FRA(Fast Recovery Area)包含大量备份文件(如归档日志、RMAN 备份片),可以考虑使用压缩传输: ```bash scp -rC /u01/app/oracle/fast_recovery_area/PROD/ root@192.168.8.106:/u01/app/oracle/fast_recovery_area/DUP/ ``` 其中 `-C` 启用压缩,适合慢速网络。 --- ### 替代方案建议(适用于数据库恢复区迁移): 对于 Oracle 快速恢复区的复制,更推荐使用 `rsync`,因为它支持断点续传、增量同步、进度查看等优势: ```bash rsync -avz --progress /u01/app/oracle/fast_recovery_area/PROD/ \ root@192.168.8.106:/u01/app/oracle/fast_recovery_area/DUP/ ``` #### 参数说明: - `-a`: 归档模式(保留权限、时间、符号链接等) - `-v`: 显示详细过程 - `-z`: 压缩传输 - `--progress`: 显示传输进度 --- ### 验证复制完整性 复制完成后,在目标机器上校验文件数量和大小是否一致: ```bash # 源端统计 du -sh /u01/app/oracle/fast_recovery_area/PROD/ find /u01/app/oracle/fast_recovery_area/PROD/ -type f | wc -l # 目标端对比 ssh root@192.168.8.106 "du -sh /u01/app/oracle/fast_recovery_area/DUP/" ssh root@192.168.8.106 "find /u01/app/oracle/fast_recovery_area/DUP/ -type f | wc -l" ``` --- ### 补充:Oracle RMAN 更优做法 如果你是在做数据库克隆或灾备,直接复制 FRA 文件夹可能不完整或导致控制文件不一致。**最佳实践应使用 RMAN 进行备份与恢复**: ```bash # 在源库执行备份 rman target / BACKUP DATABASE PLUS ARCHIVELOG; BACKUP RECOVERY AREA; # 包含所有FRA内容 # 将备份集复制到目标机后,在目标机用 RMAN 恢复 ``` 这样可确保一致性,避免手动复制引发的问题。 --- ### 总结 你的 `scp -r` 命令语法正确,可用于简单环境下的文件夹复制,但在生产环境中建议: - 使用 `rsync` 提高效率和可靠性 - 避免使用 `root` 账户直连 - 结合 RMAN 实现真正可用的数据库级复制 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值