Realização de tarefas comuns de banco de dados para instâncias de banco de dados - Amazon Relational Database Service

Realização de tarefas comuns de banco de dados para instâncias de banco de dados

Veja a seguir como executar determinadas tarefas comuns de DBA relacionadas aos bancos de dados nas instâncias de bancos de dados do Amazon RDS que executam o Oracle. Para oferecer uma experiência de serviço gerenciada, o Amazon RDS não fornece acesso ao shell para as instâncias de banco de dados. O Amazon RDS também restringe o acesso a alguns procedimentos e tabelas do sistema que exigem privilégios avançados.

Alteração do nome global de um banco de dados

Para alterar o nome global de um banco de dados, use o procedimento rdsadmin.rdsadmin_util.rename_global_name do Amazon RDS. O procedimento rename_global_name tem os seguintes parâmetros.

Nome do parâmetro Tipo de dados Padrão Obrigatório Descrição

p_new_global_name

varchar2

Sim

O novo nome global do banco de dados.

O banco de dados deve estar aberto para que a alteração de nome ocorra. Para ter mais informações sobre como alterar o nome global de um banco de dados, consulte ALTER DATABASE na documentação do Oracle.

O exemplo a seguir altera o nome global de um banco de dados para new_global_name.

EXEC rdsadmin.rdsadmin_util.rename_global_name(p_new_global_name => 'new_global_name');

Criação e uso de espaços de tabela

O Amazon RDS só oferece suporte a arquivos gerenciados Oracle (OMF) para arquivos de dados, arquivos de log e arquivos de controle. Ai criar arquivos de dados e arquivos de log, você não pode especificar os nomes dos arquivos físicos.

Por padrão, se você não especificar o tamanho de um arquivo de dados, os espaços de tabela serão criados com um tamanho padrão de AUTOEXTEND ON e sem um tamanho máximo. No exemplo a seguir, o tablespace users1 é autoextensível.

CREATE TABLESPACE users1;

Devido a essas configurações padrão, espaços de tabela podem crescer ao ponto de consumirem todo o armazenamento alocado. Recomendamos que você especifique um tamanho máximo apropriado em espaços de tabela permanentes e temporários e que monitore cuidadosamente o uso do espaço.

O exemplo a seguir cria um espaço de tabela chamado users2 com um tamanho inicial de 1 gigabyte. Como o tamanho do arquivo de dados é especificado, mas AUTOEXTEND ON não é especificado, o espaço de tabela não é autoextensível.

CREATE TABLESPACE users2 DATAFILE SIZE 1G;

O exemplo a seguir cria um espaço de tabela chamado users3 com um tamanho inicial de 1 gigabyte, extensão automática ativada e um tamanho máximo de 10 gigabytes.

CREATE TABLESPACE users3 DATAFILE SIZE 1G AUTOEXTEND ON MAXSIZE 10G;

O exemplo a seguir cria um espaço de tabela temporário chamado temp01:

CREATE TEMPORARY TABLESPACE temp01;

É possível redimensionar um espaço de tabela de arquivos grandes usando ALTER TABLESPACE. Você pode especificar o tamanho em quilobytes (K), megabytes (M), gigabytes (G) ou terabytes (T). O exemplo a seguir redimensiona um espaço de tabela de arquivos grandes chamado users_bf para 200 MB.

ALTER TABLESPACE users_bf RESIZE 200M;

O exemplo a seguir acrescenta um arquivo de dados adicional a um espaço de tabela de arquivos pequenos chamado users_sf.

ALTER TABLESPACE users_sf ADD DATAFILE SIZE 100000M AUTOEXTEND ON NEXT 250m MAXSIZE UNLIMITED;

Definição do espaço de tabela padrão

Para definir o espaço padrão tabela padrão, use o procedimento rdsadmin.rdsadmin_util.alter_default_tablespace do Amazon RDS. O procedimento alter_default_tablespace tem os seguintes parâmetros.

Nome do parâmetro Tipo de dados Padrão Obrigatório Descrição

tablespace_name

varchar

Sim

O nome do espaço de tabela padrão.

O exemplo a seguir define o espaço de tabela padrão como users2:

EXEC rdsadmin.rdsadmin_util.alter_default_tablespace(tablespace_name => 'users2');

Definição do espaço de tabela temporário padrão

Para definir o espaço de tabela temporário padrão, use o procedimento rdsadmin.rdsadmin_util.alter_default_temp_tablespace do Amazon RDS. O procedimento alter_default_temp_tablespace tem os seguintes parâmetros.

Nome do parâmetro Tipo de dados Padrão Obrigatório Descrição

tablespace_name

varchar

Sim

O nome do espaço de tabela temporário padrão.

O exemplo a seguir define o espaço de tabela temporário padrão como temp01.

EXEC rdsadmin.rdsadmin_util.alter_default_temp_tablespace(tablespace_name => 'temp01');

Criar um espaço de tabela temporário no armazenamento de instância

Para criar um espaço de tabela temporário no armazenamento de instância, use o procedimento rdsadmin.rdsadmin_util.create_inst_store_tmp_tblspace do Amazon RDS. O procedimento create_inst_store_tmp_tblspace tem os seguintes parâmetros.

Nome do parâmetro Tipo de dados Padrão Obrigatório Descrição

p_tablespace_name

varchar

Sim

O nome do espaço de tabela temporário.

O exemplo a seguir cria o espaço de tabela temporário temp01 no armazenamento de instância.

EXEC rdsadmin.rdsadmin_util.create_inst_store_tmp_tblspace(p_tablespace_name => 'temp01');
Importante

Quando você executa rdsadmin_util.create_inst_store_tmp_tblspace, o espaço de tabela temporário recém-criado não é automaticamente definido como o espaço de tabela temporário padrão. Para defini-lo como padrão, consulte Definição do espaço de tabela temporário padrão.

