Arquivos de log do banco de dados Oracle - Amazon Relational Database Service

Arquivos de log do banco de dados Oracle

Você pode acessar os logs de alerta, os arquivos de auditoria e os arquivos de rastreamento da Oracle usando o console ou a API do Amazon RDS. Para mais informações sobre a visualização, o download e os logs de bancos de dados baseados no monitoramento de arquivos, consulte Monitorar arquivos de log do Amazon RDS.

Os arquivos de auditoria da Oracle fornecidos são os arquivos de auditoria padrão da Oracle. O Amazon RDS é compatível com o recurso de auditoria refinada (FGA) da Oracle. Contudo, o acesso ao log não fornece acesso a eventos do FGA que são armazenados na tabela SYS.FGA_LOG$ e são acessados por meio da visualização DBA_FGA_AUDIT_TRAIL.

A operação da API DescribeDBLogFiles que lista os arquivos de log da Oracle disponíveis para uma instância de banco de dados ignora o parâmetro MaxRecordse retorna até 1.000 registros. A chamada retorna LastWritten como uma data POSIX em milissegundos.

Cronograma de retenção

O mecanismo de banco de dados Oracle pode fazer a rotação dos arquivos de log se eles ficarem muito grandes. Baixe esses arquivos de auditoria ou de rastreamento para retê-los. Se você armazenar os arquivos localmente, reduzirá os custos de armazenamento do Amazon RDS e disponibilizará mais espaço para seus dados.

A tabela a seguir mostra o cronograma de retenção para os logs de alerta, arquivos de auditoria e arquivos de rastreamento da Oracle no Amazon RDS.

Tipo de log Cronograma de retenção

Logs de alerta

O log de alertas de texto é alternado diariamente com uma retenção de 30 dias gerenciada pelo Amazon RDS. O log de alerta de XML é retido por pelo menos sete dias. Você pode acessar esse log usando a visualização ALERTLOG.

Arquivos de auditoria

O período de retenção padrão para arquivos de rastreamento é de sete dias. O Amazon RDS poderá excluir arquivos de auditoria com mais de sete dias.

Arquivos de rastreamento

O período de retenção padrão para arquivos de rastreamento é de sete dias. O Amazon RDS poderá excluir arquivos de rastreamento com mais de sete dias.

Logs de listener

O período de retenção padrão para os logs de listener é sete dias. O Amazon RDS poderá excluir logs de listener com mais de sete dias.

nota

Arquivos de auditoria e de rastreamento compartilham a mesma configuração de retenção.

Trabalhar com arquivos de rastreamento da Oracle

A seguir, você pode localizar descrições de procedimentos do Amazon RDS para criar, atualizar, acessar e excluir arquivos de rastreamento.

Listar arquivos

Você pode usar qualquer um dos dois procedimentos para permitir acesso a qualquer arquivo no caminho background_dump_dest. O primeiro procedimento atualiza uma visualização que contém uma lista de todos os arquivos que estão em no moment background_dump_dest.

EXEC rdsadmin.manage_tracefiles.refresh_tracefile_listing;

Depois que a visualização for atualizada, consulte a visualização a seguir para acessar os resultados.

SELECT * FROM rdsadmin.tracefile_listing;

Uma alternativa ao processo anterior é usar FROM table para transmitir dados não relacionais que não estejam em tabelas em um formato semelhante ao de uma tabela para listar o conteúdo do diretório de banco de dados.

SELECT * FROM TABLE(rdsadmin.rds_file_util.listdir('BDUMP'));

A consulta a seguir mostra o texto de um arquivo de log.

SELECT text FROM TABLE(rdsadmin.rds_file_util.read_text_file('BDUMP','alert_dbname.log.date'));

Em uma réplica de leitura, obtenha o nome do diretório BDUMP consultando V$DATABASE.DB_UNIQUE_NAME. Se o nome exclusivo for DATABASE_B, o diretório BDUMP será BDUMP_B. O exemplo a seguir consulta o nome BDUMP em uma réplica e usa esse nome para consultar o conteúdo de alert_DATABASE.log.2020-06-23.

SELECT 'BDUMP' || (SELECT regexp_replace(DB_UNIQUE_NAME,'.*(_[A-Z])', '\1') FROM V$DATABASE) AS BDUMP_VARIABLE FROM DUAL; BDUMP_VARIABLE -------------- BDUMP_B SELECT TEXT FROM table(rdsadmin.rds_file_util.read_text_file('BDUMP_B','alert_DATABASE.log.2020-06-23'));

Gerar arquivos de rastreamento e rastrear uma sessão

Como não há restrições em ALTER SESSION, muitos métodos padrão para gerar arquivos de rastreamento da Oracle permanecem disponíveis para uma instância de banco de dados do Amazon RDS. Os procedimentos a seguir são fornecidos para arquivos de rastreamento que exigem maior acesso.

Método Oracle Método do Amazon RDS

oradebug hanganalyze 3

EXEC rdsadmin.manage_tracefiles.hanganalyze;

oradebug dump systemstate 266

EXEC rdsadmin.manage_tracefiles.dump_systemstate;

