Hier soir, la zone de récupération de l'une de nos appliances de base de données Oracle s'est remplie. Cela a été signalé dans l'un des journaux d'alertes de la base de données, et nous avons pu vider de l'espace avant le prochain changement de journal, moment auquel la production aurait été interrompue.
Il aurait certainement été agréable d'avoir un peu plus d'avertissement, comme lorsque le groupe de disques était plein à 70%.
Quelles options avons-nous pour surveiller l'utilisation du disque dans ASM?
Utilisez simplement asmcmd
. Par exemple:
[Oracle@oel61 ~]$ . oraenv
Oracle_SID = [+ASM] ? +ASM
The Oracle base remains unchanged with value /u01/app/Oracle
[Oracle@oel61 ~]$ asmcmd lsdg
State Type Rebal Sector Block AU Total_MB Free_MB Req_mir_free_MB Usable_file_MB Offline_disks Voting_files Name
MOUNTED EXTERN N 512 4096 1048576 30708 28479 0 28479 0 N DATA/
[Oracle@oel61 ~]$
Ou obtenez les informations directement à partir de l'instance ASM Oracle:
[Oracle@oel61 ~]$ . oraenv
Oracle_SID = [+ASM] ? +ASM
The Oracle base remains unchanged with value /u01/app/Oracle
[Oracle@oel61 ~]$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.2.0 Production on Thu Mar 7 10:44:44 2013
Copyright (c) 1982, 2010, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - 64bit Production
With the Automatic Storage Management option
SQL> SELECT name, free_mb, total_mb, free_mb/total_mb*100 as percentage
FROM v$asm_diskgroup;
NAME FREE_MB TOTAL_MB PERCENTAGE
------------------------------ ---------- ---------- ----------
DATA 28479 30708 92.7413052
SQL>
Essaye ça...
col gname form a10
col dbname form a10
col file_type form a14
SELECT
gname,
dbname,
file_type,
round(SUM(space)/1024/1024) mb,
round(SUM(space)/1024/1024/1024) gb,
COUNT(*) "#FILES"
FROM
(
SELECT
gname,
regexp_substr(full_alias_path, '[[:alnum:]_]*',1,4) dbname,
file_type,
space,
aname,
system_created,
alias_directory
FROM
(
SELECT
concat('+'||gname, sys_connect_by_path(aname, '/')) full_alias_path,
system_created,
alias_directory,
file_type,
space,
level,
gname,
aname
FROM
(
SELECT
b.name gname,
a.parent_index pindex,
a.name aname,
a.reference_index rindex ,
a.system_created,
a.alias_directory,
c.type file_type,
c.space
FROM
v$asm_alias a,
v$asm_diskgroup b,
v$asm_file c
WHERE
a.group_number = b.group_number
AND a.group_number = c.group_number(+)
AND a.file_number = c.file_number(+)
AND a.file_incarnation = c.incarnation(+) ) START WITH (mod(pindex, power(2, 24))) = 0
AND rindex IN
(
SELECT
a.reference_index
FROM
v$asm_alias a,
v$asm_diskgroup b
WHERE
a.group_number = b.group_number
AND (
mod(a.parent_index, power(2, 24))) = 0
and a.name like '&&db_name'
) CONNECT BY prior rindex = pindex )
WHERE
NOT file_type IS NULL
and system_created = 'Y' )
WHERE
dbname like '&db_name'
GROUP BY
gname,
dbname,
file_type
ORDER BY
gname,
dbname,
file_type
/