Para ter mais informações, consulte Armazenar dados temporários em um armazenamento de instância do RDS for Oracle.

Adicionar um arquivo temporário ao armazenamento de instância em uma réplica de leitura

Quando você cria um espaço de tabela temporário em uma instância de banco de dados principal, a réplica de leitura não cria arquivos temporários. Suponha que exista um espaço de tabela temporário vazio em sua réplica de leitura por um dos seguintes motivos:

  • Você removeu um arquivo temporário do espaço de tabela em sua réplica de leitura. Para ter mais informações, consulte Descartar arquivos temporários em uma réplica de leitura.

  • Você criou um espaço de tabela temporário na instância de banco de dados primária. Nesse caso, o RDS para Oracle sincroniza os metadados com a réplica de leitura.

Você pode adicionar um arquivo temporário ao espaço de tabela temporário vazio e armazená-lo no armazenamento de instância. Para criar um arquivo temporário no armazenamento de instância, use o procedimento rdsadmin.rdsadmin_util.add_inst_store_tempfile do Amazon RDS. Você pode usar esse procedimento somente em uma réplica de leitura. O procedimento tem os seguintes parâmetros.

Nome do parâmetro Tipo de dados Padrão Obrigatório Descrição

p_tablespace_name

varchar

Sim

O nome do espaço da tabela temporário em sua réplica de leitura.

No exemplo a seguir, o espaço de tabela temporário vazio temp01 existe na réplica de leitura. Execute o comando a seguir para criar um arquivo temporário para esse espaço de tabela e armazená-lo no armazenamento de instância.

EXEC rdsadmin.rdsadmin_util.add_inst_store_tempfile(p_tablespace_name => 'temp01');

Para ter mais informações, consulte Armazenar dados temporários em um armazenamento de instância do RDS for Oracle.

Descartar arquivos temporários em uma réplica de leitura

Não é possível descartar um espaço de tabela temporário em uma réplica de leitura. Você pode alterar o armazenamento de arquivos temporários em uma réplica de leitura do Amazon EBS para o armazenamento de instância ou do armazenamento de instância para o Amazon EBS. Para conseguir isso, faça o seguinte:

  1. Descarte os arquivos temporários atuais no espaço de tabela temporário na réplica de leitura.

  2. Crie arquivos temporários em outro armazenamento.

Para descartar os arquivos temporários, use o procedimento rdsadmin.rdsadmin_util. drop_replica_tempfiles do Amazon RDS. Você pode usar esse procedimento somente em réplicas de leitura. O procedimento drop_replica_tempfiles tem os seguintes parâmetros.

Nome do parâmetro Tipo de dados Padrão Obrigatório Descrição

p_tablespace_name

varchar

Sim

O nome do espaço da tabela temporário em sua réplica de leitura.

Suponha que um espaço de tabela temporário chamado temp01 resida no armazenamento de instância da réplica de leitura. Descarte todos os arquivos temporários nesse espaço de tabela executando o comando a seguir.

EXEC rdsadmin.rdsadmin_util.drop_replica_tempfiles(p_tablespace_name => 'temp01');

Para ter mais informações, consulte Armazenar dados temporários em um armazenamento de instância do RDS for Oracle.

Verificação de um banco de dados

Para verificar um banco de dados, use o procedimento rdsadmin.rdsadmin_util.checkpoint do Amazon RDS. O procedimento checkpoint não tem parâmetros.

O exemplo a seguir verifica o banco de dados.

EXEC rdsadmin.rdsadmin_util.checkpoint;

Definição da recuperação distribuída

Para definir a recuperação distribuída, use os procedimentos rdsadmin.rdsadmin_util.enable_distr_recovery e disable_distr_recovery do Amazon RDS. Os procedimentos não têm parâmetros.

O exemplo a seguir habilita a recuperação distribuída.

EXEC rdsadmin.rdsadmin_util.enable_distr_recovery;

O exemplo a seguir desabilita a recuperação distribuída.

EXEC rdsadmin.rdsadmin_util.disable_distr_recovery;

Definição do fuso horário do banco de dados

Você pode definir o fuso horário do banco de dados Oracle do Amazon RDS das seguintes maneiras:

  • A opção Timezone

    A opção Timezone altera o fuso horário no nível do host e afeta todas as colunas e valores de data, como SYSDATE. Para ter mais informações, consulte Fuso horário da Oracle.

  • O procedimento do Amazon RDS rdsadmin.rdsadmin_util.alter_db_time_zone

    O procedimento alter_db_time_zone altera o fuso horário para apenas alguns tipos de dados e não altera SYSDATE. Existem restrições adicionais na definição do fuso horário, listadas na documentação do Oracle.

nota

Você também pode definir o fuso horário padrão para o Oracle Scheduler. Para ter mais informações, consulte Definir o fuso horário para trabalhos do Oracle Scheduler.

O procedimento alter_db_time_zone tem os seguintes parâmetros.

Nome do parâmetro Tipo de dados Padrão Obrigatório Descrição

p_new_tz

varchar2

Sim

O novo fuso horário como uma região nomeada ou um deslocamento absoluto do Tempo Universal Coordenado (UTC). Os deslocamentos válidos variam de -12:00 a +14:00.

O exemplo a seguir altera o fuso horário para UTC mais 3 horas.

EXEC rdsadmin.rdsadmin_util.alter_db_time_zone(p_new_tz => '+3:00');

O exemplo a seguir altera o fuso horário para o fuso horário de África/Algiers.

EXEC rdsadmin.rdsadmin_util.alter_db_time_zone(p_new_tz => 'Africa/Algiers');

Depois de alterar o fuso horário usando o procedimento alter_db_time_zone, reinicie a instância de banco de dados para que a alteração entre em vigor. Para ter mais informações, consulte Reinicializar uma instância de banco de dados . Para obter informações sobre como atualizar fusos horários, consulte Considerações sobre fuso horário.

Trabalhar com tabelas externas do Oracle

