一、 问题影响如果数据库归档不设置归档删除策略或归档暴增导致归档空间满,数据库将无法提供服务,甚至无法关闭数据库。 因为关闭数据库会出发写日志,此时空间满了是不能写入日志进而导致数据库无法启动。 业务系统将无法使用。二、 归档存放方式, 有如下几种情况:1、 本地文件系统存放2、 本地文件系统且存放在快速闪回区内3、 ASM 存储中存放4、 ASM 存储中且放在快速闪回区内三、 处理办法1、 如果归档日志存放在文件系统或 ASM 存储内, 不在快速闪回区中;则可以根据业务需求将该文件系统目录中或 ASM 存储内的归档文件迁移到其他空间, 也可以将归档日志通过 RMAN 的方式备份出来从而释放归档存放的空间。2、 如果放在文件系统或 ASM 存储中的闪回区内, 人工迁移文件后,数据库是无法识别空间释放的; 因为快速闪回区是 Oracle 数据库自己管理, 需要让数据库识别到; 针对此种现象,见标题四四、 快速闪回区归档撑满解决方法如果快速闪回区内归档满后,数据库将无法操作,甚至无法关闭数据库;此时, 解决方法是,将数据库中的一个实例通过 shutdown abort 方式关闭;( shutdown abort 方式将不检查数据文件一致性且不将内存中的数据写入到数据文件中,跟强制断电效果一样,所以该操作慎重) ( 如果存在 OGG 需要提前关闭与该主机关联的 OGG 进程,方式改 OGG进程挂起,并预防归档丢失)数据库关闭后,通过 startup mount 方式,将数据库启动到 mount 状态;此时,可以通过: select * from v$recovery_file_dest;检测快速闪回区的使用情况( 主要是产看当前快速闪回区的容量大小);如果 ASM 存储或文件系统没有容量可以扩充,则先给 ASM 或文件系统扩充空间;然后,通过 alter system set db_recovery_file_dest_size = 100G( 将之前大小扩种几十 G, 此处仅供参考)。 扩充后, 数据库将恢复正常使用。通过 rman target /方式,登录到 RMAN 中,执行 crosscheck archivelog all; 检测数据库归档的有效性;通过在 RMAN 中,执行 delete noprompt archivelog until time “sysdate -3”;( 该命令表示删除归档日志,保留到 3 天前,具体保留几天,根据业务清空, 该天数仅供参考)