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

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

Veja a seguir como executar determinadas tarefas comuns de DBA relacionadas ao sistema nas instâncias de bancos 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.

Desconectar uma sessão

Para desconectar a sessão atual finalizando o processo de servidor dedicado, use o procedimento rdsadmin.rdsadmin_util.disconnect do Amazon RDS. O procedimento disconnect tem os seguintes parâmetros.

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

sid

número

Sim

O identificador da sessão.

serial

número

Sim

O número de série da sessão.

method

varchar

'IMMEDIATE'

Não

Os valores válidos são 'IMMEDIATE' ou 'POST_TRANSACTION'.

O exemplo a seguir desconecta uma sessão.

begin rdsadmin.rdsadmin_util.disconnect( sid => sid, serial => serial_number); end; /

Para obter o identificador da sessão e o número de série da sessão, consulte a visualização V$SESSION. O seguinte exemplo obtém todas as sessões para o usuário AWSUSER.

SELECT SID, SERIAL#, STATUS FROM V$SESSION WHERE USERNAME = 'AWSUSER';

O banco de dados deve estar aberto para usar esse método. Para obter mais informações sobre como desconectar uma sessão, consulte ALTER SYSTEM (Alterar sistema) na documentação do Oracle.

Encerrar uma sessão

Para encerrar uma sessão, use o procedimento do Amazon RDS rdsadmin.rdsadmin_util.kill. O procedimento kill tem os seguintes parâmetros.

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

sid

número

Sim

O identificador da sessão.

serial

número

Sim

O número de série da sessão.

method

varchar

nulo

Não

Os valores válidos são 'IMMEDIATE' ou 'PROCESS'. Se você especificar IMMEDIATE, terá o mesmo resultado que o produzido ao executar a seguinte instrução:

ALTER SYSTEM KILL SESSION 'sid,serial#' IMMEDIATE

Se você especificar PROCESS, encerrará os processos associados a uma sessão. Especifique PROCESS apenas se o encerramento da sessão com IMMEDIATE foi bem-sucedido.

Para obter o identificador da sessão e o número de série da sessão, consulte a visualização V$SESSION. O seguinte exemplo obtém todas as sessões para o usuário AWSUSER.

SELECT SID, SERIAL#, STATUS FROM V$SESSION WHERE USERNAME = 'AWSUSER';

O exemplo a seguir encerra uma sessão.

BEGIN rdsadmin.rdsadmin_util.kill( sid => sid, serial => serial_number, method => 'IMMEDIATE'); END; /

No exemplo a seguir, os processos associados a uma sessão são encerrados.

BEGIN rdsadmin.rdsadmin_util.kill( sid => sid, serial => serial_number, method => 'PROCESS'); END; /

Como cancelar uma instrução SQL em uma sessão

Para cancelar uma instrução SQL em uma sessão, use o procedimento rdsadmin.rdsadmin_util.cancel do Amazon RDS.

nota

Esse procedimento é compatível com o Oracle Database 19c (19.0.0) e com todas as versões principais e secundárias posteriores do RDS for Oracle.

O procedimento cancel tem os seguintes parâmetros.

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

sid

número

Sim

O identificador da sessão.

serial

número

Sim

O número de série da sessão.

sql_id

varchar2

nulo

Não

O identificador SQL da instrução SQL

O exemplo a seguir canela uma instrução SQL em uma sessão.

begin rdsadmin.rdsadmin_util.cancel( sid => sid, serial => serial_number, sql_id => sql_id); end; /

Para obter o identificador da sessão, o número de série da sessão e o identificador SQL de uma instrução SQL, consulte a visualização V$SESSION. O exemplo a seguir obtém todos os identificadores SQL e de sessão para o usuário AWSUSER.

select SID, SERIAL#, SQL_ID, STATUS from V$SESSION where USERNAME = 'AWSUSER';

Habilitar e desabilitar sessões restritas

Para habilitar e desabilitar sessões restritas, use o procedimento rdsadmin.rdsadmin_util.restricted_session do Amazon RDS. O procedimento restricted_session tem os seguintes parâmetros.

Nome do parâmetro Tipo de dados Padrão Sim Descrição

p_enable

booliano

true

Não

Defina como true para habilitar sessões restritas, false para desabilitar sessões restritas.

O exemplo a seguir mostra como habilitar e desabilitar sessões restritas.

/* Verify that the database is currently unrestricted. */ SELECT LOGINS FROM V$INSTANCE; LOGINS ------- ALLOWED /* Enable restricted sessions */ EXEC rdsadmin.rdsadmin_util.restricted_session(p_enable => true); /* Verify that the database is now restricted. */ SELECT LOGINS FROM V$INSTANCE; LOGINS ---------- RESTRICTED /* Disable restricted sessions */ EXEC rdsadmin.rdsadmin_util.restricted_session(p_enable => false); /* Verify that the database is now unrestricted again. */ SELECT LOGINS FROM V$INSTANCE; LOGINS ------- ALLOWED