Tabelas externas do Oracle são tabelas com dados que não estão no banco de dados. Em vez disso, os dados estão em arquivos externos que o banco de dados pode acessar. Usando tabelas externas, você pode acessar dados sem carregá-los no banco de dados. Para ter mais informações sobre tabelas externas, consulte Managing External Tables (Gerenciar tabelas externas) na documentação do Oracle.

Com o Amazon RDS, você pode armazenar arquivos de tabela externos em objetos de diretório. Você pode criar um objeto de diretório ou pode usar um objeto predefinido no banco de dados Oracle, como o diretório DATA_PUMP_DIR. Para obter informações sobre como criar os objetos de diretório, consulte Criar e eliminar diretórios no espaço de armazenamento de dados principal. Você pode consultar a visualização ALL_DIRECTORIES a fim de listar os objetos de diretório para a instância de banco de dados Oracle do Amazon RDS.

nota

Os objetos de diretório apontam para o espaço de armazenamento físico de dados principal (volume do Amazon EBS) usado pela instância. O espaço usado, juntamente com arquivos de dados, logs redo, auditoria, rastreamento e outros arquivos, conta em relação ao armazenamento alocado.

Você pode mover um arquivo de dados externo de um banco de dados Oracle para outro usando o pacote DBMS_FILE_TRANSFER ou o pacote UTL_FILE. O arquivo de dados externo é movido de um diretório no banco de dados de origem para o diretório especificado no banco de dados de destino. Para informações sobre como usar DBMS_FILE_TRANSFER, consulte Importar usando o Oracle Data Pump.

Depois de mover o arquivo de dados externo, você poderá criar uma tabela externa com ele. O seguinte exemplo cria uma tabela externa que usa o arquivo emp_xt_file1.txt no diretório USER_DIR1.

CREATE TABLE emp_xt ( emp_id NUMBER, first_name VARCHAR2(50), last_name VARCHAR2(50), user_name VARCHAR2(20) ) ORGANIZATION EXTERNAL ( TYPE ORACLE_LOADER DEFAULT DIRECTORY USER_DIR1 ACCESS PARAMETERS ( RECORDS DELIMITED BY NEWLINE FIELDS TERMINATED BY ',' MISSING FIELD VALUES ARE NULL (emp_id,first_name,last_name,user_name) ) LOCATION ('emp_xt_file1.txt') ) PARALLEL REJECT LIMIT UNLIMITED;

Suponhamos que você queira migrar dados que estejam em uma instância de banco de dados Oracle do Amazon RDS para um arquivo de dados externo. Nesse caso, você pode preencher o arquivo de dados externo criando uma tabela externa e selecionando os dados da tabela no banco de dados. Por exemplo, a instrução SQL a seguir cria a tabela externa orders_xt consultando a tabela orders no banco de dados.

CREATE TABLE orders_xt ORGANIZATION EXTERNAL ( TYPE ORACLE_DATAPUMP DEFAULT DIRECTORY DATA_PUMP_DIR LOCATION ('orders_xt.dmp') ) AS SELECT * FROM orders;

Neste exemplo, os dados são preenchidos no arquivo orders_xt.dmp no diretório DATA_PUMP_DIR.

Gerar relatórios de performance com o AWR (Automatic Workload Repository)

Para reunir dados de performance e gerar relatórios, a Oracle recomenda o AWR (Automatic Workload Repository). O AWR requer o Oracle Database Enterprise Edition e uma licença para os pacotes de Diagnóstico e Ajuste. Para ativar o AWR, defina o parâmetro de inicialização CONTROL_MANAGEMENT_PACK_ACCESS como DIAGNOSTIC ou DIAGNOSTIC+TUNING.

Trabalhar com relatórios do AWR no RDS

Para gerar relatórios do AWR, é possível executar scripts como awrrpt.sql. Esses scripts são instalados no servidor host do banco de dados. No Amazon RDS, não é possível ter acesso direto ao host. No entanto, é possível obter cópias de scripts SQL de outra instalação do Oracle Database.

Também é possível usar o AWR executando procedimentos no pacote PL/SQL SYS.DBMS_WORKLOAD_REPOSITORY. É possível usar esse pacote para gerenciar linhas de base e snapshots e também para exibir relatórios do ASH e do AWR. Por exemplo, para gerar um relatório do AWR em formato de texto, execute o procedimento DBMS_WORKLOAD_REPOSITORY.AWR_REPORT_TEXT. No entanto, não é possível acessar esses relatórios da AWR a partir do AWS Management Console.

Ao trabalhar com o AWR, recomendamos usar os procedimentos rdsadmin.rdsadmin_diagnostic_util. É possível usar esses procedimentos para gerar o seguinte:

  • Relatórios do AWR

  • Relatórios do ASH (Active Session History)

  • Relatórios do ADDM (Automatic Database Diagnostic Monitor)

  • Arquivos de despejo do Oracle Data Pump Export de dados do AWR

Os procedimentos rdsadmin_diagnostic_util salvam os relatórios no sistema de arquivos da instância de banco de dados. É possível acessar esses relatórios no console. Também é possível acessar relatórios usando os procedimentos rdsadmin.rds_file_util e acessar relatórios copiados para o Amazon S3 usando a opção Integração do S3. Para ter mais informações, consulte Leitura de arquivos no diretório de uma instância de banco de dados e Integração do Amazon S3.

É possível usar os procedimentos rdsadmin_diagnostic_util nas seguintes versões de mecanismo de banco de dados do Amazon RDS for Oracle:

  • Todas as versões do Oracle Database 21c

  • 19.0.0.0.ru-2020-04.rur-2020-04.r1 e versões posteriores do Oracle Database 19c

Para conferir um blog que explica como trabalhar com relatórios de diagnóstico em cenários de replicação, consulte Gerar relatórios do AWR para réplicas de leitura do Amazon RDS para Oracle.