Você pode usar muitos métodos padrão para rastrear sessões individuais conectadas a uma instância de banco de dados Oracle no Amazon RDS. Para habilitar o rastreamento de uma sessão, é possível executar subprogramas em pacotes PL/SQL fornecidos pela Oracle, como DBMS_SESSION e DBMS_MONITOR. Para obter mais informações, consulte Habilitar o rastreamento de uma sessão na documentação da Oracle.

Recuperar arquivos de rastreamento

Você pode recuperar qualquer arquivo de rastreamento em background_dump_dest usando uma consulta SQL padrão em uma tabela externa gerenciada pelo Amazon RDS. Para usar este método, execute o procedimento e defina o local desta tabela para o arquivo de rastreamento específico.

Por exemplo, você pode usar a visualização rdsadmin.tracefile_listing mencionada anteriormente para listar todos os arquivos de rastreamento no sistema. Em seguida, você pode definir a visualização tracefile_table para apontar para o arquivo de rastreamento pretendido usando o seguinte procedimento.

EXEC rdsadmin.manage_tracefiles.set_tracefile_table_location('CUST01_ora_3260_SYSTEMSTATE.trc');

O exemplo a seguir criar uma tabela externa no esquema atual com o local definido para o arquivo fornecido. É possível recuperar o conteúdo em um arquivo local usando uma consulta SQL.

SPOOL /tmp/tracefile.txt SELECT * FROM tracefile_table; SPOOL OFF;

Limpar arquivos de rastreamento

Os arquivos de rastreamento podem acumular e consumir espaço em disco. Por padrão, o Amazon RDS limpa os arquivos de rastreamento e os arquivos de log com mais de sete dias. Você pode visualizar e definir o período de retenção do arquivo de rastreamento usando o procedimento show_configuration. Você deve executar o comando SET SERVEROUTPUT ON para que possa visualizar os resultados da configuração.

O exemplo a seguir mostra o período de retenção do arquivo de rastreamento atual e, em seguida, define um novo período de retenção para o arquivo de rastreamento.

# Show the current tracefile retention SQL> EXEC rdsadmin.rdsadmin_util.show_configuration; NAME:tracefile retention VALUE:10080 DESCRIPTION:tracefile expiration specifies the duration in minutes before tracefiles in bdump are automatically deleted. # Set the tracefile retention to 24 hours: SQL> EXEC rdsadmin.rdsadmin_util.set_configuration('tracefile retention',1440); SQL> commit; #show the new tracefile retention SQL> EXEC rdsadmin.rdsadmin_util.show_configuration; NAME:tracefile retention VALUE:1440 DESCRIPTION:tracefile expiration specifies the duration in minutes before tracefiles in bdump are automatically deleted.

Além do processo periódico de limpeza, você pode remover arquivos de manualment background_dump_dest. O exemplo a seguir mostra como limpar todos os arquivos que tenham mais de cinco minutos.

EXEC rdsadmin.manage_tracefiles.purge_tracefiles(5);

Também limpe todos os arquivos correspondentes a um padrão específico (do contrário, não inclua a extensão do arquivo, como .trc). O exemplo a seguir mostra como limpar todos os arquivos que começam com SCHPOC1_ora_5935.

EXEC rdsadmin.manage_tracefiles.purge_tracefiles('SCHPOC1_ora_5935');

Publicação de logs da Oracle no Amazon CloudWatch Logs

Você pode configurar sua instância de banco de dados do Amazon RDS for Oracle para publicar dados de log em um grupo de log no Amazon CloudWatch Logs. Com o CloudWatch Logs, você pode analisar os dados de log e usar o CloudWatch para criar alarmes e visualizar métricas. Você pode usar o CloudWatch Logs para armazenar seus registros de log em armazenamento resiliente.

O Amazon RDS publica cada log de banco de dados Oracle como um fluxo separado de banco de dados no grupo de logs. Por exemplo, se você configurar a função de exportação para incluir o log de auditoria, os dados de auditoria serão armazenados em um fluxo de log de auditoria no grupo de logs /aws/rds/instance/my_instance/audit. O RDS para Oracle é compatível com os seguintes logs:

  • Log de alertas

  • Log de rastreamento

  • Log de auditoria

  • Log de listener

  • Log do Oracle Management Agent

Esse log do Oracle Management Agent consiste nos streams de log mostrados na tabela a seguir.

Nome do log Stream de log do CloudWatch
emctl.log oemagent-emctl
emdctlj.log oemagent-emdctlj
gcagent.log oemagent-gcagent
gcagent_errors.log oemagent-gcagent-errors
emagent.nohup oemagent-emagent-nohup
secure.log oemagent-secure

Para obter mais informações, consulte Locating Management Agent Log and Trace Files (Localizar arquivos de log e rastreamento do agente de gerenciamento) na documentação do Oracle.

Para publicar logs de banco de dados Oracle no CloudWatch Logs pelo AWS Management Console

  1. Abra o console do Amazon RDS em https://console.aws.amazon.com/rds/.

  2. No painel de navegação, escolha Databases (Bancos de dados) e a instância de banco de dados que você deseja modificar.

  3. Selecione Modify.

  4. Na seção Log exports (Exportações de log), escolha os logs que deseja começar a publicar no CloudWatch Logs.

  5. Escolha Continue (Continuar) e depois escolha Modify DB Instance (Modificar instância de banco de dados) na página de resumo.