Descarregar o grupo compartilhado

Para descarregar o grupo compartilhado, use o procedimento rdsadmin.rdsadmin_util.flush_shared_pool do Amazon RDS. O procedimento flush_shared_pool não tem parâmetros.

O exemplo a seguir libera o pool compartilhado.

EXEC rdsadmin.rdsadmin_util.flush_shared_pool;

Descarregar o cache do buffer

Para descarregar o cache do buffer, use o procedimento rdsadmin.rdsadmin_util.flush_buffer_cache do Amazon RDS. O procedimento flush_buffer_cache não tem parâmetros.

O exemplo a seguir libera o cache do buffer.

EXEC rdsadmin.rdsadmin_util.flush_buffer_cache;

Limpar o cache flash inteligente do banco de dados

Para limpar o cache do flash inteligente do banco de dados, use o procedimento rdsadmin.rdsadmin_util.flush_flash_cache do Amazon RDS. O procedimento flush_flash_cache não tem parâmetros. O exemplo a seguir libera o cache do flash inteligente do banco de dados.

EXEC rdsadmin.rdsadmin_util.flush_flash_cache;

Para obter mais informações sobre o uso do cache flash inteligente do banco de dados com o RDS para Oracle, consulte Armazenar dados temporários em um armazenamento de instância do RDS for Oracle.

Concessão de privilégios SELECT ou EXECUTE a objetos SYS

Normalmente, você transfere privilégios usando funções, que podem conter muitos objetos. Para conceder privilégios a um único objeto, use o procedimento rdsadmin.rdsadmin_util.grant_sys_object do Amazon RDS. O procedimento concede apenas privilégios já concedidos ao usuário mestre por uma função ou por uma concessão direta.

O procedimento grant_sys_object tem os seguintes parâmetros.

Importante

Para todos os valores de parâmetro, use letras maiúsculas, a menos que você tenha criado o usuário com um identificador que diferencia letras maiúsculas de minúsculas. Por exemplo, se você executar CREATE USER myuser ou CREATE USER MYUSER, o dicionário de dados armazenará MYUSER. No entanto, se você usar aspas duplas em CREATE USER "MyUser", o dicionário de dados armazenará MyUser.

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

p_obj_name

varchar2

Sim

O nome do objeto ao qual conceder privilégios. O objeto pode ser um diretório, uma função, um pacote, um procedimento, uma sequência, uma tabela ou uma visualização. Os nomes dos objetos devem ser expressos exatamente como eles aparecem em DBA_OBJECTS. Como a maioria dos objetos do sistema é definida em maiúsculas, recomendamos que você tente isso primeiro.

p_grantee

varchar2

Sim

O nome do objeto para o qual conceder privilégios. O objeto pode ser uma esquema ou um função.

p_privilege

varchar2

nulo

Sim

p_grant_option

booliano

false

Não

Defina como true para usar a opção de concessão. O parâmetro p_grant_option é compatível com as versões 12.1.0.2.v4 e posteriores, todas as versões 12.2.0.1 e todas as versões 19.0.0.

O exemplo a seguir concede privilégios de seleção em um objeto chamado V_$SESSION a um usuário chamado USER1.

begin rdsadmin.rdsadmin_util.grant_sys_object( p_obj_name => 'V_$SESSION', p_grantee => 'USER1', p_privilege => 'SELECT'); end; /

O exemplo a seguir concede privilégios de seleção em um objeto chamado V_$SESSION a um usuário chamado USER1 com a opção de concessão.

begin rdsadmin.rdsadmin_util.grant_sys_object( p_obj_name => 'V_$SESSION', p_grantee => 'USER1', p_privilege => 'SELECT', p_grant_option => true); end; /

Para poder conceder privilégios a um objeto, sua conta deve ter esses privilégios concedidos a ela diretamente com a opção de concessão ou por meio de uma função concedida usando with admin option. No caso mais comum, você pode querer conceder SELECT em uma visualização de DBA que foi concedida à função SELECT_CATALOG_ROLE. Se essa função ainda não estiver diretamente concedida ao seu usuário usando with admin option, você não poderá transferir o privilégio. Se você tiver privilégios de DBA, poderá conceder a função diretamente a outro usuário.

O exemplo a seguir concede SELECT_CATALOG_ROLE e EXECUTE_CATALOG_ROLE a USER1. Com o with admin option é usado, USER1 agora pode conceder acesso a objetos SYS que foram concedidos a SELECT_CATALOG_ROLE.