Parâmetros comuns para o pacote do utilitário de diagnóstico

Normalmente, você usa os seguintes parâmetros ao gerenciar o AWR e o ADDM com o pacote rdsadmin_diagnostic_util.

Parâmetro Tipo de dados Padrão Obrigatório Descrição

begin_snap_id

NUMBER

Sim

O ID do snapshot inicial.

end_snap_id

NUMBER

Sim

O ID do snapshot final.

dump_directory

VARCHAR2

BDUMP

Não

O diretório no qual gravar o relatório ou para o qual exportar o arquivo. Se você especificar um diretório não padrão, o usuário que executa os procedimentos rdsadmin_diagnostic_util deverá ter permissões de gravação para o diretório.

p_tag

VARCHAR2

Não

Uma string que pode ser usada para distinguir entre backups para indicar a finalidade ou o uso de backups, como incremental ou daily.

Você pode especificar até 30 caracteres. Os caracteres válidos são a-z, A-Z, 0-9, um sublinhado (_), um traço (-), e um ponto (.). A etiqueta não diferencia maiúsculas de minúsculas. O RMAN sempre armazena etiquetas em maiúsculas, independentemente de como são inseridas.

As etiquetas não precisam ser exclusivas, portanto, vários backups podem ter a mesma etiqueta. Se você não especificar uma etiqueta, o RMAN atribuirá uma etiqueta padrão automaticamente usando o formato TAGYYYYMMDDTHHMMSS, em que YYYY é o ano, MM é o mês, DD é o dia, HH é a hora (no formato de 24 horas), MM são os minutos e SS os segundos. A data e a hora indicam quando o RMAN iniciou o backup. Por exemplo, um backup com a etiqueta padrão TAG20190927T214517 indica um backup iniciado em 27-09-2019 às 21:45:17.

O parâmetro p_tag é compatível com as seguintes versões de mecanismo de banco de dados Amazon RDS for Oracle:

  • Oracle Database 21c (21.0.0)

  • Oracle Database 19c (19.0.0) usando 19.0.0.0.ru-2021-10.rur-2021-10.r1 e posteriores

report_type

VARCHAR2

HTML

Não

O formato do relatório. Os valores válidos são TEXT e HTML.

dbid

NUMBER

Não

Um identificador de banco de dados (DBID) válido mostrado na visualização DBA_HIST_DATABASE_INSTANCE do Oracle. Se esse parâmetro não for especificado, o RDS usará o DBID atual, que é mostrado na visualização V$DATABASE.DBID.

Normalmente, você usa os seguintes parâmetros ao gerenciar o ASH com o pacote rdsadmin_diagnostic_util.

Parâmetro Tipo de dados Padrão Obrigatório Descrição

begin_time

DATE

Sim

A hora de início da análise do ASH.

end_time

DATE

Sim

A hora final da análise do ASH.

slot_width

NUMBER

0

Não

A duração dos slots (em segundos) usados na seção "Atividade superior" do relatório do ASH. Se esse parâmetro não for especificado, o intervalo de tempo entre begin_time e end_time não usará mais de 10 slots.

sid

NUMBER

Nulo

Não

O ID da sessão.

sql_id

VARCHAR2

Nulo

Não

O ID do SQL.

wait_class

VARCHAR2

Nulo

Não

O nome da classe de espera.

service_hash

NUMBER

Nulo

Não

O hash do nome do serviço.

module_name

VARCHAR2

Nulo

Não

O nome do módulo.

action_name

VARCHAR2

Nulo

Não

O nome da ação.

client_id

VARCHAR2

Nulo

Não

O ID específico do aplicativo da sessão do banco de dados.

plsql_entry

VARCHAR2

Nulo

Não

O ponto de entrada PL/SQL.

Gerar um relatório do AWR

Para gerar um relatório do AWR, use o procedimento rdsadmin.rdsadmin_diagnostic_util.awr_report.

O exemplo a seguir gera um relatório do AWR para o intervalo de snapshot 101–106. O arquivo de texto de saída é chamado de awrrpt_101_106.txt. É possível acessar esse relatório no AWS Management Console.

EXEC rdsadmin.rdsadmin_diagnostic_util.awr_report(101,106,'TEXT');

O exemplo a seguir gera um relatório HTML para o intervalo de snapshot 63–65. O arquivo HTML de saída é chamado de awrrpt_63_65.html. O procedimento grava o relatório no diretório de banco de dados não padrão chamado de AWR_RPT_DUMP.

EXEC rdsadmin.rdsadmin_diagnostic_util.awr_report(63,65,'HTML','AWR_RPT_DUMP');

Extrair dados do AWR em um arquivo de despejo

Para extrair dados do AWR em um arquivo de despejo, use o procedimento rdsadmin.rdsadmin_diagnostic_util.awr_extract.

O exemplo a seguir extrai o intervalo de snapshot 101–106. O arquivo de despejo de saída é chamado de awrextract_101_106.dmp. É possível acessar esse arquivo por meio do console.

EXEC rdsadmin.rdsadmin_diagnostic_util.awr_extract(101,106);

O exemplo a seguir extrai o intervalo de snapshot 63–65. O arquivo de despejo de saída é chamado de awrextract_63_65.dmp. O arquivo é armazenado no diretório de banco de dados não padrão chamado de AWR_RPT_DUMP.

EXEC rdsadmin.rdsadmin_diagnostic_util.awr_extract(63,65,'AWR_RPT_DUMP');

Gerar um relatório do ADDM

Para gerar um relatório do ADDM, use o procedimento rdsadmin.rdsadmin_diagnostic_util.addm_report.

O exemplo a seguir gera um relatório do ADDM para o intervalo de snapshot 101–106. O arquivo de texto de saída é chamado de addmrpt_101_106.txt. É possível acessar o relatório por meio do console.

EXEC rdsadmin.rdsadmin_diagnostic_util.addm_report(101,106);

