Objetos de Usuários nas Tablespaces SYS e SYSTEM


No gerenciamento de bancos de dados Oracle, monitorar o uso de espaço em tablespaces é uma tarefa essencial para garantir a performance e evitar problemas como falta de armazenamento. Neste artigo, vamos explorar um script SQL simples, mas poderoso, que ajuda a identificar objetos de usuários nas tablespaces SYSTEM e SYSAUX, excluindo os proprietários padrão do sistema.
WITH filtered_segments AS (
SELECT
owner,
segment_name,
segment_type,
tablespace_name,
partition_name,
bytes
FROM
dba_segments
WHERE
tablespace_name IN ('SYSAUX', 'SYSTEM')
AND owner NOT IN ('SYS', 'MDSYS', 'ORDDATA', 'ORDSYS', 'XDB', 'EXFSYS', 'CTXSYS', 'WMSYS', 'DBSNMP', 'SYSTEM', 'APPQOSSYS', 'OUTLN', 'SYSMAN')
AND bytes > 1024 * 1024
)
SELECT
owner,
segment_name,
segment_type,
tablespace_name,
partition_name,
ROUND((bytes) / 1024 / 1024, 2) tamanho_mb
FROM
filtered_segments
ORDER BY
tamanho_mb DESC;
Por Que Isso é Útil?
As tablespaces SYSTEM e SYSAUX são reservadas principalmente para metadados do banco de dados e componentes do Oracle, como o dicionário de dados e estatísticas. Objetos de usuários, como tabelas ou índices de aplicações, não deveriam estar nessas tablespaces, mas erros de configuração ou falta de planejamento podem levar a essa situação. Isso pode causar crescimento descontrolado e comprometer a estabilidade do sistema. Este script ajuda a identificar rapidamente esses objetos "intrusos" e seus tamanhos, permitindo ações corretivas.
Exemplo de Saída
Ao executar o script, você pode obter algo assim:
OWNER SEGMENT_NAME SEGMENT_TYPE TAMANHO_MB
--------------- ------------------- ----------------- ----------
APP_USER BIG_TABLE TABLE 1500.25
APP_USER IDX_BIG_TABLE INDEX 800.10
FINANCE TEMP_DATA TABLE 500.75
Nesse exemplo fictício, vemos que o schema APP_USER possui uma tabela (BIG_TABLE) ocupando 1,5 GB e um índice associado (IDX_BIG_TABLE) com 800 MB, ambos em SYSAUX ou SYSTEM. Isso indica a presença indesejada de objetos de usuários nessas tablespaces.
Como Usar os Resultados?
Investigação: Confirme se os objetos listados pertencem a usuários ou aplicações e não deveriam estar em SYSAUX ou SYSTEM.
Ação: Use comandos como ALTER TABLE ... MOVE ou ALTER INDEX ... REBUILD para mover os objetos para tablespaces apropriadas, como USERS.
Prevenção: Revise permissões e configurações para evitar que novos objetos de usuários sejam criados nessas tablespaces críticas.
Conclusão
Esse script é uma ferramenta valiosa para DBAs e desenvolvedores que precisam identificar e gerenciar objetos de usuários nas tablespaces SYSTEM e SYSAUX. Com resultados claros e execução rápida, ele permite corrigir problemas de alocação antes que afetem o desempenho do banco. Adapte-o conforme necessário e mantenha seu ambiente Oracle organizado e eficiente!
Subscribe to my newsletter
Read articles from Sergio Bender directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by