GRANT SELECT_CATALOG_ROLE TO USER1 WITH ADMIN OPTION; GRANT EXECUTE_CATALOG_ROLE to USER1 WITH ADMIN OPTION;

Objetos já concedidos a PUBLIC não precisam ser novamente concedidos. Se você usar o procedimento grant_sys_object para conceder acesso novamente, a chamada de procedimento será bem-sucedida.

Revogar privilégios SELECT ou EXECUTE em objetos SYS

Para revogar os privilégios de um único objeto, use o procedimento rdsadmin.rdsadmin_util.revoke_sys_object do Amazon RDS. O procedimento revoga apenas os privilégios já concedido à conta mestra por uma função ou por uma concessão direta.

O procedimento revoke_sys_object tem os seguintes parâmetros.

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

p_obj_name

varchar2

Sim

O nome do objeto ao qual revogar privilégios. O objeto pode ser um diretório, uma função, um pacote, um procedimento, uma sequência, uma tabela ou uma visualização. Os nomes dos objetos devem ser expressos exatamente como eles aparecem em DBA_OBJECTS. A maioria dos objetos do sistema é definida em maiúsculas, então recomendamos que você tente isso primeiro.

p_revokee

varchar2

Sim

O nome do objeto ao qual revogar privilégios. O objeto pode ser uma esquema ou um função.

p_privilege

varchar2

nulo

Sim

O exemplo a seguir revoga privilégios de seleção em um objeto denominado V_$SESSION de um usuário denominado USER1.

begin rdsadmin.rdsadmin_util.revoke_sys_object( p_obj_name => 'V_$SESSION', p_revokee => 'USER1', p_privilege => 'SELECT'); end; /

Gerenciar visualizações RDS_X$ para instâncias de banco de dados Oracle

Talvez seja necessário acessar tabelas SYS.X$ fixas, que só podem ser acessadas por SYS. Para criar visualizações SYS.RDS_X$ em tabelas X$ elegíveis, use os procedimentos no pacote rdsadmin.rdsadmin_util. O usuário principal recebe automaticamente o privilégio SELECT … WITH GRANT OPTION nas visualizações RDS_X$.

Os procedimentos rdsadmin.rdsadmin_util estão disponíveis nas seguintes versões do banco de dados:

  • 21.0.0.0.ru-2023-10.rur-2023-10.r1 e versões posteriores do Oracle Database 21c

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

Importante

Internamente, o pacote rdsadmin.rdsadmin_util cria visualizações em tabelas X$. As tabelas X$ são objetos internos do sistema que não estão descritos na documentação do Oracle Database. Recomendamos testar visualizações específicas no banco de dados que não é de produção e somente criar visualizações no banco de dados de produção com a orientação do Oracle Support.

Listar tabelas fixas X$ elegíveis para uso em visualizações RDS_X$

Para listar tabelas X$ que são elegíveis para uso em visualizações RDS_X$, use o procedimento rdsadmin.rdsadmin_util.list_allowed_sys_x$_views do RDS. Este procedimento não aceita parâmetros. As declarações a seguir listam todas as tabelas X$ elegíveis (exemplo de saída incluído).

SQL> SET SERVEROUTPUT ON SQL> SELECT * FROM TABLE(rdsadmin.rdsadmin_util.list_allowed_sys_x$_views); 'X$BH' 'X$K2GTE' 'X$KCBWBPD' 'X$KCBWDS' 'X$KGLLK' 'X$KGLOB' 'X$KGLPN' 'X$KSLHOT' 'X$KSMSP' 'X$KSPPCV' 'X$KSPPI' 'X$KSPPSV' 'X$KSQEQ' 'X$KSQRS' 'X$KTUXE' 'X$KQRFP'

A lista das tabelas X$ elegíveis pode mudar ao longo do tempo. Para garantir que a lista de tabelas fixas X$ elegíveis esteja atualizada, execute list_allowed_sys_x$_views periodicamente.

Criar visualizações SYS.RDS_X$

Para criar uma visualização RDS_X$ em uma tabela X$ elegível, use o procedimento rdsadmin.rdsadmin_util.create_sys_x$_view do RDS. É possível criar visualizações apenas para as tabelas listadas na saída de rdsadmin.rdsadmin_util.list_allowed_sys_x$_views. O procedimento create_sys_x$_view tem os parâmetros a seguir.

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

p_x$_tbl

varchar2

Nulo

Sim

O nome de uma tabela X$ válida. O valor deve ser uma das tabelas X$ relatadas por list_allowed_sys_x$_views.

p_force_creation

Booleano

FALSE

Não

Um valor que indica se é necessário forçar a criação de uma visualização RDS_X$ que já existe para uma tabela X$. Por padrão, o RDS não criará uma visualização se ela já existir. Para forçar a criação, defina esse parâmetro como TRUE.