O exemplo a seguir gera um relatório do ADDM para o intervalo de snapshot 63–65. O arquivo de texto de saída é chamado de addmrpt_63_65.txt. O arquivo é armazenado no diretório de banco de dados não padrão chamado de ADDM_RPT_DUMP.

EXEC rdsadmin.rdsadmin_diagnostic_util.addm_report(63,65,'ADDM_RPT_DUMP');

Gerar um relatório do ASH

Para gerar um relatório do ASH, use o procedimento rdsadmin.rdsadmin_diagnostic_util.ash_report.

O exemplo a seguir gera um relatório do ASH que inclui os dados de 14 minutos atrás até a hora atual. O nome do arquivo de saída usa o formato ashrptbegin_timeend_time.txt, onde begin_time e end_time usam o formato YYYYMMDDHH24MISS. É possível acessar o arquivo por meio do console.

BEGIN rdsadmin.rdsadmin_diagnostic_util.ash_report( begin_time => SYSDATE-14/1440, end_time => SYSDATE, report_type => 'TEXT'); END; /

O exemplo a seguir gera um relatório do ASH que inclui os dados de 18 de novembro de 2019 às 18:07 a 18 de novembro de 2019 às 18h15. O nome do relatório HTML de saída é ashrpt_20190918180700_20190918181500.html. O relatório é armazenado no diretório de banco de dados não padrão chamado de AWR_RPT_DUMP.

BEGIN rdsadmin.rdsadmin_diagnostic_util.ash_report( begin_time => TO_DATE('2019-09-18 18:07:00', 'YYYY-MM-DD HH24:MI:SS'), end_time => TO_DATE('2019-09-18 18:15:00', 'YYYY-MM-DD HH24:MI:SS'), report_type => 'html', dump_directory => 'AWR_RPT_DUMP'); END; /

Acessar relatórios do AWR no console ou na CLI

Para acessar relatórios do AWR ou exportar arquivos de despejo, é possível usar o AWS Management Console ou a AWS CLI. Para ter mais informações, consulte Como baixar um arquivo de log de banco de dados.

Para usar links de banco de dados Oracle com instâncias de bancos de dados do Amazon RDS na mesma nuvem privada virtual (VPC) ou em VPCs emparelhadas, as duas instâncias de bancos de dados devem ter uma rota válida entre elas. Verifique a rota válida entre as instâncias de bancos de dados usando suas tabelas de roteamento da VPC e a lista de controle de acesso (ACL) à rede.

O grupo de segurança de cada instância de banco de dados deve permitir a entrada e a saída da outra instância de banco de dados. As regras de entrada e saída podem se referir a security groups da mesma VPC ou de uma VPC emparelhada. Para ter mais informações, consulte Atualização dos seus grupos de segurança para referenciar grupos de segurança na VPC emparelhada.

Se você tiver configurado um servidor DNS personalizado usando os conjuntos de opções DHCP na sua VPC, seu servidor DNS personalizado deverá ser capaz de resolver o nome do destino do vínculo de banco de dados. Para ter mais informações, consulte Configuração de um servidor DNS personalizado.

Para ter mais informações sobre como usar vínculos de banco de dados com o Oracle Data Pump, consulte Importar usando o Oracle Data Pump.

Definir a edição padrão para uma instância de banco de dados

Você pode redefinir objetos de banco de dados em um ambiente privado chamado de edição. Você pode usar a redefinição com base na edição para atualizar os objetos de banco de dados de um aplicativo com tempo de inatividade mínimo.

Você pode definir a edição padrão de uma instância de banco de dados Oracle do Amazon RDS usando o procedimento do Amazon RDS rdsadmin.rdsadmin_util.alter_default_edition.

O exemplo a seguir define a edição padrão para a instância de banco de dados Oracle do Amazon RDS como RELEASE_V1.

EXEC rdsadmin.rdsadmin_util.alter_default_edition('RELEASE_V1');

O exemplo a seguir define a edição padrão para a instância de banco de dados Oracle do Amazon RDS como o padrão Oracle.

EXEC rdsadmin.rdsadmin_util.alter_default_edition('ORA$BASE');

Para ter mais informações sobre a redefinição com base na edição Oracle, consulte About editions and edition-based redefinition na documentação da Oracle.

Habilitar a auditoria para a tabela SYS.AUD$

Para habilitar a auditoria na tabela de trilha de auditoria de banco de dados SYS.AUD$, use o procedimento rdsadmin.rdsadmin_master_util.audit_all_sys_aud_table do Amazon RDS. A única propriedade de auditoria com suporte é ALL. Não é possível auditar ou não auditar instruções ou operações individuais.

A habilitação da auditoria tem suporte para instâncias de banco de dados Oracle que executam as seguintes versões:

  • Oracle Database 21c (21.0.0)

  • Oracle Database 19c (19.0.0)

O procedimento audit_all_sys_aud_table tem os seguintes parâmetros.

Nome do parâmetro Tipo de dados Padrão Obrigatório Descrição

p_by_access

booliano

true

Não

Defina como true para auditar BY ACCESS. Defina como false para auditar BY SESSION.

A consulta a seguir retorna a configuração de auditoria atual para SYS.AUD$ para um banco de dados:

SELECT * FROM DBA_OBJ_AUDIT_OPTS WHERE OWNER='SYS' AND OBJECT_NAME='AUD$';

Os comandos a seguir habilitam a auditoria de ALL em SYS.AUD$ BY ACCESS.

EXEC rdsadmin.rdsadmin_master_util.audit_all_sys_aud_table; EXEC rdsadmin.rdsadmin_master_util.audit_all_sys_aud_table(p_by_access => true);

O comando a seguir habilita a auditoria de ALL em SYS.AUD$ BY SESSION.

EXEC rdsadmin.rdsadmin_master_util.audit_all_sys_aud_table(p_by_access => false);

Para ter mais informações, consulte AUDIT (traditional auditing) (Auditoria [auditoria tradicional]) na documentação do Oracle.

