数据库服务事件的补救
本文介绍在使用数据库服务事件时遇到的问题所需的修复。
提供了以下补救措施:
- HEALTH.DB_GUEST.FILESYSTEM.FREE_SPACE
- AVAILABILITY.DB_GUEST.CRS_INSTANCE.DOWN
- AVAILABILITY.DB_GUEST.CRS_INSTANCE.EVICTION
- AVAILABILITY.DB_CLUSTER.SCAN_LISTENER.DOWN
- AVAILABILITY.DB_GUEST.CLIENT_LISTENER.DOWN
- AVAILABILITY.DB_GUEST.CDB_INSTANCE.DOWN
- 运行状况。DB_CLUSTER.CDB.CORRUPTION
- HEALTH.DB_CLUSTER.CDB.ARCHIVER_HANG
- HEALTH.DB_CLUSTER.CDB.DATABASE_HANG
- 运行状况:DB_CLUSTER.CDB.BACKUP_FAILURE
- 运行状况:DB_CLUSTER.DISK_GROUP.FREE_SPACE
HEALTH.DB_GUEST.FILESYSTEM.FREE_SPACE
事件名称:
HEALTH.DB_GUEST.FILESYSTEM.FREE_SPACE
事件说明:
当 VM 来宾文件系统的空闲空间低于 10%(由操作系统 df(1) 命令确定)时,针对以下文件系统报告此事件:
//u01/u02/var/tmp
问题陈述:
一个或多个 VM 来宾文件系统的空闲空间低于 10%。
风险:
VM 来宾文件系统的空闲空间不足可能会导致磁盘空间分配失败,这可能会导致 Oracle 软件(数据库、集群件、云工具)出现广泛的错误和故障。
操作/修复:
Oracle Cloud 和 DCS Agent 会自动运行,以清除云工具创建的旧日志文件和跟踪文件,以回收文件系统空间。
如果自动文件系统空间回收实用程序无法充分清除旧文件以清除此事件,则执行以下操作:
-
删除手动或由客户安装的应用程序或实用程序创建的不需要的文件和/或目录。由客户安装的软件创建的文件不在 Oracle 的自动文件系统空间回收实用程序的范围之内。以下操作系统命令(以
root用户身份运行)可用于标识占用过多磁盘空间的目录:sudo du -hx <file system mount point> | sort -hr只能安全地删除您确定的文件或目录。
- 使用云工具设置自动清除策略。有关更多信息,请参见 Autologcleanpolicy Commands 。
- 打开服务请求,以获得有关减少文件系统空间使用的其他指导。
AVAILABILITY.DB_GUEST.CRS_INSTANCE.DOWN
事件名称:
AVAILABILITY.DB_GUEST.CRS_INSTANCE.DOWN
事件说明:
当检测到集群就绪服务 (Cluster Ready Service,CRS) 关闭时,将创建类型为 CRITICAL 的事件。
问题陈述:
集群就绪堆栈处于脱机状态或已失败。
风险:
如果 CRS 在节点上处于脱机状态,则该节点无法为应用程序提供数据库服务。
操作/修复:
-
检查 CRS 是否已被管理员停止,作为计划内维护事件的一部分,还是扩展或收缩本地存储
-
以下打补丁事件将停止 CRS
- GRID 更新
- 访客更新
- 更新主机
-
-
如果 CRS 意外停止,则可以通过发出
crsctl check crs命令来检查当前状态。- 如果节点未响应,则 VM 节点可能正在重新引导。等待节点重新引导完成,CRS 通常将通过
init进程启动。
- 如果节点未响应,则 VM 节点可能正在重新引导。等待节点重新引导完成,CRS 通常将通过
- 如果 CRS 仍处于关闭状态,请参考
/u01/app/grid/diag/crs/<node_name>/crs/trace中的alert.log来调查故障原因。查看与关闭事件的日期/时间相对应的日志条目,并对任何可能的补救措施执行操作。 - 通过发出
crsctl start crs命令重新启动 CRS。 - 成功重新启动 CRS 将生成结算事件:AVAILABILITY.DB_GUEST.CRS_INSTANCE.DOWN_CLEARED
清算事件:
AVAILABILITY.DB_GUEST.CRS_INSTANCE.DOWN_CLEARED
清算事件说明:
成功启动 CRS 后,将创建 INFORMATION 事件。
AVAILABILITY.DB_GUEST.CRS_INSTANCE.EVICTION
事件名称:
AVAILABILITY.DB_GUEST.CRS_INSTANCE.EVICTION
事件说明:
当群集就绪服务 (Cluster Ready Service,CRS) 将节点从群集中清除时,将创建 CRITICAL 类型的事件。针对 CRS-1632 错误对 CRS alert.log 进行语法分析,指示正在从群集中删除节点。
问题陈述:
Oracle Clusterware 旨在通过在检测到某个严重问题时从群集中删除一个或多个节点来执行节点逐出。严重的问题可能是节点未通过网络心跳响应,节点未通过磁盘心跳响应,挂起或严重降级的计算机,或者挂起 ocssd.bin 进程。此节点逐出操作的目的是通过删除不健康的成员来维护集群的整体健康状况。
风险:
在重新启动被逐出的节点所用的时间内,该节点无法为应用程序提供数据库服务。
操作/修复:
CRS 节点逐出可能由 OCSSD(又称 CSS 守护进程)、CSSDAGENT 或 CSSDMONITOR 进程导致。这需要确定负责节点逐出和查看相关日志文件的进程。OCSSD 驱逐的常见原因是网络故障/延迟、CSS 投票磁盘的 IO 问题、成员终止升级。CSSDAGENT 或 CSSDMONITOR 逐出可能是操作系统调度程序问题或 CSS 守护进程中的挂起线程。要查看的日志文件包括集群件预警日志、cssdagent 日志、cssdmonitor 日志、ocssd 日志、lastgasp 日志、/var/log/messages、CHM/OS 监视器数据和 opatch lsinventory 详细信息。
有关一起收集文件的更多信息,请参见 Autonomous Health Framework (AHF) Trace File Analyzer (TFA) & ORAchk/EXAchk 。有关 CRS 节点逐出故障排除的更多信息,请参见 Troubleshooting Clusterware Node Evictions (Reboots) 。
AVAILABILITY.DB_CLUSTER.SCAN_LISTENER.DOWN
事件名称:
AVAILABILITY.DB_CLUSTER.SCAN_LISTENER.DOWN
事件说明:
当 SCAN 监听程序关闭时,将创建 DOWN 事件。当 SCAN 监听程序因用户操作(例如使用服务器控制实用程序 (srvctl) 或监听程序控制 (lsnrctl) 命令)或任何使用这些命令的 Oracle Cloud 维护操作(例如执行网格基础结构软件更新)而关闭时,该事件的类型为 INFORMATION。当 SCAN 监听程序意外关闭时,事件的类型为 CRITICAL。启动 SCAN 监听程序时将创建相应的 DOWN_CLEARED 事件。
每个集群有三个 SCAN 监听程序,称为 LISTENER_SCAN[1,2,3]。
问题陈述:
SCAN 监听程序已关闭,无法接受应用程序连接。
风险:
如果所有 SCAN 监听程序都已关闭,则通过 SCAN 监听程序与数据库的应用程序连接将失败。
操作/修复:
启动 SCAN 监听程序以接收 DOWN_CLEARED 事件。
类型为 INFORMATION 的 DOWN 事件:
- 如果事件是由 Oracle Cloud 维护操作(例如执行网格基础结构软件更新)引起的,则无需执行任何操作。受影响的 SCAN 监听程序将自动故障转移到可用实例。
- 如果事件是由用户操作导致的,则在下一个商机启动 SCAN 监听程序。
“严重”类型的“向下”事件:
-
检查 SCAN 状态并重新启动 SCAN 监听程序
-
以
opc用户身份登录到 VM,以sudo身份登录到grid用户:[opc@vm ~] sudo su - grid -
检查任何节点上的 SCAN 监听程序状态:
[grid@vm ~] srvctl status scan_listener -
启动 SCAN 监听程序:
[grid@vm ~] srvctl start scan_listener -
重新检查任何节点上的 SCAN 侦听器状态:如果
scan_listener仍处于关闭状态,请调查扫描侦听器失败的原因:-
为日志中指示的
<hostName>收集 30 分钟前和 10 分钟的 CRS 和 OS 日志。请注意,事件有效负载中的时间始终以 UTC 提供:对于tfactl集合,请将时间调整为 VM 集群的时区。[grid@vm ~] tfactl diagcollect -crs -os -node <hostName> -from "<eventTime adjusted for local vm timezone> - 30 minute " -to "<eventTime adjusted for local vm timezone> + 10 minutes" -
将记录 SCAN 监听程序问题:
/u01/app/grid/diag/tnslsnr/<hostName>/<listenerName>/trace
-
-
AVAILABILITY.DB_GUEST.CLIENT_LISTENER.DOWN
事件名称:
AVAILABILITY.DB_GUEST.CLIENT_LISTENER.DOWN
事件说明:
当客户机监听程序关闭时,将创建 DOWN 事件。当客户机监听程序因用户操作(例如使用服务器控制实用程序 (srvctl) 或监听程序控制 (lsnrctl) 命令)或任何使用这些命令的 Oracle Cloud 维护操作(例如执行网格基础结构软件更新)而关闭时,事件的类型为 INFORMATION。当客户机监听程序意外关闭时,事件属于 CRITICAL 类型。启动客户机监听程序时将创建相应的 DOWN_CLEARED 事件。
每个节点都有一个客户机监听程序,每个监听程序名为 LISTENER。
问题陈述:
客户机监听程序已关闭,无法接受应用程序连接。
风险:
如果节点的客户机监听程序已关闭,则节点上的数据库实例无法为应用程序提供服务。
如果客户机监听程序在所有节点上关闭,则使用 SCAN 或 VIP 连接到任何数据库的任何应用程序都将失败。
操作/修复:
启动客户机监听程序以接收 DOWN_CLEARED 事件。
类型为 INFORMATION 的 DOWN 事件:
- 如果事件是由 Oracle Cloud 维护操作(例如执行网格基础结构软件更新)引起的,则无需执行任何操作。当影响网格实例的维护完成时,受影响的客户机监听程序将自动重新启动。
- 如果事件是由用户操作导致的,则在下一个商机启动客户机监听程序。
“严重”类型的“向下”事件:
-
检查客户机监听程序状态并重新启动客户机监听程序:
-
以
opc用户身份登录到 VM,以sudo身份登录到grid用户:[opc@vm ~] sudo su - grid -
检查任何节点上的客户机监听程序状态:
[grid@vm ~] srvctl status listener -
启动客户机监听程序:
[grid@vm ~] srvctl start listener -
在任意节点上重新检查客户机监听程序状态:如果客户机监听程序仍处于关闭状态。调查客户机监听程序失败的原因:
-
使用
tfactl可在 30 分钟前收集 CRS 和 OS 日志,在 10 分钟内收集日志中指示的hostName。请注意,事件有效负载中的时间始终以 UTC 提供:对于tfactl集合,请将时间调整为 VM 集群的时区。[grid@vm ~] tfactl diagcollect -crs -os -node <hostName> -from "<eventTime adjusted for local vm timezone> - 30 minute " -to "<eventTime adjusted for local vm timezone> + 10 minutes" -
查看位于以下位置的监听程序日志:
/u01/app/grid/diag/tnslsnr/<hostName>/<listenerName>/trace
-
-
AVAILABILITY.DB_GUEST.CDB_INSTANCE.DOWN
事件名称:
AVAILABILITY.DB_GUEST.CDB_INSTANCE.DOWN
事件说明:
数据库实例关闭时将创建 DOWN 事件。当数据库实例因用户操作(例如使用 SQL*Plus (sqlplus) 或 Server Control Utility (srvctl) 命令)或使用这些命令的任何 Oracle Cloud 维护操作(例如执行数据库主目录软件更新)而关闭时,该事件属于 INFORMATION 类型。当数据库实例意外关闭时,事件的类型为 CRITICAL。启动数据库实例时会创建相应的 DOWN_CLEARED 事件。
问题陈述:
数据库实例已关闭。
风险:
数据库实例已关闭,如果集群中的其他节点上有数据库实例可用,这可能会导致性能降低;如果所有节点上的数据库实例都已关闭,则会导致完全停机。
操作/修复:
启动数据库实例以接收 DOWN_CLEARED 事件。
类型为 INFORMATION 的 DOWN 事件:
- 如果事件是由 Oracle Cloud 维护操作(例如执行数据库主目录软件更新)引起的,则无需执行任何操作。当影响实例的维护完成时,受影响的数据库实例将自动重新启动。
- 如果事件是由用户操作导致的,则在下一个机会启动受影响的数据库实例。
“严重”类型的“向下”事件:
-
检查数据库状态并重新启动关闭数据库实例。
- 以
oracle用户身份登录到 VM: -
设置环境:
[oracle@vm ~] . <dbName>.env -
检查数据库状态:
[oracle@vm ~] srvctl status database -db <dbName> -
启动数据库实例:
[oracle@vm ~] srvctl start instance -db <dbName> -instance <instanceName>
- 以
-
调查数据库实例失败的原因。
-
查看数据库的跟踪文件分析器 (TFA) 事件:
[oracle@vm ~] tfactl events -database <dbName> -instance <instanceName> -
查看位于以下位置的数据库预警日志:
$ORACLE_BASE/diag/rdbms/<dbName>/<instanceName>/trace/alert_<instanceName>.log
-
运行状况。DB_CLUSTER.CDB.CORRUPTION
事件名称:
运行状况。DB_CLUSTER.CDB.CORRUPTION
事件说明:
在主数据库或备用数据库中检测到数据库损坏。对于指示物理块损坏、逻辑块损坏或丢失写入导致的逻辑块损坏的任何特定错误,将解析数据库 alert.log。
问题陈述:
损坏可能会导致应用程序或数据库错误,在更糟糕的情况下,如果未及时解决,会导致大量数据丢失。
损坏的块是已更改的块,因此它不同于 Oracle Database 期望查找的内容。块损坏可归类为物理或逻辑:
- 在物理块损坏(也称为介质损坏)中,数据库根本无法识别该块;校验和无效或该块包含所有零。更复杂的块损坏的一个示例是块头和页脚不匹配。
- 在逻辑块损坏中,该块的内容在物理上是合理的,并且通过物理块检查;但是,该块在逻辑上可能不一致。逻辑块损坏的示例包括:不正确的块类型、不正确的数据或重做块序列号、损坏行片段或索引条目或数据字典损坏。
区块腐败也可以分为区块间腐败和区块内腐败:
- 在块内部损坏中,损坏发生在块本身中,可以是物理块或逻辑块损坏。
- 在块间损坏中,块间发生损坏,并且只能是逻辑块损坏。
Oracle 在 alert.log 中检查以下错误:
ORA-01578ORA-00752ORA-00753ORA-00600[3020]ORA-00600[kdsgrp1]ORA-00600[kclchkblk_3]ORA-00600[13013]ORA-00600[5463]
风险:
当硬件、软件或网络组件导致读取或写入损坏的数据时,会发生数据损坏中断。数据损坏中断的服务级别影响可能有所不同,从应用程序或数据库的一小部分(到单个数据库块)到应用程序或数据库的一大部分(使其基本上不可用)。如果不及时采取补救措施,可能会增加潜在的停机时间和数据丢失。
操作/修复:
当前事件通知当前会触发物理块损坏 (ORA-01578)、写入丢失(ORA-00752、ORA-00753 和 ORA-00600,第一个参数为 3020)和逻辑损坏(通常从 ORA-00600 检测到,第一个参数为 kdsgrp1、kdsgrp1、kclchkblk_3、13013 或 5463)。
我们建议采取以下步骤:
- 确认这些损坏已在
alert.log跟踪文件中报告。使用最新的 EXAchk 报告记录服务请求 (Service Request,SR),记录包含损坏错误的alert.log和跟踪文件的摘录,记录最近应用程序、数据库或软件更改的任何历史记录,以及同一时间段内的任何系统、集群件和数据库日志。对于所有这些情况,TFA 集合应可用且应附加到 SR。 - 有关修复建议的更多信息,请参阅用于处理 Oracle Database 损坏问题的主要说明。
对于物理损坏或 ORA-1578 错误,以下说明将很有帮助:
- OERR:ORA-1578“ORACLE 数据块已损坏(文件编号 %s,块编号 %s)”主注释(文档 ID 1578.1)
- 如何使用 RMAN 标识数据库中的所有损坏对象(文档 ID 472231.1)
- 如何识别 ORA-1578/RMAN/DBVERIFY 报告的损坏对象(文档 ID 819533.1)
- 用于处理 Oracle Database 损坏问题的主要说明
注: RMAN 可用于恢复物理损坏的一个或多个数据块。还使用实时应用的活动数据卫士,将自动修复物理数据损坏的块。
对于主数据库或备用数据库上丢失的写入(带有第一个参数 3020 的 ORA-00752、ORA-00753 和 ORA-00600)导致的逻辑损坏,将在主数据库或备用数据库的重做应用进程中检测到它们。以下说明将很有帮助:
- 用于处理 Oracle Database 损坏问题的主要说明
- 如果主数据库或备用数据库上存在备用数据库和丢失的写入损坏,请参见 Resolving ORA-00752 or ORA-600 [3020] During Standby Recovery (Doc ID 1265884.1) 。
对于逻辑损坏(通常从 ORA-00600 检测到,参数为 kdsgrp1、kclchkblk_3、13013 或 5463)
- 有关检测到的错误的更多信息,请参阅用于处理 Oracle Database 损坏问题的主要说明。
- 如果主数据库存在备用和逻辑损坏,请参见 Resolving Logical Block Corruption Errors in a Physical Standby Database (Doc ID 2821699.1) 。
HEALTH.DB_CLUSTER.CDB.ARCHIVER_HANG
事件名称:
HEALTH.DB_CLUSTER.CDB.ARCHIVER_HANG
事件说明:
如果容器数据库 (Container Database,CDB) 无法归档活动的联机重做日志或无法将活动的联机重做日志快速归档到日志归档目标,则会创建类型为 CRITICAL 的事件。
问题陈述:
由于日志写进程 (LGWR) 无法将日志缓冲区写入联机重做日志,CDB RAC 实例可能会暂时或永久停止。这是因为所有联机日志都需要归档。一旦归档程序 (Archiver,ARC) 可以归档至少一个联机重做日志,LGWR 将能够恢复将日志缓冲区写入联机重做日志,并减轻应用程序的影响。
风险:
如果归档程序临时变得无响应,则应用程序在尝试提交数据库更改时可能会经历短暂的棕色或停滞。如果归档程序未恢复,应用程序进程可能会遇到延长的处理延迟。
操作/修复:
-
要确定每个线程/实例的每小时频率,请参见 Script To Find Redolog Switch History and Find Archivelog Size for Each Instances in RAC (Doc ID 2373477.1) 。
- 如果每小时存储桶大于 12,请考虑调整联机重做日志的大小。有关调整步骤大小的信息,请参见下文项目 2。
-
如果数据库暂时变得无响应,则归档程序可能无法跟上生成的重做日志。
- 有关“所有联机日志都需要归档”的信息,请查看
alert.log$ORACLE_BASE/diag/rdbms/<dbName>/<instanceName>/trace/alert_<instanceName>.log,在短时间内发生的多个事件可指示 2 个可能的解决方案。- 如果每个线程的重做日志组数小于 4,请考虑添加其他日志组以达到 4,有关添加重做日志步骤,请参见下面的项 1。
- 另一种可能的解决方案是调整重做日志的大小,有关调整步骤的大小,请参见下文第 2 项。
- 有关“所有联机日志都需要归档”的信息,请查看
- 有关 Data Guard 和非 Data Guard 的大小调整准则,请参见 Configure Online Redo Logs Appropriately 。
-
为每个线程添加重做日志组。附加重做日志应等于当前日志大小。
-
使用以下查询:
select max(group#) Ending_group_number, thread#, count(*) number_of_groups_per_thread, bytes redo_size_in_bytes from v$log group by thread#,bytes -
使用与当前重做日志相同的大小为每个线程添加一个新组。
alter database add logfile thread <thread_number> group <max group + 1> ('<DATA_DISKGROUP>') size <redo_size_in_bytes>
-
-
通过添加较大的重做日志并删除当前较小的重做日志来调整联机重做日志的大小。
-
使用以下查询:
select max(group#) Ending_group_number, thread#, count(*) number_of_groups_per_thread, bytes redo_size_in_bytes from v$log group by thread#,bytes -
为当前存在的每个线程
number_of_groups_per_thread添加相同数量的重做日志。new_redo_size_in_bytes应基于适当配置联机重做日志。-
使用以下查询:
alter database add logfile thread <thread_number> group <max group + 1> ('<DATA_DISKGROUP>') size <new_redo_size_in_bytes> -
应删除原始较小的重做日志。仅当重做日志的状态为非活动时,才能将其删除。要确定重做日志的状态,请发出以下选择。
select group#, thread#, status, bytes from v$log order by bytes, group#, thread#;删除原始较小的重做日志:
alter database drop logfile <group#>;
-
-
-
如果数据库变得无响应,则主日志归档目标和备用数据库可能已满。
- 有关释放 RECO 和 DATA 磁盘组中空间的更多信息,请参见 HEALTH.DB_CLUSTER.DISK_GROUP.FREE_SPACE 。
HEALTH.DB_CLUSTER.CDB.DATABASE_HANG
事件名称:
HEALTH.DB_CLUSTER.CDB.DATABASE_HANG
事件说明:
当容器数据库 (Container Database,CDB) 中的进程或会话变得无响应时,将创建 CRITICAL 类型的事件。
问题陈述:
Blocker Resolver 检测到无响应进程或块,并生成了 ORA-32701 错误消息。此外,如果诊断过程 (DIA0) 检测到关键数据库进程变得无响应,则可能会引发此事件。
风险:
无响应的进程或块可以指示资源、操作系统或与应用程序编码相关的问题。
操作/修复:
调查会话块的原因。
-
查看数据库的 TFA 事件,了解与事件日期/时间相对应的以下消息模式:
ORA-32701、“ DIA0 关键数据库流程已阻止”或“ DIA0 关键数据库流程为根”。tfactl events -database <dbName> -instance <instanceName> -
查看在以下位置关联的 alert.log:
$ORACLE_BASE/diag/rdbms/<dbName>/<instanceName>/trace/alert_<instanceName>.log - 对于
ORA-32701:重载系统可能会导致进度缓慢,这可以解释为块。阻止程序解析程序可能会尝试通过终止最终阻止程序进程来解决该块。 - 对于
DIA0“Critical Database Process(关键数据库进程)”消息:查看指示进程和块原因的相关诊断行。
运行状况:DB_CLUSTER.CDB.BACKUP_FAILURE
事件名称:
运行状况:DB_CLUSTER.CDB.BACKUP_FAILURE
事件说明:
如果 v$rman_status 视图中报告了状态为“失败”的 CDB 备份,则会创建类型为 CRITICAL 的事件。
问题陈述:
CDB 的每日增量备份失败。
风险:
备份失败可能会影响使用备份来恢复/恢复数据库的能力。可恢复性点对象 (Recoverability Point Object,RPO) 和可恢复性时间对象 (Recoverability Time Object,RTO) 可能会受到影响。
操作/修复:
查看与事件日期/时间相对应的 RMAN 日志。请注意,事件时间戳 eventTime 为 UTC,根据 VM 时区的需要进行调整。
对于 Oracle 托管备份:
- 可以在
/opt/oracle/dcs/log/<hostname>/rman中找到 RMAN 输出。 -
复核日志以了解出现的任何故障:
- 如果故障是由于 RMAN 之外的外部事件造成的,例如备份位置已满或网络问题,请解决外部问题。
-
对于其他 RMAN 脚本错误,请收集诊断日志并打开服务请求。
dbcli collect-diagnostics -hUsage: collect-diagnostics [options] Options: --components, -c Supported components: [all, dcs, crs, acfs, asm, db] all -- Collects diagnosis for all supported components [all, dcs, crs, acfs, asm, db] dcs -- Collects diagnosis for dcs crs -- Collects diagnosis for crs acfs -- Collects diagnosis for acfs asm -- Collects diagnosis for asm. db -- Collects diagnosis for db. For multiple parameter values, follow the example as "-c c1 c2" Default: [dcs] --dbNames, -d Comma separated database names. Valid only if 'db' or 'all' specified in Components list. --endTime, -et End time of diagnostic logs. Please give time in yyyy-MM-dd HH:mm:ss format --help, -h get help --json, -j json output --objectstoreuri, -ou Pre Authenticated Request URI --redaction, -r Diagnostic logs redaction. Might take longer time with some components. --startTime, -st Start time of diagnostic logs. Please give time in yyyy-MM-dd HH:mm:ss format
- 如果问题暂时存在或已得到解决,则进行新的增量备份。有关更多信息,请参见 Back Up a Database Using the Console 。
对于通过 RMAN 进行的客户拥有和托管备份:
- 查看备份的 RMAN 日志。
运行状况:DB_CLUSTER.DISK_GROUP.FREE_SPACE
事件名称:
运行状况:DB_CLUSTER.DISK_GROUP.FREE_SPACE
事件说明:
当 ASM 磁盘组达到 90% 或更高的空间使用率时,将创建类型为 CRITICAL 的事件。当 ASM 磁盘组空间使用量低于 90% 时,将创建类型为 INFORMATION 的事件。
问题陈述:
ASM 磁盘组空间使用率达到或超过 90%。
风险:
ASM 磁盘组空间不足可能会导致数据库创建失败、表空间和数据文件创建失败、自动数据文件扩展名失败或 ASM 重新平衡失败。
操作/修复:
ASM 磁盘组已用空间由连接到 ASM 实例时运行的以下查询确定。
sudo su - grid
sqlplus / as sysasm
select 'ora.'||name||'.dg', total_mb, free_mb,
round ((1-(free_mb/total_mb))*100,2) pct_used from v$asm_diskgroup;
NAME TOTAL_MB FREE_MB PCT_USED
---------------- ---------- ---------- ----------
ora.DATAC1.dg 75497472 7408292 90.19
ora.RECOC1.dg 18874368 17720208 6.11
可以通过以下方式增加 ASM 磁盘组容量:
- 扩展 VM 集群存储以添加更多 ASM 磁盘组容量。有关更多信息,请参见 Scale the DB System 。
可以通过以下方式减少 DATA 磁盘组空间使用:
- 从数据库中删除未使用的数据文件和临时文件。有关详细信息,请参阅删除数据文件。
可以通过以下方式减少 RECO 磁盘组空间使用:
- 删除不必要的保证还原点。有关更多信息,请参阅使用正常和保证还原点。
- 删除已在快速恢复区 (Flash Recovery Area,FRA) 外部备份的归档重做日志或数据库备份。有关详细信息,请参阅维护快速恢复区。