Uma empresa parceira

Design sem nome (2)

Listar maiores databases dentro do ASM

Tenho um servidor de banco de dados que possui diversas instâncias do Oracle rodando sob um único ASM e recentemente precisei fazer um levantamento de quais eram os maiores bancos dentro dos DISKGROUPs de FRA e DATA. Inicialmente fiz um select em cada instância e joguei para uma planilha, mas .. são 23 instâncias, então certamente esse não era o melhor caminho : )

O script abaixo deve ser rodado na instância do ASM, basta trocar o que está na linha: WHERE gname=’FRA_ASM_DG’ pelo nome do seu diskgroup.

[code language=”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
) CONNECT BY prior rindex = pindex )
WHERE
NOT file_type IS NULL
and system_created = ‘Y’ )
WHERE gname=’FRA_ASM_DG’
GROUP BY
gname,
dbname,
file_type
ORDER BY
4 desc;
[/code]

O resultado deve ser algo parecido com o output abaixo:

[code language=”sql”]

GNAME DBNAME FILE_TYPE MB GB #FILES
———- ———- ————– ———- ———- ———-
FRA_ASM_DG LP142 ARCHIVELOG 241766 236 22
FRA_ASM_DG LP852 ARCHIVELOG 162494 159 66
FRA_ASM_DG LP90 ARCHIVELOG 147272 144 8
FRA_ASM_DG LP74 ONLINELOG 92376 90 8
FRA_ASM_DG LP65 ONLINELOG 81928 80 4
FRA_ASM_DG LP66 ONLINELOG 61448 60 4
FRA_ASM_DG LP98 ARCHIVELOG 58618 57 163
FRA_ASM_DG LP41 ARCHIVELOG 56984 56 8
FRA_ASM_DG LP42 ARCHIVELOG 33384 33 20
FRA_ASM_DG LP44 ONLINELOG 32776 32 4
FRA_ASM_DG LP22 ARCHIVELOG 31224 30 2807

[/code]

Feito isso você terá noção de quais são os maiores bancos dentro do seu ASM, nesse caso, o LP142 está utilizando 236GB dentro do diskgroup de FRA e o LP22 está usando apenas 30GB.

Até a próxima.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Posts Relacionados