Desabilitar a auditoria para a tabela SYS.AUD$

Para desabilitar a auditoria na tabela de trilha de auditoria de banco de dados SYS.AUD$, use o procedimento rdsadmin.rdsadmin_master_util.noaudit_all_sys_aud_table do Amazon RDS. Este procedimento não usa parâmetros.

A consulta a seguir retorna a configuração de auditoria atual para SYS.AUD$ para um banco de dados:

SELECT * FROM DBA_OBJ_AUDIT_OPTS WHERE OWNER='SYS' AND OBJECT_NAME='AUD$';

O comando a seguir desabilita a auditoria de ALL em SYS.AUD$.

EXEC rdsadmin.rdsadmin_master_util.noaudit_all_sys_aud_table;

Para ter mais informações, consulte NOAUDIT (traditional auditing) (Sem auditoria [auditoria tradicional]) na documentação do Oracle.

Limpar criações de índice online interrompidas

Para limpar criações de índice online com falha, use o procedimento rdsadmin.rdsadmin_dbms_repair.online_index_clean do Amazon RDS.

O procedimento online_index_clean tem os seguintes parâmetros.

Nome do parâmetro Tipo de dados Padrão Obrigatório Descrição

object_id

binary_integer

ALL_INDEX_ID

Não

O ID do objeto do índice. Normalmente, é possível usar o ID do objeto do texto do erro ORA-08104.

wait_for_lock

binary_integer

rdsadmin.rdsadmin_dbms_repair.lock_wait

Não

Especifique rdsadmin.rdsadmin_dbms_repair.lock_wait, o padrão, para tentar obter um bloqueio no objeto subjacente e tentar novamente até que um limite interno seja atingido se o bloqueio falhar.

Especifique rdsadmin.rdsadmin_dbms_repair.lock_nowait para tentar obter um bloqueio no objeto subjacente, mas não tentar novamente se o bloqueio falhar.

O exemplo a seguir limpa uma criação de índice online com falha:

declare is_clean boolean; begin is_clean := rdsadmin.rdsadmin_dbms_repair.online_index_clean( object_id => 1234567890, wait_for_lock => rdsadmin.rdsadmin_dbms_repair.lock_nowait ); end; /

Para ter mais informações, consulte ONLINE_INDEX_CLEAN function (Função ONLINE_INDEX_CLEAN) na documentação do Oracle.

Ignorar blocos corrompidos

Para ignorar blocos corrompidos durante as verificações de índices e tabelas, use o pacote rdsadmin.rdsadmin_dbms_repair.

Os procedimentos a seguir encapsulam a funcionalidade do procedimento sys.dbms_repair.admin_table e não usam parâmetros:

  • rdsadmin.rdsadmin_dbms_repair.create_repair_table

  • rdsadmin.rdsadmin_dbms_repair.create_orphan_keys_table

  • rdsadmin.rdsadmin_dbms_repair.drop_repair_table

  • rdsadmin.rdsadmin_dbms_repair.drop_orphan_keys_table

  • rdsadmin.rdsadmin_dbms_repair.purge_repair_table

  • rdsadmin.rdsadmin_dbms_repair.purge_orphan_keys_table

Os seguintes procedimentos usam o mesmo parâmetro que seus equivalentes no pacote DBMS_REPAIR para bancos de dados Oracle:

  • rdsadmin.rdsadmin_dbms_repair.check_object

  • rdsadmin.rdsadmin_dbms_repair.dump_orphan_keys

  • rdsadmin.rdsadmin_dbms_repair.fix_corrupt_blocks

  • rdsadmin.rdsadmin_dbms_repair.rebuild_freelists

  • rdsadmin.rdsadmin_dbms_repair.segment_fix_status

  • rdsadmin.rdsadmin_dbms_repair.skip_corrupt_blocks

Para ter mais informações sobre como lidar com a corrupção de banco de dados, consulte DBMS_REPARE na documentação do Oracle.

exemplo Responder a blocos corrompidos

Este exemplo mostra o fluxo de trabalho básico para responder a blocos corrompidos. Suas etapas dependerão do local e da natureza da corrupção do bloco.

Importante

Antes de tentar reparar blocos corrompidos, revise atentamente a documentação DBMS_REPARE.

