十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
selectname,log_mode,open_mode from v$database;
创新互联公司是一家专注于成都做网站、成都网站建设与策划设计,商都网站建设哪家好?创新互联公司做网站,专注于网站建设十余年,网设计领域的专业建站公司;建站业务涵盖:商都等地区。商都做网站价格咨询:18982081108
NAME LOG_MODE OPEN_MODE
--------- ------------ -----------------
CKDB ARCHIVELOG READ WRITE
若是归档模式,则LOG_MODE=ARCHIVELOG
若是非归档模式,则LOG_MODE=NOARCHIVELOG
先查出当前数据库使用的归档目录是在哪,这个我昨天回答过一个问题。
你可以参考一下。
然后,便可以到操作系统上,看归档目录所在的文件系统使用情况,如
一般的
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
的总空间及剩余空间量。
1、常用命令 SQL show parameter log_archive_dest; SQL archive log list; SQL select * from V$FLASH_RECOVERY_AREA_USAGE; ARCHIVELOG 96.62 0 141 SQL select sum(percent_space_used)*3/100 from v$flash_recovery_area_usage; 2.9904 SQL show parameter recover; db_recovery_file_dest string /u01/oracle/flash_recovery_area db_recovery_file_dest_size big integer 2G 2、删除日志 cd $ORACLE_BASE/flash_recovery_area/orcl/archivelog 转移或清除对应的归档日志, 删除一些不用的日期目录的文件,注意保留最后几个文件在删除归档日志后,必须用RMAN维护控制文件,否则空间显示仍然不释放。 3、rman target sys/password RMAN crosscheck archivelog all; RMAN delete expired archivelog all; 或者 RMAN delete archivelog until time “sysdate-1″; 4、再查 SQL select * from V$FLASH_RECOVERY_AREA_USAGE; 5、修改大小 SQL alter system set db_recovery_file_dest_size=4G scope=both;
大多数人会去先检查放归档的目录的磁盘空间是否满了,通过该归档目录空余情况来判断归档空间是否满了,但我觉得这个方法不一定代表实际情况,你看到的可能是一个表面现象。
默认情况下我们在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.确定归档存放目录,归档存放目录大小
SQLarchiveloglist;
DatabaselogmodeArchiveMode
AutomaticarchivalEnabled
ArchivedestinationUSE_DB_RECOVERY_FILE_DEST-------这里默认使用的是DB_RECOVERY_FILE_DEST
Oldestonlinelogsequence17
Nextlogsequencetoarchive20
Currentlogsequence20
----也可以按照以下方式查询归档放置的地方
SQLshowparameterdb_
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
-----这里可以看到闪回恢复区里的空间使用情况:
SQLselect*Fromv$flash_recovery_area_usage;
FILE_TYPEPERCENT_SPACE_USEDPERCENT_SPACE_RECLAIMABLENUMBER_OF_FILES
----------------------------------------------------------------------
CONTROLFILE000
ONLINELOG4.8801
ARCHIVELOG76.05047
BACKUPPIECE3.103
IMAGECOPY000
FLASHBACKLOG000
6rowsselected.
------注意这一步才是真正查看归档空间的实际使用情况:
SQLselect*fromv$recovery_file_dest;
NAMESPACE_LIMITSPACE_USEDSPACE_RECLAIMABLENUMBER_OF_FILES
----------------------------------------------------------------------------
/oracle/flash_recovery_area21474836481804771840051
但是还是在系统层面去查看磁盘空间。