O exemplo a seguir cria a visualização SYS.RDS_X$KGLOB na tabela X$KGLOB. O formato do nome da visualização é RDS_X$tablename.

SQL> SET SERVEROUTPUT ON SQL> EXEC rdsadmin.rdsadmin_util.create_sys_x$_view('X$KGLOB'); PL/SQL procedure successfully completed.

A consulta do dicionário de dados a seguir lista a visualização SYS.RDS_X$KGLOB e mostra o status. O usuário principal recebe automaticamente o privilégio SELECT ... WITH GRANT OPTION nessa visualização.

SQL> SET SERVEROUTPUT ON SQL> COL OWNER FORMAT A30 SQL> COL OBJECT_NAME FORMAT A30 SQL> COL STATUS FORMAT A30 SQL> SET LINESIZE 200 SQL> SELECT OWNER, OBJECT_NAME, STATUS FROM DBA_OBJECTS WHERE OWNER = 'SYS' AND OBJECT_NAME = 'RDS_X$KGLOB'; OWNER OBJECT_NAME STATUS ------------------------------ ------------------------------ ------------------------------ SYS RDS_X$KGLOB VALID
Importante

Não é garantido que as tabelas X$ permaneçam as mesmas antes e depois de uma atualização. O RDS para Oracle descarta e recria as visualizações RDS_X$ nas tabelas X$ durante uma atualização do mecanismo. Depois, ele concede o privilégio SELECT ... WITH GRANT OPTION ao usuário principal. Depois de uma atualização, conceda privilégios aos usuários do banco de dados conforme necessário nas visualizações RDS_X$ correspondentes.

Listar visualizações SYS.RDS_X$

Para listar as visualizações RDS_X$ existentes, use o procedimento rdsadmin.rdsadmin_util.list_created_sys_x$_views do RDS. O procedimento lista somente as visualizações que foram criadas pelo procedimento create_sys_x$_view. O exemplo a seguir lista as tabelas X$ que têm visualizações RDS_X$ correspondentes (exemplo de saída incluído).

SQL> SET SERVEROUTPUT ON SQL> COL XD_TBL_NAME FORMAT A30 SQL> COL STATUS FORMAT A30 SQL> SET LINESIZE 200 SQL> SELECT * FROM TABLE(rdsadmin.rdsadmin_util.list_created_sys_x$_views); XD_TBL_NAME STATUS ------------------------------ ------------------------------ X$BH VALID X$K2GTE VALID X$KCBWBPD VALID 3 rows selected.

Descartar visualizações RDS_X$

Para descartar uma visualização SYS.RDS_X$, use o procedimento rdsadmin.rdsadmin_util.drop_sys_x$_view do RDS. É possível descartar apenas as visualizações na saída de rdsadmin.rdsadmin_util.list_allowed_sys_x$_views. O procedimento drop_sys_x$_view aceita o parâmetro a seguir.

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

p_x$_tbl

varchar2

Nulo

Sim

O nome de uma tabela X$ fixa válida. O valor deve ser uma das tabelas fixas X$ relatadas por list_created_sys_x$_views.

O exemplo a seguir cria a visualização RDS_X$KGLOB criada na tabela X$KGLOB.

SQL> SET SERVEROUTPUT ON SQL> EXEC rdsadmin.rdsadmin_util.drop_sys_x$_view('X$KGLOB'); PL/SQL procedure successfully completed.

O exemplo a seguir mostra que a visualização SYS.RDS_X$KGLOB foi descartada (exemplo de saída incluído).

SQL> SET SERVEROUTPUT ON SQL> COL OWNER FORMAT A30 SQL> COL OBJECT_NAME FORMAT A30 SQL> COL STATUS FORMAT A30 SQL> SET LINESIZE 200 SQL> SELECT OWNER, OBJECT_NAME, STATUS FROM DBA_OBJECTS WHERE OWNER = 'SYS' AND OBJECT_NAME = 'RDS_X$KGLOB'; no rows selected

Concessão de privilégios a usuários não mestres

Você pode conceder privilégios de seleção para muitos objetos no esquema SYS, usando a função SELECT_CATALOG_ROLE. A função SELECT_CATALOG_ROLE concede aos usuários privilégios SELECT em visualizações de dicionários de dados. O exemplo a seguir concede a função SELECT_CATALOG_ROLE a um usuário chamado user1.

GRANT SELECT_CATALOG_ROLE TO user1;

É possível conceder privilégios EXECUTE para muitos objetos no esquema SYS usando a função EXECUTE_CATALOG_ROLE. A função EXECUTE_CATALOG_ROLE concede aos usuários privilégios EXECUTE para pacotes e procedimentos no dicionário de dados. O exemplo a seguir concede a função EXECUTE_CATALOG_ROLE a um usuário chamado user1.

