昨夜、Oracle Database Applianceの1つのリカバリ領域がいっぱいになりました。これはデータベースアラートログの1つで報告され、次のログ切り替えの前にスペースを空けることができました。その時点で、生産は停止していました。
ディスクグループが70%いっぱいになったときのように、もう少し警告があればいいでしょう。
ASM内のディスク使用量を監視するためにどのようなオプションがありますか?
asmcmd
を使用するだけです。例えば:
[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 ~]$
または、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>
これを試して...
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
/