Realização de tarefas comuns diversas para instâncias de banco de dados Oracle
Veja a seguir como executar diversas tarefas de DBA nas instâncias de banco de dados do Amazon RDS que executam o Oracle. Para oferecer uma experiência de serviço gerenciado, o Amazon RDS não fornece acesso ao shell para instâncias de bancos de dados e restringe o acesso a determinados procedimentos e tabelas do sistema que exigem privilégios avançados.
Tópicos
Criar e eliminar diretórios no espaço de armazenamento de dados principal
Para criar diretórios, use o procedimento rdsadmin.rdsadmin_util.create_directory
do Amazon RDS. É possível criar até 10.000 diretórios, todas localizados no seu espaço de armazenamento físico de dados principal. Para criar diretórios, use o procedimento rdsadmin.rdsadmin_util.drop_directory
do Amazon RDS.
Os procedimentos create_directory
e drop_directory
têm o parâmetro necessário a seguir.
Nome do parâmetro | Tipo de dados | Padrão | Obrigatório | Descrição |
---|---|---|---|---|
|
VARCHAR2 |
— |
Sim |
O nome do diretório. |
O exemplo a seguir cria um novo diretório chamado PRODUCT_DESCRIPTIONS
.
EXEC rdsadmin.rdsadmin_util.create_directory(p_directory_name => 'product_descriptions');
O dicionário de dados armazena o nome do diretório em maiúsculas. Você pode listar os diretórios consultando DBA_DIRECTORIES
. O sistema escolhe automaticamente o nome do caminho do host real. O exemplo a seguir obtém o caminho do diretório para o diretório chamado PRODUCT_DESCRIPTIONS
:
SELECT DIRECTORY_PATH FROM DBA_DIRECTORIES WHERE DIRECTORY_NAME='PRODUCT_DESCRIPTIONS'; DIRECTORY_PATH ---------------------------------------- /rdsdbdata/userdirs/01
O nome de usuário mestre para a instância de banco de dados tem privilégios de leitura e gravação no novo diretório e pode conceder acesso a outros usuários. Privilégios EXECUTE
não estão disponíveis para diretórios em uma instância de banco de dados. Os diretórios são criados no seu espaço de armazenamento físico de dados principal e consumirão espaço e largura de banda de E/S.
O exemplo a seguir elimina o diretório chamado PRODUCT_DESCRIPTIONS
.
EXEC rdsadmin.rdsadmin_util.drop_directory(p_directory_name => 'product_descriptions');
nota
Também é possível descartar um diretório usando o comando do Oracle SQ DROP
DIRECTORY
.
Descartar um diretório não remove seu conteúdo. Como o procedimento rdsadmin.rdsadmin_util.create_directory
pode reutilizar nomes de caminhos, os arquivos em diretórios eliminados podem aparecer em um diretório recém-criado. Antes de eliminar um diretório, recomendamos que você use UTL_FILE.FREMOVE
para remover arquivos do diretório. Para obter mais informações, consulte Procedimento FREMOVE
Listagem de arquivos no diretório de uma instância de banco de dados
Para listar os arquivos em um diretório, use o procedimento rdsadmin.rds_file_util.listdir
do Amazon RDS. Esse procedimento não é compatível com uma réplica da Oracle. O procedimento listdir
tem os seguintes parâmetros.
Nome do parâmetro | Tipo de dados | Padrão | Obrigatório | Descrição |
---|---|---|---|---|
|
varchar2 |
— |
Sim |
O nome do diretório a ser listado. |
O exemplo a seguir concede privilégios de leitura/gravação no diretório PRODUCT_DESCRIPTIONS
para o usuário rdsadmin
e, em seguida, lista os arquivos neste diretório.
GRANT READ,WRITE ON DIRECTORY PRODUCT_DESCRIPTIONS TO rdsadmin; SELECT * FROM TABLE(rdsadmin.rds_file_util.listdir(p_directory => 'PRODUCT_DESCRIPTIONS'));
Leitura de arquivos no diretório de uma instância de banco de dados
Para ler um arquivo de texto, use o procedimento rdsadmin.rds_file_util.read_text_file
do Amazon RDS. O procedimento read_text_file
tem os seguintes parâmetros.
Nome do parâmetro | Tipo de dados | Padrão | Obrigatório | Descrição |
---|---|---|---|---|
|
varchar2 |
— |
Sim |
O nome do diretório que contém o arquivo. |
|
varchar2 |
— |
Sim |
O nome do arquivo a ser lido. |
O exemplo a seguir cria o arquivo rice.txt
no diretório PRODUCT_DESCRIPTIONS
.
declare fh sys.utl_file.file_type; begin fh := utl_file.fopen(location=>'PRODUCT_DESCRIPTIONS', filename=>'rice.txt', open_mode=>'w'); utl_file.put(file=>fh, buffer=>'AnyCompany brown rice, 15 lbs'); utl_file.fclose(file=>fh); end; /
O exemplo a seguir lê o arquivo rice.txt
do diretório PRODUCT_DESCRIPTIONS
.
SELECT * FROM TABLE (rdsadmin.rds_file_util.read_text_file( p_directory => 'PRODUCT_DESCRIPTIONS', p_filename => 'rice.txt'));
Acessar arquivos do Opatch
O Opatch é um utilitário do Oracle que permite a aplicação e a reversão de patches para o software do Oracle. O mecanismo do Oracle para determinar quais patches foram aplicados a um banco de dados é o comando opatch lsinventory
. Para abrir solicitações de serviço para clientes de Traga sua própria licença (BYOL – Bring Your Own Licence), o suporte do Oracle solicita o arquivo lsinventory
e, às vezes, o arquivo lsinventory_detail
gerado pelo Opatch.
Para oferecer uma experiência de serviço gerenciada, o Amazon RDS não fornece acesso ao shell para o Opatch. Em vez disso, o lsinventory-
no diretório BDUMP contém as informações de patch relacionadas à versão atual do mecanismo. Quando você executa um upgrade principal ou secundário, o Amazon RDS atualiza dbv
.txtlsinventory-
em até uma hora após a aplicação do patch. Para verificar os patches aplicados, leia dbv
.txtlsinventory-
. Essa ação é semelhante a executar o comando dbv
.txtopatch lsinventory
.
nota
Os exemplos nesta seção pressupõem que o diretório BDUMP seja chamado BDUMP
. Em uma réplica de leitura, o nome do diretório BDUMP é diferente. Para saber como obter o nome BDUMP consultando V$DATABASE.DB_UNIQUE_NAME
em uma réplica de leitura, consulte Listar arquivos.
Os arquivos de inventário usam a convenção de nomenclatura do Amazon RDS lsinventory-
e dbv
.txtlsinventory_detail-
, onde dbv
.txtdbv
é o nome completo da versão do banco de dados. O arquivo lsinventory-
está disponível em todas as versões do banco de dados. O dbv
.txtlsinventory_detail-
correspondente está disponível em 19.0.0.0, ru-2020-01.rur-2020-01.r1 ou posterior.dbv
.txt
Por exemplo, se a versão do seu banco de dados for 19.0.0.0.ru-2021-07.rur-2021-07.r1, os arquivos de inventário terão os nomes a seguir.
lsinventory-19.0.0.0.ru-2021-07.rur-2021-07.r1.txt lsinventory_detail-19.0.0.0.ru-2021-07.rur-2021-07.r1.txt
Baixe os arquivos que correspondem à versão atual do mecanismo de banco de dados.
Como baixar um arquivo de inventário usando o console
Abra o console do Amazon RDS em https://console.aws.amazon.com/rds/
. -
No painel de navegação, escolha Databases (Bancos de dados).
-
Escolha o nome da instância de banco de dados que contém o arquivo de log que você deseja visualizar.
-
Escolha a guia Logs & events (Logs e eventos).
-
Role para baixo até a seção Logs.
-
Na seção Logs, procure por
lsinventory
. -
Escolha o arquivo que você deseja acessar e selecione Download (Baixar).
Para ler o lsinventory-
em um cliente SQL, é possível usar uma instrução dbv
.txtSELECT
. Para esta técnica, use uma das seguintes funções rdsadmin
: rdsadmin.rds_file_util.read_text_file
ou rdsadmin.tracefile_listing
.
Na consulta de exemplo a seguir, substitua dbv
pela versão do seu banco de dados Oracle. Por exemplo, a versão do seu banco de dados pode ser 19.0.0.0.ru-2020-04.rur-2020-04.r1.
SELECT text FROM TABLE(rdsadmin.rds_file_util.read_text_file('BDUMP', 'lsinventory-
dbv
.txt'));
Para ler o lsinventory-
em um cliente SQL, é possível escrever um programa PL/SQL. Esse programa usa dbv
.txtutl_file
para ler o arquivo e dbms_output
para imprimi-lo. Esses são pacotes fornecidos pelo Oracle.
No programa de exemplo a seguir, substitua dbv
pela versão do seu banco de dados Oracle. Por exemplo, a versão do seu banco de dados pode ser 19.0.0.0.ru-2020-04.rur-2020-04.r1.
SET SERVEROUTPUT ON DECLARE v_file SYS.UTL_FILE.FILE_TYPE; v_line VARCHAR2(1000); v_oracle_home_type VARCHAR2(1000); c_directory VARCHAR2(30) := 'BDUMP'; c_output_file VARCHAR2(30) := 'lsinventory-
dbv
.txt'; BEGIN v_file := SYS.UTL_FILE.FOPEN(c_directory, c_output_file, 'r'); LOOP BEGIN SYS.UTL_FILE.GET_LINE(v_file, v_line,1000); DBMS_OUTPUT.PUT_LINE(v_line); EXCEPTION WHEN no_data_found THEN EXIT; END; END LOOP; END; /
Ou consulte rdsadmin.tracefile_listing
e transfira a saída para um arquivo. O exemplo a seguir transfere a saída para /tmp/tracefile.txt
.
SPOOL /tmp/tracefile.txt SELECT * FROM rdsadmin.tracefile_listing WHERE FILENAME LIKE 'lsinventory%'; SPOOL OFF;
Gerenciando de tarefas do advisor
O banco de dados Oracle inclui vários advisors. Cada advisor suporta tarefas automatizadas e manuais. Você pode usar procedimentos no pacote rdsadmin.rdsadmin_util
para gerenciar algumas tarefas do advisor.
Os procedimentos de tarefas do advisor estão disponíveis nas seguintes versões do mecanismo:
-
Oracle Database 21c (21.0.0)
-
Versão 19.0.0.0.ru-2021-01.rur-2021-01.r1 e versões posteriores do Oracle Database 19c
Para obter mais informações, consulte Versão 19.0.0.0.ru-2021-01.rur-2021-01.r1 em Notas de lançamento do Amazon RDS for Oracle.
Tópicos
Definição de parâmetros para tarefas do advisor
Para definir parâmetros para algumas tarefas do advisor, use o procedimento do Amazon RDS rdsadmin.rdsadmin_util.advisor_task_set_parameter
. O procedimento advisor_task_set_parameter
tem os seguintes parâmetros.
Nome do parâmetro | Tipo de dados | Padrão | Obrigatório | Descrição |
---|---|---|---|---|
|
varchar2 |
— |
Sim |
O nome da tarefa do advisor cujos parâmetros você deseja alterar. Os valores a seguir são válidos:
|
|
varchar2 |
— |
Sim |
O nome do parâmetro da tarefa. Para localizar parâmetros válidos para uma tarefa do advisor, execute a seguinte consulta. Substitua
|
|
varchar2 |
— |
Sim |
O valor de um parâmetro de tarefa. Para localizar valores válidos para parâmetros de tarefa, execute a seguinte consulta. Substitua
|
Os seguintes programas PL/SQL definem ACCEPT_PLANS
como FALSE
para SYS_AUTO_SPM_EVOLVE_TASK
. A tarefa automatizada do Gerenciamento de Plano SQL verifica os planos e gera um relatório de suas descobertas, mas não evolui os planos automaticamente. Você pode usar um relatório para identificar novas listas de referência do plano SQL e aceitá-las manualmente.
BEGIN rdsadmin.rdsadmin_util.advisor_task_set_parameter( p_task_name => 'SYS_AUTO_SPM_EVOLVE_TASK', p_parameter => 'ACCEPT_PLANS', p_value => 'FALSE'); END;
Os seguintes programas PL/SQL definem EXECUTION_DAYS_TO_EXPIRE
como 10
para AUTO_STATS_ADVISOR_TASK
. A tarefa predefinida AUTO_STATS_ADVISOR_TASK
é executada automaticamente na janela de manutenção uma vez por dia. O exemplo define o período de retenção para a execução da tarefa como 10 dias.
BEGIN rdsadmin.rdsadmin_util.advisor_task_set_parameter( p_task_name => 'AUTO_STATS_ADVISOR_TASK', p_parameter => 'EXECUTION_DAYS_TO_EXPIRE', p_value => '10'); END;
Desativação de AUTO_STATS_ADVISOR_TASK
Para desativar AUTO_STATS_ADVISOR_TASK
, use o procedimento do Amazon RDS rdsadmin.rdsadmin_util.advisor_task_drop
. O procedimento advisor_task_drop
aceita o parâmetro a seguir.
Nome do parâmetro | Tipo de dados | Padrão | Obrigatório | Descrição |
---|---|---|---|---|
|
varchar2 |
— |
Sim |
O nome da tarefa do advisor a ser desabilitada. O único valor válido é |
Execute o seguinte comando: AUTO_STATS_ADVISOR_TASK
.
EXEC rdsadmin.rdsadmin_util.advisor_task_drop('AUTO_STATS_ADVISOR_TASK')
Você pode reabilitar AUTO_STATS_ADVISOR_TASK
usando rdsadmin.rdsadmin_util.dbms_stats_init
.
Reativação de AUTO_STATS_ADVISOR_TASK
Para reativar AUTO_STATS_ADVISOR_TASK
, use o procedimento do Amazon RDS rdsadmin.rdsadmin_util.dbms_stats_init
. O procedimento dbms_stats_init
não recebe parâmetros.
O comando a seguir reativa AUTO_STATS_ADVISOR_TASK
.
EXEC rdsadmin.rdsadmin_util.dbms_stats_init()