GRANT EXECUTE_CATALOG_ROLE TO user1;

O exemplo a seguir obtém as permissões permitidas pelas funções SELECT_CATALOG_ROLE e EXECUTE_CATALOG_ROLE.

SELECT * FROM ROLE_TAB_PRIVS WHERE ROLE IN ('SELECT_CATALOG_ROLE','EXECUTE_CATALOG_ROLE') ORDER BY ROLE, TABLE_NAME ASC;

O exemplo a seguir cria um usuário não mestre chamado user1, concede o privilégio CREATE SESSION e concede o privilégio SELECT em um banco de dados chamado sh.sales.

CREATE USER user1 IDENTIFIED BY PASSWORD; GRANT CREATE SESSION TO user1; GRANT SELECT ON sh.sales TO user1;

Criação de funções personalizadas para verificar senhas

Você pode criar uma função de verificação de senha personalizada das seguintes maneiras:

  • Para usar a lógica de verificação padrão e armazenar a função no esquema SYS, utilize o procedimento create_verify_function.

  • Para usar a lógica de verificação padrão ou evitar armazenar a função no esquema SYS, utilize o procedimento create_passthrough_verify_fcn.

O procedimento create_verify_function

Você pode criar uma função personalizada para verificar senhas usando o procedimento do Amazon RDS rdsadmin.rdsadmin_password_verify.create_verify_function. O procedimento create_verify_function é compatível com a versão 12.1.0.2.v5 e com todas as versões principais e secundárias posteriores do RDS for Oracle.

O procedimento create_verify_function tem os seguintes parâmetros.

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

p_verify_function_name

varchar2

Sim

O nome da sua função personalizada. Essa função é criada por você no esquema SYS. Você atribui essa função a perfis de usuário.

p_min_length

número

8

Não

O número mínimo de caracteres necessários.

p_max_length

número

256

Não

O número máximo de caracteres permitidos.

p_min_letters

número

1

Não

O número mínimo de letras necessárias.

p_min_uppercase

número

0

Não

O número mínimo de letras maiúsculas necessárias.

p_min_lowercase

número

0

Não

O número mínimo de letras minúsculas necessárias.

p_min_digits

número

1

Não

O número mínimo de dígitos necessários.

p_min_special

número

0

Não

O número mínimo de caracteres especiais necessários.

p_min_different_chars

número

3

Não

O número mínimo de caracteres diferentes exigido entre a senha antiga e nova.

p_disallow_username

booliano

true

Não

Defina como true para não permitir o nome de usuário na senha.

p_disallow_reverse

booliano

true

Não

Defina como true para não permitir o inverso do nome de usuário na senha.

p_disallow_db_name

booliano

true

Não

Defina como true para não permitir o nome do banco de dados ou do servidor na senha.

p_disallow_simple_strings

booliano

true

Não

Defina como true para não permitir strings simples como senha.

p_disallow_whitespace

booliano

false

Não

Defina como true para não permitir caracteres de espaço em branco na senha.

p_disallow_at_sign

booliano

false

Não

Defina como true para não permitir o caractere @ na senha.

Você pode criar várias funções de verificação de senha.

Existem restrições quanto ao nome da sua função personalizada. Sua função personalizada não pode ter o mesmo nome que um objeto de sistema existente. O nome pode ter no máximo 30 caracteres. Além disso, o nome deve incluir uma das seguintes strings: PASSWORD, VERIFY, COMPLEXITY, ENFORCE ou STRENGTH.

O exemplo a seguir cria uma função chamada CUSTOM_PASSWORD_FUNCTION. A função requer que uma senha tenha pelo menos 12 caracteres, 2 caracteres em maiúsculas, 1 dígito e 1 caractere especial e que a senha não permita o caractere @.

begin rdsadmin.rdsadmin_password_verify.create_verify_function( p_verify_function_name => 'CUSTOM_PASSWORD_FUNCTION', p_min_length => 12, p_min_uppercase => 2, p_min_digits => 1, p_min_special => 1, p_disallow_at_sign => true); end; /

Para ver o texto da sua função de verificação, consulte DBA_SOURCE. O exemplo a seguir obtém o texto de uma função de senha personalizada chamada CUSTOM_PASSWORD_FUNCTION.

COL TEXT FORMAT a150 SELECT TEXT FROM DBA_SOURCE WHERE OWNER = 'SYS' AND NAME = 'CUSTOM_PASSWORD_FUNCTION' ORDER BY LINE;

Para associar sua função de verificação a um perfil de usuário, use alter profile. O seguinte exemplo associa uma função de verificação ao perfil de usuário DEFAULT.