Como ignorar blocos corrompidos durante as verificações de índices e tabelas
  1. Execute os procedimentos a seguir para criar tabelas de reparo se elas ainda não existirem.

    EXEC rdsadmin.rdsadmin_dbms_repair.create_repair_table; EXEC rdsadmin.rdsadmin_dbms_repair.create_orphan_keys_table;
  2. Execute os procedimentos a seguir para verificar registros existentes e depurá-los, caso seja apropriado.

    SELECT COUNT(*) FROM SYS.REPAIR_TABLE; SELECT COUNT(*) FROM SYS.ORPHAN_KEY_TABLE; SELECT COUNT(*) FROM SYS.DBA_REPAIR_TABLE; SELECT COUNT(*) FROM SYS.DBA_ORPHAN_KEY_TABLE; EXEC rdsadmin.rdsadmin_dbms_repair.purge_repair_table; EXEC rdsadmin.rdsadmin_dbms_repair.purge_orphan_keys_table;
  3. Execute o procedimento a seguir para verificar blocos corrompidos.

    SET SERVEROUTPUT ON DECLARE v_num_corrupt INT; BEGIN v_num_corrupt := 0; rdsadmin.rdsadmin_dbms_repair.check_object ( schema_name => '&corruptionOwner', object_name => '&corruptionTable', corrupt_count => v_num_corrupt ); dbms_output.put_line('number corrupt: '||to_char(v_num_corrupt)); END; / COL CORRUPT_DESCRIPTION FORMAT a30 COL REPAIR_DESCRIPTION FORMAT a30 SELECT OBJECT_NAME, BLOCK_ID, CORRUPT_TYPE, MARKED_CORRUPT, CORRUPT_DESCRIPTION, REPAIR_DESCRIPTION FROM SYS.REPAIR_TABLE; SELECT SKIP_CORRUPT FROM DBA_TABLES WHERE OWNER = '&corruptionOwner' AND TABLE_NAME = '&corruptionTable';
  4. Use o procedimento skip_corrupt_blocks para habilitar ou desabilitar a ação de ignorar as tabelas afetadas. Dependendo da situação, também pode ser necessário extrair dados para uma nova tabela e, depois, descartar a tabela que contém o bloco corrompido.

    Execute o procedimento a seguir para permitir que sejam ignoradas as tabelas corrompidas.

    begin rdsadmin.rdsadmin_dbms_repair.skip_corrupt_blocks ( schema_name => '&corruptionOwner', object_name => '&corruptionTable', object_type => rdsadmin.rdsadmin_dbms_repair.table_object, flags => rdsadmin.rdsadmin_dbms_repair.skip_flag); end; / select skip_corrupt from dba_tables where owner = '&corruptionOwner' and table_name = '&corruptionTable';

    Execute o procedimento a seguir para não permitir que sejam ignoradas as tabelas corrompidas.

    begin rdsadmin.rdsadmin_dbms_repair.skip_corrupt_blocks ( schema_name => '&corruptionOwner', object_name => '&corruptionTable', object_type => rdsadmin.rdsadmin_dbms_repair.table_object, flags => rdsadmin.rdsadmin_dbms_repair.noskip_flag); end; / select skip_corrupt from dba_tables where owner = '&corruptionOwner' and table_name = '&corruptionTable';
  5. Quando tiver concluído todos os trabalhos de reparação, execute os procedimentos a seguir para descartar as tabelas reparadas.

    EXEC rdsadmin.rdsadmin_dbms_repair.drop_repair_table; EXEC rdsadmin.rdsadmin_dbms_repair.drop_orphan_keys_table;

Redimensionar espaços de tabela, arquivos de dados e arquivos temporários

Por padrão, espaços de tabela Oracle são criados com a opção de extensão automática ativada e sem um tamanho máximo. Devido a essas configurações padrão, os espaços de tabela às vezes podem aumentar demais. Recomendamos que você especifique um tamanho máximo apropriado em espaços de tabela permanentes e temporários e que monitore cuidadosamente o uso do espaço.

Redimensionar espaços de tabela permanentes

Para redimensionar um espaço de tabela permanente em uma instância de banco de dados do RDS para Oracle, use qualquer um dos seguintes procedimentos do Amazon RDS:

  • rdsadmin.rdsadmin_util.resize_datafile

  • rdsadmin.rdsadmin_util.autoextend_datafile

O procedimento resize_datafile tem os seguintes parâmetros.

Nome do parâmetro Tipo de dados Padrão Obrigatório Descrição

p_data_file_id

número

Sim

O identificador do arquivo de dados a ser redimensionado.

p_size

varchar2

Sim

O tamanho do arquivo de dados. Especifique o tamanho em bytes (o padrão), em quilobytes (K), em megabytes (M) ou em gigabytes (G).

O procedimento autoextend_datafile tem os seguintes parâmetros.

Nome do parâmetro Tipo de dados Padrão Obrigatório Descrição

p_data_file_id

número

Sim

O identificador do arquivo de dados a ser redimensionado.

p_autoextend_state

varchar2

Sim

O estado do recurso de extensão automática. Especifique ON para estender o arquivo de dados automaticamente e OFF para desativar a extensão automática.

p_next

varchar2

Não

O tamanho do próximo incremento do arquivo de dados. Especifique o tamanho em bytes (o padrão), em quilobytes (K), em megabytes (M) ou em gigabytes (G).

p_maxsize

varchar2

Não

O espaço máximo em disco permitido para extensão automática. Especifique o tamanho em bytes (o padrão), em quilobytes (K), em megabytes (M) ou em gigabytes (G). Você pode especificar UNLIMITED para remover o limite de tamanho do arquivo.

O exemplo a seguir redimensiona o arquivo de dados de 4 MB a 500 MB.

EXEC rdsadmin.rdsadmin_util.resize_datafile(4,'500M');

O exemplo a seguir desativa a opção de extensão automática do arquivo de dados 4. Ele também ativa a extensão automática para o arquivo de dados 5, com um incremento de 128 MB e sem tamanho máximo.

EXEC rdsadmin.rdsadmin_util.autoextend_datafile(4,'OFF'); EXEC rdsadmin.rdsadmin_util.autoextend_datafile(5,'ON','128M','UNLIMITED');

Redimensionar espaços de tabela temporários

Para redimensionar espaços de tabela temporários em uma instância do RDS para Oracle, inclusive uma réplica de leitura, use qualquer um dos seguintes procedimentos do Amazon RDS:

  • rdsadmin.rdsadmin_util.resize_temp_tablespace

  • rdsadmin.rdsadmin_util.resize_tempfile

  • rdsadmin.rdsadmin_util.autoextend_tempfile

O procedimento resize_temp_tablespace tem os seguintes parâmetros.

Nome do parâmetro Tipo de dados Padrão Obrigatório Descrição

p_temp_tablespace_name

varchar2

Sim

O nome do espaço de tabela temporário a ser redimensionado.

p_size

varchar2

Sim

O nome do espaço de tabela. Especifique o tamanho em bytes (o padrão), em quilobytes (K), em megabytes (M) ou em gigabytes (G).

O procedimento resize_tempfile tem os seguintes parâmetros.

Nome do parâmetro Tipo de dados Padrão Obrigatório Descrição

p_temp_file_id

número

Sim

O identificador do arquivo temporário a ser redimensionado.

p_size

varchar2

Sim

O tamanho do arquivo temporário. Especifique o tamanho em bytes (o padrão), em quilobytes (K), em megabytes (M) ou em gigabytes (G).