Para publicar os logs da Oracle, você pode usar o comando modify-db-instance com os seguintes parâmetros:

  • --db-instance-identifier

  • --cloudwatch-logs-export-configuration

nota

Uma alteração feita na opção --cloudwatch-logs-export-configuration sempre é aplicada imediatamente na instância de banco de dados. Por isso, as opções --apply-immediately e --no-apply-immediately não entram em vigor.

Você também pode publicar os logs da Oracle usando os seguintes comandos:

exemplo

O exemplo a seguir cria uma instância de Banco de Dados Oracle com a publicação no CloudWatch Logs habilitada. O valor --cloudwatch-logs-export-configuration é uma matriz de strings JSON. As strings podem ser qualquer combinação de alert, audit, listener e trace.

Para Linux, macOS ou Unix:

aws rds create-db-instance \ --db-instance-identifier mydbinstance \ --cloudwatch-logs-export-configuration '["trace","audit","alert","listener","oemagent"]' \ --db-instance-class db.m5.large \ --allocated-storage 20 \ --engine oracle-ee \ --engine-version 12.1.0.2.v18 \ --license-model bring-your-own-license \ --master-username myadmin \ --master-user-password mypassword

Para Windows:

aws rds create-db-instance ^ --db-instance-identifier mydbinstance ^ --cloudwatch-logs-export-configuration trace alert audit listener oemagent ^ --db-instance-class db.m5.large ^ --allocated-storage 20 ^ --engine oracle-ee ^ --engine-version 12.1.0.2.v18 ^ --license-model bring-your-own-license ^ --master-username myadmin ^ --master-user-password mypassword

exemplo

O exemplo a seguir altera uma instância de Banco de Dados Oracle existente para publicar os arquivos de log no CloudWatch Logs. O valor --cloudwatch-logs-export-configuration é um objeto JSON. A chave para esse objeto é EnableLogTypes, e seu valor é uma matriz de strings com qualquer combinação de alert, audit, listener e trace.

Para Linux, macOS ou Unix:

aws rds modify-db-instance \ --db-instance-identifier mydbinstance \ --cloudwatch-logs-export-configuration '{"EnableLogTypes":["trace","alert","audit","listener","oemagent"]}'

Para Windows:

aws rds modify-db-instance ^ --db-instance-identifier mydbinstance ^ --cloudwatch-logs-export-configuration EnableLogTypes=\"trace\",\"alert\",\"audit\",\"listener\",\"oemagent\"

exemplo

O exemplo a seguir modifica uma instância de Banco de Dados Oracle existente para desabilitar a publicação de arquivos de log de auditoria e de listener no CloudWatch Logs. O valor --cloudwatch-logs-export-configuration é um objeto JSON. A chave para esse objeto é DisableLogTypes, e seu valor é uma matriz de strings com qualquer combinação de alert, audit, listener e trace.

Para Linux, macOS ou Unix:

aws rds modify-db-instance \ --db-instance-identifier mydbinstance \ --cloudwatch-logs-export-configuration '{"DisableLogTypes":["audit","listener"]}'

Para Windows:

aws rds modify-db-instance ^ --db-instance-identifier mydbinstance ^ --cloudwatch-logs-export-configuration DisableLogTypes=\"audit\",\"listener\"

Você pode publicar logs de banco de dados Oracle com a API do RDS. Você pode chamar a ação ModifyDBInstance com os seguintes parâmetros:

  • DBInstanceIdentifier

  • CloudwatchLogsExportConfiguration

nota

Uma alteração feita no parâmetro CloudwatchLogsExportConfiguration sempre é aplicada imediatamente na instância de banco de dados. Por isso, o parâmetro ApplyImmediately não entra em vigor.

Também publique logs Oracle chamando as seguintes operações da API do RDS:

Execute uma destas operações da API do RDS com os seguintes parâmetros:

  • DBInstanceIdentifier

  • EnableCloudwatchLogsExports

  • Engine

  • DBInstanceClass

Outros parâmetros podem ser obrigatórios, dependendo da operação do RDS executada.

Métodos anteriores para acessar logs de alerta e logs de ouvinte

Você pode visualizar o log de alertas usando o console do Amazon RDS. Também é possível usar a seguinte instrução SQL para acessar o log de alerta.

SELECT message_text FROM alertlog;

O listenerlog contém entradas para o Oracle Database versão 12.1.0.2 e anterior. Para acessar o log do listener para essas versões do banco de dados, use a seguinte consulta.

SELECT message_text FROM listenerlog;

Para as versões 12.2.0.1 e posteriores do Oracle Database, acesse o log do listener usando o Amazon CloudWatch Logs.

nota

A Oracle faz a rotação dos logs de alerta e de ouvinte quando ultrapassam 10 MB e, a partir deste ponto, eles ficam indisponíveis nas visualizações do Amazon RDS.