ALTER PROFILE DEFAULT LIMIT PASSWORD_VERIFY_FUNCTION CUSTOM_PASSWORD_FUNCTION;

Para ver quais perfis de usuários estão associados a quais funções de verificação, consulte DBA_PROFILES. O exemplo a seguir obtém os perfis associados à função de verificação personalizada chamada CUSTOM_PASSWORD_FUNCTION.

SELECT * FROM DBA_PROFILES WHERE RESOURCE_NAME = 'PASSWORD' AND LIMIT = 'CUSTOM_PASSWORD_FUNCTION'; PROFILE RESOURCE_NAME RESOURCE LIMIT ------------------------- -------------------------------- -------- ------------------------ DEFAULT PASSWORD_VERIFY_FUNCTION PASSWORD CUSTOM_PASSWORD_FUNCTION

O exemplo a seguir obtém todos os perfis e as funções de verificação de senha às quais eles estão associados.

SELECT * FROM DBA_PROFILES WHERE RESOURCE_NAME = 'PASSWORD_VERIFY_FUNCTION'; PROFILE RESOURCE_NAME RESOURCE LIMIT ------------------------- -------------------------------- -------- ------------------------ DEFAULT PASSWORD_VERIFY_FUNCTION PASSWORD CUSTOM_PASSWORD_FUNCTION RDSADMIN PASSWORD_VERIFY_FUNCTION PASSWORD NULL

O procedimento create_passthrough_verify_fcn

O procedimento create_passthrough_verify_fcn é compatível com a versão 12.1.0.2.v7 e com todas as versões principais e secundárias posteriores do RDS for Oracle.

Você pode criar uma função personalizada para verificar senhas usando o procedimento do Amazon RDS rdsadmin.rdsadmin_password_verify.create_passthrough_verify_fcn. O procedimento create_passthrough_verify_fcn tem os seguintes parâmetros.

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

p_verify_function_name

varchar2

Sim

O nome da sua função de verificação personalizada. Esta é uma função de wrapper criada por você no esquema SYS e não contém lógica de verificação. Você atribui essa função a perfis de usuário.

p_target_owner

varchar2

Sim

O proprietário do esquema da sua função de verificação personalizada.

p_target_function_name

varchar2

Sim

O nome da sua função personalizada existente que contém a lógica de verificação. Sua função personalizada deve retornar um valor booliano. Sua função deverá retornar true se a senha é válida e false se a senha for inválida.

O exemplo a seguir cria uma função de verificação de senha que usa a lógica da função chamada PASSWORD_LOGIC_EXTRA_STRONG.

begin rdsadmin.rdsadmin_password_verify.create_passthrough_verify_fcn( p_verify_function_name => 'CUSTOM_PASSWORD_FUNCTION', p_target_owner => 'TEST_USER', p_target_function_name => 'PASSWORD_LOGIC_EXTRA_STRONG'); end; /

Para associar a função de verificação a um perfil de usuário, use alter profile. O seguinte exemplo associa a função de verificação ao perfil de usuário DEFAULT.

ALTER PROFILE DEFAULT LIMIT PASSWORD_VERIFY_FUNCTION CUSTOM_PASSWORD_FUNCTION;

Configuração de um servidor DNS personalizado

O Amazon RDS oferece suporte para acesso à rede de saída nas suas instâncias de bancos de dados que executam o Oracle. Para obter mais informações sobre acesso à rede de saída, inclusive pré-requisitos, consulte Configurar o acesso UTL_HTTP usando certificados e uma carteira Oracle.

O Amazon RDS Oracle permite a resolução do Serviço de Nomes de Domínio (DNS) de um servidor DNS personalizado que pertence ao cliente. Você pode resolver apenas nomes de domínio totalmente qualificados a partir da sua instância de banco de dados do Amazon RDS por meio do seu servidor DNS personalizado.

Após a configuração do seu servidor de nomes DNS personalizado, demora até 30 minutos para propagar as alterações na sua instância de banco de dados. Depois que as alterações são propagadas para sua a instância de banco de dados, todo o tráfego de rede de saída que requer uma pesquisa de DNS consulta o servidor DNS por meio da porta 53.