O procedimento autoextend_tempfile tem os seguintes parâmetros.

Nome do parâmetro Tipo de dados Padrão Obrigatório Descrição

p_temp_file_id

número

Sim

O identificador do arquivo temporário a ser redimensionado.

p_autoextend_state

varchar2

Sim

O estado do recurso de extensão automática. Especifique ON para estender o arquivo temporário automaticamente e OFF para desativar a extensão automática.

p_next

varchar2

Não

O tamanho do próximo incremento do arquivo temporário. Especifique o tamanho em bytes (o padrão), em quilobytes (K), em megabytes (M) ou em gigabytes (G).

p_maxsize

varchar2

Não

O espaço máximo em disco permitido para extensão automática. Especifique o tamanho em bytes (o padrão), em quilobytes (K), em megabytes (M) ou em gigabytes (G). Você pode especificar UNLIMITED para remover o limite de tamanho do arquivo.

Os exemplos a seguir redimensionam um espaço de tabela temporário chamado TEMP para o tamanho de 4 GB.

EXEC rdsadmin.rdsadmin_util.resize_temp_tablespace('TEMP','4G');
EXEC rdsadmin.rdsadmin_util.resize_temp_tablespace('TEMP','4096000000');

O exemplo a seguir redimensiona um espaço de tabela temporário com base no arquivo temporário com o identificador de arquivo 1 para o tamanho de 2 MB.

EXEC rdsadmin.rdsadmin_util.resize_tempfile(1,'2M');

O exemplo a seguir desativa a opção de extensão automática do arquivo temporário 1. Ele também define o tamanho máximo de extensão automática do arquivo temporário de 2 a 10 GB, com um incremento de 100 MB.

EXEC rdsadmin.rdsadmin_util.autoextend_tempfile(1,'OFF'); EXEC rdsadmin.rdsadmin_util.autoextend_tempfile(2,'ON','100M','10G');

Para ter mais informações sobre réplicas de leitura para instâncias de banco de dados Oracle, consulte Trabalhar com réplicas de leitura do Amazon RDS para Oracle.

Limpar a lixeira

Quando você remove uma tabela, o banco de dados Oracle não remove imediatamente o espaço de armazenamento. O banco de dados renomeia a tabela e coloca ela e todos os objetos associados em uma lixeira. A limpeza da lixeira remove esses itens e libera o espaço de armazenamento.

Para limpar toda a lixeira, use o procedimento rdsadmin.rdsadmin_util.purge_dba_recyclebin do Amazon RDS. No entanto, este procedimento não pode limpar a lixeira de objetos SYS e RDSADMIN. Se você precisar limpar esses objetos, entre em contato com o AWSSupport.

O exemplo a seguir limpa toda a lixeira.

EXEC rdsadmin.rdsadmin_util.purge_dba_recyclebin;

Definir os valores padrão exibidos para a redação completa

Para alterar os valores exibidos padrão para a redação completa na instância Oracle do Amazon RDS, use o procedimento rdsadmin.rdsadmin_util.dbms_redact_upd_full_rdct_val do Amazon RDS. Observe que você cria uma política de redação com o pacote DBMS_REDACT do PL/SQL, conforme explicado na documentação do Oracle Database. O procedimento dbms_redact_upd_full_rdct_val especifica os caracteres a serem exibidos para diferentes tipos de dados afetados por uma política existente.

O procedimento dbms_redact_upd_full_rdct_val tem os seguintes parâmetros.

Nome do parâmetro Tipo de dados Padrão Obrigatório Descrição

p_number_val

número

Null

Não

Modifica o valor padrão para colunas do tipo de dados NUMBER.

p_binfloat_val

binary_float

Null

Não

Modifica o valor padrão para colunas do tipo de dados BINARY_FLOAT.

p_bindouble_val

binary_double

Null

Não

Modifica o valor padrão para colunas do tipo de dados BINARY_DOUBLE.

p_char_val

char

Null

Não

Modifica o valor padrão para colunas do tipo de dados CHAR.

p_varchar_val

varchar2

Null

Não

Modifica o valor padrão para colunas do tipo de dados VARCHAR2.

p_nchar_val

nchar

Null

Não

Modifica o valor padrão para colunas do tipo de dados NCHAR.

p_nvarchar_val

nvarchar2

Null

Não

Modifica o valor padrão para colunas do tipo de dados NVARCHAR2.

p_date_val

date

Null

Não

Modifica o valor padrão para colunas do tipo de dados DATE.

p_ts_val

timestamp

Null

Não

Modifica o valor padrão para colunas do tipo de dados TIMESTAMP.

p_tswtz_val

timestamp with time zone

Null

Não

Modifica o valor padrão para colunas do tipo de dados TIMESTAMP WITH TIME ZONE.

p_blob_val

blob

Null

Não

Modifica o valor padrão para colunas do tipo de dados BLOB.

p_clob_val

clob

Null

Não

Modifica o valor padrão para colunas do tipo de dados CLOB.

p_nclob_val

nclob

Null

Não

Modifica o valor padrão para colunas do tipo de dados NCLOB.

O exemplo a seguir altera o valor editado padrão para * referente ao tipo de dados CHAR:

EXEC rdsadmin.rdsadmin_util.dbms_redact_upd_full_rdct_val(p_char_val => '*');

O exemplo a seguir altera os valores editados padrão para tipos de dados NUMBERDATE e CHAR:

BEGIN rdsadmin.rdsadmin_util.dbms_redact_upd_full_rdct_val( p_number_val=>1, p_date_val=>to_date('1900-01-01','YYYY-MM-DD'), p_varchar_val=>'X'); END; /

Depois de alterar os valores padrão para a redação completa com o procedimento dbms_redact_upd_full_rdct_val, reinicialize a instância de banco de dados para que a alteração seja implementada. Para ter mais informações, consulte Reinicializar uma instância de banco de dados .