Objetos de Usuários nas Tablespaces SYS e SYSTEM

Sergio BenderSergio Bender
2 min read

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?

  1. Investigação: Confirme se os objetos listados pertencem a usuários ou aplicações e não deveriam estar em SYSAUX ou SYSTEM.

  2. Ação: Use comandos como ALTER TABLE ... MOVE ou ALTER INDEX ... REBUILD para mover os objetos para tablespaces apropriadas, como USERS.

  3. 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!

0
Subscribe to my newsletter

Read articles from Sergio Bender directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

Sergio Bender
Sergio Bender