Para configurar um servidor DNS personalizado para a instância de banco de dados do Amazon RDS for Oracle, faça o seguinte:

  • Nas opções de DHCP anexadas à nuvem privada virtual (VPC), defina a opção domain-name-servers como o endereço IP do seu servidor de nomes DNS. Para obter mais informações, consulte Conjuntos de opções de DHCP.

    nota

    A opção domain-name-servers aceita até quatro valores, mas sua instância de banco de dados do Amazon RDS usa apenas o primeiro valor.

  • Certifique-se de que seu servidor DNS possa resolver todas as consultas de pesquisa, incluindo nomes DNS públicos, nomes DNS privados do Amazon EC2 e nomes DNS específicos do cliente. Se o tráfego de rede de saída contiver pesquisas de DNS que o seu servidor DNS não pode manipular, este deverá ter provedores de DNS upstream configurados.

  • Configure seu servidor DNS para produzir respostas de protocolo UDP de 512 bytes ou menos.

  • Configure seu servidor DNS para produzir respostas de protocolo TCP de 1024 bytes ou menos.

  • Configure seu servidor DNS para permitir tráfego de entrada das suas instâncias de banco de dados do Amazon RDS pela porta 53. Se o seu servidor DNS estiver em uma Amazon VPC, ela deverá ter um grupo de segurança que contenha regras de entrada que permitam tráfego UDP e TCP na porta 53. Se o seu servidor DNS não estiver em uma Amazon VPC, ele deverá ter uma lista de permissões de firewall apropriada para permitir o tráfego de entrada UDP e TCP na porta 53.

    Para obter mais informações, consulte Grupos de segurança para sua VPC e Adição e remoção de regras.

  • Configurar a VPC da sua instância de banco de dados do Amazon RDS para permitir o tráfego de saída por meio da porta 53. Sua VPC deve ter um security group que contém regras de saída que permitem o tráfego TCP e UDP na porta 53.

    Para obter mais informações, consulte Grupos de segurança para sua VPC e Adição e remoção de regras.

  • O caminho de roteamento entre a instância de banco de dados do Amazon RDS e o servidor DNS deve ser configurado corretamente para permitir o tráfego DNS.

    • Se a instância de banco de dados do Amazon RDS e o servidor DNS não estiverem na mesma VPC, uma conexão de emparelhamento precisará ser configurada entre eles. Para obter mais informações, consulte O que é emparelhamento de VPC?

Configurar e anular configuração de eventos de diagnóstico do sistema

Para configurar e anular a configuração de eventos de diagnóstico no nível da sessão, você pode usar a instrução Oracle SQL ALTER SESSION SET EVENTS. No entanto, para definir eventos no nível do sistema, você não pode usar o Oracle SQL. Em vez disso, use os procedimentos de evento do sistema no pacote rdsadmin.rdsadmin_util. Os procedimentos de eventos do sistema estão disponíveis nas seguintes versões do mecanismo:

  • Todas as versões do Oracle Database 21c

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

    Para obter mais informações, consulte Versão 19.0.0.0.ru-2020-10.rur-2020-10.r1 em Notas de lançamento do Amazon RDS for Oracle.

  • 12.2.0.1.ru-2020-10.rur-2020-10.r1 e versões posteriores do Oracle Database 12c versão 2 (12.2.0.1)

    Para obter mais informações, consulte Versão 12.2.0.1.ru-2020-10.rur-2020-10.r1 em Notas de lançamento do Amazon RDS for Oracle.

  • 12.1.0.2.V22 e versões posteriores do Oracle Database 12c versão 1 (12.1.0.2)

    Para obter mais informações, consulte Versão 12.1.0.2.v22 em Notas de lançamento do Amazon RDS for Oracle.

para

Importante

Internamente, o pacote rdsadmin.rdsadmin_util define eventos usando a instrução ALTER SYSTEM SET EVENTS. Essa instrução ALTER SYSTEM não está incluída na documentação do Oracle Database. Alguns eventos de diagnóstico do sistema podem gerar grandes quantidades de informações de monitoramento, causar contenção ou afetar a disponibilidade do banco de dados. Recomendamos que você teste eventos de diagnóstico específicos em seu banco de dados de não produção e defina apenas eventos em seu banco de dados de produção sob orientação do Oracle Support.

Listar eventos de diagnóstico do sistema permitidos

Para listar os eventos do sistema que você pode definir, use o procedimento rdsadmin.rdsadmin_util.list_allowed_system_events do Amazon RDS. Este procedimento não aceita parâmetros.

O exemplo a seguir lista todos os eventos do sistema que você pode definir.

SET SERVEROUTPUT ON EXEC rdsadmin.rdsadmin_util.list_allowed_system_events;

A saída de exemplo a seguir lista os números de eventos e suas descrições. Use os procedimentos set_system_event do Amazon RDS para definir esses eventos e unset_system_event para desconfigurá-los.

