如何检查Oracle的归档空间是不是占满?

如何检查Oracle的归档空间是不是占满?,第1张

大多数人会去先检查放归档的目录的磁盘空间是否满了,通过该归档目录空余情况来判断归档空间是否满了,但我觉得这个方法不一定代表实际情况,你看到的可能是一个表面现象。

默认情况下我们在dbca建库时,会把归档放在$ORACLE_HOME/flash_recovery_area下,并且oracle默认给FRA配置的大为2g

这里需要足以两个参数:

db_recovery_file_deststring/oracle/flash_recovery_area

db_recovery_file_dest_sizebiginteger2G

这里总结一句,如果db_recovery_file_dest下的存放的归档大小达到db_recovery_file_dest_size即使该目录下仍然有磁盘空间剩余,oracle也不会去写。

这里我建议按照如下步骤去确定:归档空间是否满了?

1.首先从系统层面确定归档目录存放的磁盘空间情况:

[oracle@localhostbdump]$df-h

FilesystemSizeUsedAvailUse%Mountedon

/dev/mapper/VolGroup00-LogVol0026G12G14G46%/

/dev/sda219G16G2.8G85%/oracle

/dev/sda199M24M71M25%/boot

tmpfs978M508M470M52%/dev/shm

2.确定归档存放目录,归档存放目录大小

SQL>archiveloglist

DatabaselogmodeArchiveMode

AutomaticarchivalEnabled

ArchivedestinationUSE_DB_RECOVERY_FILE_DEST-------这里默认使用的是DB_RECOVERY_FILE_DEST

Oldestonlinelogsequence17

Nextlogsequencetoarchive20

Currentlogsequence20

----也可以按照以下方式查询归档放置的地方

SQL>showparameterdb_

NAMETYPEVALUE

-----------------------------------------------------------------------------

db_keep_cache_sizebiginteger0

db_namestringlixora

db_recovery_file_deststring/oracle/flash_recovery_area

db_recovery_file_dest_sizebiginteger2G

db_recycle_cache_sizebiginteger0

db_unique_namestringlixora

-----这里可以看到闪回恢复区里的空间使用情况:

SQL>select*Fromv$flash_recovery_area_usage

FILE_TYPEPERCENT_SPACE_USEDPERCENT_SPACE_RECLAIMABLENUMBER_OF_FILES

----------------------------------------------------------------------

CONTROLFILE000

ONLINELOG4.8801

ARCHIVELOG76.05047

BACKUPPIECE3.103

IMAGECOPY000

FLASHBACKLOG000

6rowsselected.

------注意这一步才是真正查看归档空间的实际使用情况:

SQL>select*fromv$recovery_file_dest

NAMESPACE_LIMITSPACE_USEDSPACE_RECLAIMABLENUMBER_OF_FILES

----------------------------------------------------------------------------

/oracle/flash_recovery_area21474836481804771840051

但是还是在系统层面去查看磁盘空间。

先查出当前数据库使用的归档目录是在哪,这个我昨天回答过一个问题。

http://zhidao.baidu.com/question/416031451

你可以参考一下。

然后,便可以到 *** 作系统上,看归档目录所在的文件系统使用情况,如

一般的

unix

上,df

-g

GB

为单位看,linux

上,

df

-h,

为以

GB

为单位看。

如果文件系统空间使用率达

90%

了,那就是快满了。

可以通过备份至磁带,再删除的方式进行。

如果是设置了

db_recovery_file_dest

db_recovery_file_dest_size

参数启用了

flash

recovery

area

后,

可能会由于该区域满而导致无法归档.

由于对

flash

recovery

area

的信息是记录于

rman

repository

及控制文件中的,

因而,

仅是从磁盘删除旧的备份或是归档日志并不足够,

因为rman

repository

及控制文件中仍持有该空间被使用的信息.

因而,

可增大

db_recovery_file_dest_size

的值,

或是从rman

中执行crosscheck

archivelog

all

来标记相关归档日志已被删除,

再执行rman

delete

expired

archivelog

all

来删除其记录.

最好的方式为rman

backup

archivelog

until

logseq

delete

all

input

这样一则进行了备份,

二则也删除了flash

recovery

area

中的空间,

并更新了控制文件.

同时,可使用

select

*

from

v$RECOVERY_FILE_DEST

来了解

recovery

area

中允许的最大空间,已用的空间,可以被数据库自动回收的空间。

并进而使用

select

file_type,

PERCENT_SPACE_USED

,

PERCENT_SPACE_RECLAIMABLE,

NUMBER_OF_FILES

from

v$RECOVERY_AREA_USAGE

来了解

recovery

area

中各类文件所占用的空间百分比。

如果

recovery

area

是放在

asm

diskgroup

中的,还需要注意

相应的

diskgroup

中是否仍有空间。

11g

asm,

可在 *** 作系统命令行,执行

asmcmd

进入命令行后

lsdg

命令,来查看

diskgroup

的总空间及剩余空间量。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9896522.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-03
下一篇 2023-05-03

发表评论

登录后才能评论

评论列表(0条)

保存