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.
Tópicos
- Desconectar uma sessão
- Encerrar uma sessão
- Como cancelar uma instrução SQL em uma sessão
- Habilitar e desabilitar sessões restritas
- Descarregar o grupo compartilhado
- Descarregar o cache do buffer
- Limpar o cache flash inteligente do banco de dados
- Concessão de privilégios SELECT ou EXECUTE a objetos SYS
- Revogar privilégios SELECT ou EXECUTE em objetos SYS
- Gerenciar visualizações RDS_X$ para instâncias de banco de dados Oracle
- Concessão de privilégios a usuários não mestres
- Criação de funções personalizadas para verificar senhas
- Configuração de um servidor DNS personalizado
- Configurar e anular configuração de eventos de diagnóstico do sistema
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 |
---|---|---|---|---|
|
número |
— |
Sim |
O identificador da sessão. |
|
número |
— |
Sim |
O número de série da sessão. |
|
varchar |
'IMMEDIATE' |
Não |
Os valores válidos são |
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
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 |
---|---|---|---|---|
|
número |
— |
Sim |
O identificador da sessão. |
|
número |
— |
Sim |
O número de série da sessão. |
|
varchar |
nulo |
Não |
Os valores válidos são
Se você especificar |
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 |
---|---|---|---|---|
|
número |
— |
Sim |
O identificador da sessão. |
|
número |
— |
Sim |
O número de série da sessão. |
|
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 |
---|---|---|---|---|
|
booliano |
true |
Não |
Defina como |
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 |
---|---|---|---|---|
|
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 |
|
varchar2 |
— |
Sim |
O nome do objeto para o qual conceder privilégios. O objeto pode ser uma esquema ou um função. |
|
varchar2 |
nulo |
Sim |
— |
|
booliano |
false |
Não |
Defina como |
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 toUSER1
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 |
---|---|---|---|---|
|
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 |
|
varchar2 |
— |
Sim |
O nome do objeto ao qual revogar privilégios. O objeto pode ser uma esquema ou um função. |
|
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 |
---|---|---|---|---|
|
varchar2 |
Null |
Sim |
O nome de uma tabela |
|
Booleano |
FALSE |
Não |
Um valor que indica se é necessário forçar a criação de uma visualização |
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 |
---|---|---|---|---|
|
varchar2 |
Null |
Sim |
O nome de uma tabela |
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 TOuser1
; GRANT SELECT ONsh.sales
TOuser1
;
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 procedimentocreate_verify_function
. -
Para usar a lógica de verificação padrão ou evitar armazenar a função no esquema
SYS
, utilize o procedimentocreate_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 todas as versões do RDS para Oracle.
O procedimento create_verify_function
tem os seguintes parâmetros.
Nome do parâmetro | Tipo de dados | Padrão | Obrigatório | Descrição |
---|---|---|---|---|
|
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. |
|
número |
8 |
Não |
O número mínimo de caracteres necessários. |
|
número |
256 |
Não |
O número máximo de caracteres permitidos. |
|
número |
1 |
Não |
O número mínimo de letras necessárias. |
|
número |
0 |
Não |
O número mínimo de letras maiúsculas necessárias. |
|
número |
0 |
Não |
O número mínimo de letras minúsculas necessárias. |
|
número |
1 |
Não |
O número mínimo de dígitos necessários. |
|
número |
0 |
Não |
O número mínimo de caracteres especiais necessários. |
|
número |
3 |
Não |
O número mínimo de caracteres diferentes exigido entre a senha antiga e nova. |
|
booliano |
true |
Não |
Defina como |
|
booliano |
true |
Não |
Defina como |
|
booliano |
true |
Não |
Defina como |
|
booliano |
true |
Não |
Defina como |
|
booliano |
false |
Não |
Defina como |
|
booliano |
false |
Não |
Defina como |
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_FUNCTIONCUSTOM_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 todas as versões do RDS para 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 |
---|---|---|---|---|
|
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. |
|
varchar2 |
— |
Sim |
O proprietário do esquema da sua função de verificação personalizada. |
|
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 |
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_FUNCTIONCUSTOM_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
Consulte mais informações em Version 19.0.0.0.ru-2020-10.rur-2020-10.r1 em Notas de lançamento do Amazon RDS para Oracle.
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 |
---|---|---|---|---|
|
número |
— |
Sim |
O número do evento do sistema. O valor deve ser um dos números de eventos relatados por |
|
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
ouerrorstack
) é determinado automaticamente. -
Uma instrução no formulário
ALTER SYSTEM SET EVENTS '
define os eventos de contexto. Esta notação é equivalente aevent
LEVELevent_level
'ALTER SYSTEM SET EVENTS '
.event
TRACE NAME CONTEXT FOREVER, LEVELevent_level
' -
Uma instrução no formulário
ALTER SYSTEM SET EVENTS '
define os eventos de pilha de erros. Esta notação é equivalente aevent
ERRORSTACK (event_level
)'ALTER SYSTEM SET EVENTS '
.event
TRACE NAME ERRORSTACK LEVELevent_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 |
---|---|---|---|---|
|
número |
— |
Sim |
O número do evento do sistema. O valor deve ser um dos números de eventos relatados por |
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.