604 - error occurred at recursive SQL level 942 - table or view does not exist 1401 - inserted value too large for column 1403 - no data found 1410 - invalid ROWID 1422 - exact fetch returns more than requested number of rows 1426 - numeric overflow 1427 - single-row subquery returns more than one row 1476 - divisor is equal to zero 1483 - invalid length for DATE or NUMBER bind variable 1489 - result of string concatenation is too long 1652 - unable to extend temp segment by in tablespace 1858 - a non-numeric character was found where a numeric was expected 4031 - unable to allocate bytes of shared memory ("","","","") 6502 - PL/SQL: numeric or value error 10027 - Specify Deadlock Trace Information to be Dumped 10046 - enable SQL statement timing 10053 - CBO Enable optimizer trace 10173 - Dynamic Sampling time-out error 10442 - enable trace of kst for ORA-01555 diagnostics 12008 - error in materialized view refresh path 12012 - error on auto execute of job 12504 - TNS:listener was not given the SERVICE_NAME in CONNECT_DATA 14400 - inserted partition key does not map to any partition 31693 - Table data object failed to load/unload and is being skipped due to error:
nota

A lista dos eventos do sistema permitidos pode mudar ao longo do tempo. Para se certificar de que você tem a lista mais recente de eventos qualificados, use rdsadmin.rdsadmin_util.list_allowed_system_events.

Definir eventos de diagnóstico do sistema

Para definir um evento do sistema, use o procedimento rdsadmin.rdsadmin_util.set_system_event do Amazon RDS. Você só pode definir eventos listados na saída do rdsadmin.rdsadmin_util.list_allowed_system_events. O procedimento set_system_event tem os parâmetros a seguir.

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

p_event

número

Sim

O número do evento do sistema. O valor deve ser um dos números de eventos relatados por list_allowed_system_events.

p_level

número

Sim

O nível do evento. Consulte a documentação do Oracle Database ou o Oracle Support para obter descrições de diferentes valores de nível.

O procedimento set_system_event constrói e executa as instruções ALTER SYSTEM SET EVENTS necessárias de acordo com os seguintes princípios:

  • O tipo de evento (context ou errorstack) é determinado automaticamente.

  • Uma instrução no formulário ALTER SYSTEM SET EVENTS 'event LEVEL event_level' define os eventos de contexto. Esta notação é equivalente a ALTER SYSTEM SET EVENTS 'event TRACE NAME CONTEXT FOREVER, LEVEL event_level'.

  • Uma instrução no formulário ALTER SYSTEM SET EVENTS 'event ERRORSTACK (event_level)' define os eventos de pilha de erros. Esta notação é equivalente a ALTER SYSTEM SET EVENTS 'event TRACE NAME ERRORSTACK LEVEL event_level'.

O exemplo a seguir define o evento 942 no nível 3 e o evento 10442 no nível 10. A amostra de saída está incluída.

SQL> SET SERVEROUTPUT ON SQL> EXEC rdsadmin.rdsadmin_util.set_system_event(942,3); Setting system event 942 with: alter system set events '942 errorstack (3)' PL/SQL procedure successfully completed. SQL> EXEC rdsadmin.rdsadmin_util.set_system_event(10442,10); Setting system event 10442 with: alter system set events '10442 level 10' PL/SQL procedure successfully completed.

Listar eventos de diagnóstico do sistema definidos

Para listar os eventos do sistema que estão definidos no momento, use o procedimento rdsadmin.rdsadmin_util.list_set_system_events do Amazon RDS. Este procedimento relata apenas os eventos definidos no nível do sistema por set_system_event.

O exemplo a seguir lista os eventos ativos do sistema.

SET SERVEROUTPUT ON EXEC rdsadmin.rdsadmin_util.list_set_system_events;

A saída de exemplo a seguir mostra a lista de eventos, o tipo de evento, o nível no qual os eventos estão definidos no momento e a hora em que o evento foi definido.

942 errorstack (3) - set at 2020-11-03 11:42:27 10442 level 10 - set at 2020-11-03 11:42:41 PL/SQL procedure successfully completed.

Desconfigurar eventos de diagnóstico do sistema

Para desconfigurar um evento do sistema, use o procedimento rdsadmin.rdsadmin_util.unset_system_event do Amazon RDS. Você só pode desconfigurar eventos listados na saída do rdsadmin.rdsadmin_util.list_allowed_system_events. O procedimento unset_system_event aceita o seguinte parâmetro.

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

p_event

número

Sim

O número do evento do sistema. O valor deve ser um dos números de eventos relatados por list_allowed_system_events.

O exemplo a seguir desconfigura os eventos 942 e 10442. A amostra de saída está incluída.

SQL> SET SERVEROUTPUT ON SQL> EXEC rdsadmin.rdsadmin_util.unset_system_event(942); Unsetting system event 942 with: alter system set events '942 off' PL/SQL procedure successfully completed. SQL> EXEC rdsadmin.rdsadmin_util.unset_system_event(10442); Unsetting system event 10442 with: alter system set events '10442 off' PL/SQL procedure successfully completed.