

# Oracle Java Virtual Machine
<a name="oracle-options-java"></a>

O Amazon RDS oferece suporte ao Oracle Java Virtual Machine (JVM) por meio da opção `JVM`. O Oracle Java oferece um esquema SQL e funções que facilitam os recursos do Oracle Java em um banco de dados Oracle. Para obter mais informações, consulte [Introdução ao Java no banco de dados Oracle](https://docs.oracle.com/database/121/JJDEV/chone.htm) na documentação da Oracle. É possível usar o Oracle JVM com todas as versões do Oracle Database 21c (21.0.0) e do Oracle Database 19c (19.0.0).

## Considerações sobre o Oracle JVM
<a name="oracle-options-java.considerations"></a>

A implementação do Java no Amazon RDS tem um conjunto limitado de permissões. O usuário mestre recebe a função `RDS_JAVA_ADMIN`, que concede um subconjunto dos privilégios concedidos pela função `JAVA_ADMIN`. Para listar os privilégios concedidos à função `RDS_JAVA_ADMIN`, execute a seguinte consulta na sua instância de banco de dados:

```
SELECT * FROM dba_java_policy 
   WHERE grantee IN ('RDS_JAVA_ADMIN', 'PUBLIC') 
   AND enabled = 'ENABLED' 
   ORDER BY type_name, name, grantee;
```

## Pré-requisitos para o Oracle JVM
<a name="oracle-options-java.prerequisites"></a>

Veja a seguir os pré-requisitos para usar o Oracle Java:
+ A instância de banco de dados deve pertencer a uma classe grande o suficiente. O Oracle Java não é compatível com as classes de instância de banco de dados db.t3.small. Para obter mais informações, consulte [Classes de instâncias de banco de dados do ](Concepts.DBInstanceClass.md).
+ A instância de banco de dados deve ter **Auto Minor Version Upgrade (Atualização automática de versão secundária)** habilitada. Essa opção permite que a instância de banco de dados receba atualizações de versões secundárias do mecanismo automaticamente quando estiverem disponíveis. O Amazon RDS usa essa opção para atualizar a instância de banco de dados para a Oracle Patch Set Update (PSU) ou Release Update (RU) mais recente. Para obter mais informações, consulte [Modificar uma instância de banco de dados do Amazon RDS](Overview.DBInstance.Modifying.md). 

## Práticas recomendadas do Oracle JVM
<a name="oracle-options-java.best-practices"></a>

Estas são as práticas recomendadas para usar o Oracle Java: 
+ Para obter segurança máxima, use a opção `JVM` com Secure Sockets Layer (SSL). Para obter mais informações, consulte [Oracle Secure Sockets Layer](Appendix.Oracle.Options.SSL.md). 
+ Configure a instância de banco de dados para restringir o acesso à rede. Para obter mais informações, consulte [Cenários para acessar uma instância de banco de dados em uma VPC](USER_VPC.Scenarios.md) e [Trabalhar com uma instância de banco de dados em uma VPC](USER_VPC.WorkingWithRDSInstanceinaVPC.md). 
+ Atualize a configuração de seus endpoints HTTPS para oferecer suporte ao TLSv1.2 se você atender às seguintes condições:
  + Você usa o Oracle Java Virtual Machine (JVM) para conectar um endpoint HTTPS por meio de protocolos TLSv1 ou TLSv1.1.
  + Seu endpoint não é compatível com o protocolo TLSv1.2.
  + Você não aplicou a atualização da versão de abril de 2021 ao Oracle DB.

  Ao atualizar a configuração do endpoint, você garante que a conectividade da JVM com o endpoint HTTPS continuará funcionando. Para obter mais informações sobre alterações TLS no Oracle JRE e no JDK, consulte [Oracle JRE e JDK Cryptographic Roadmap](https://java.com/en/jre-jdk-cryptoroadmap.html).

## Adicionar a opção Oracle JVM
<a name="oracle-options-java.add"></a>

Este é o processo geral para adicionar a opção `JVM` a uma instância de banco de dados: 

1. Crie um novo grupo de opções, ou copie ou modifique um existente.

1. Adicione a opção ao grupo de opções.

1. Associe o grupo de opções à instância de banco de dados.

Há uma breve interrupção enquanto a opção `JVM` é adicionada. Depois de adicionar a opção , você não precisará reiniciar sua instância de banco de dados. Assim que o grupo de opções estiver ativo, o Oracle Java estará disponível. 

**nota**  
Durante essa interrupção, as funções de verificação de senha são desativadas brevemente. Você também pode esperar ver eventos relacionados às funções de verificação de senha durante a interrupção. As funções de verificação de senha são ativadas novamente antes que a instância de banco de dados Oracle esteja disponível.

**Para adicionar a opção JVM a uma instância de banco de dados**

1. Determine o grupo de opções que você deseja usar. Você pode criar um novo grupo de opções ou usar um existente. Se você quiser usar um grupo de opções existente, vá para a próxima etapa. Caso contrário, crie um grupo de opções de banco de dados personalizado com as seguintes configurações: 
   + Em **Engine (Mecanismo)**, selecione o mecanismo de banco de dados usado pela instância de banco de dados (**oracle-ee**, **oracle-se**, **oracle-se1** ou **oracle-se2**). 
   + Para **Major engine version (Versão do mecanismo principal)**, escolha a versão da sua instância de banco de dados. 

   Para obter mais informações, consulte [Criar um grupo de opções](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.Create). 

1. Adicione a opção **JVM** ao grupo de opções. Para mais informações sobre a adição de opções, consulte [Adicionar uma opção a um grupo de opções](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.AddOption). 

1. Aplique o grupo de opções a uma instância de banco de dados nova ou existente: 
   + Para uma nova instância de banco de dados, aplique o grupo de opções ao executar a instância. Para obter mais informações, consulte [Criar uma instância de banco de dados do Amazon RDS](USER_CreateDBInstance.md).
   + Para uma instância de banco de dados existente, aplique o grupo de opções modificando a instância e anexando o novo grupo de opções. Para obter mais informações, consulte [Modificar uma instância de banco de dados do Amazon RDS](Overview.DBInstance.Modifying.md).

1. Conceda as permissões necessárias aos usuários.

   Por padrão, o usuário mestre do Amazon RDS tem as permissões para usar a opção `JVM`. Se outros usuários precisarem dessas permissões, conecte-se à instância de banco de dados como o usuário mestre em um cliente SQL e conceda as permissões aos usuários.

   O exemplo a seguir concede as permissões para usar a opção `JVM` ao usuário `test_proc`.

   ```
   create user test_proc identified by password;
   CALL dbms_java.grant_permission('TEST_PROC', 'oracle.aurora.security.JServerPermission', 'LoadClassInPackage.*', '');
   ```
**nota**  
Especifique uma senha diferente do prompt mostrado aqui como prática recomendada de segurança.

   Depois que o usuário receber as permissões, a seguinte consulta deverá retornar a saída.

   ```
   select * from dba_java_policy where grantee='TEST_PROC';
   ```
**nota**  
O nome do usuário do Oracle diferencia maiúsculas de minúsculas e, normalmente, usa somente caracteres maiúsculos.

## Remover a opção Oracle JVM
<a name="oracle-options-java.remove"></a>

Você pode remover a opção `JVM` de uma instância de banco de dados. Há uma breve interrupção enquanto a opção é removida. Depois de remover a opção `JVM`, você não precisará reiniciar a instância de banco de dados. 

**Atenção**  
 Remover a opção `JVM` poderá resultar em perda de dados se a instância de banco de dados estiver usando tipos de dados que foram habilitados como parte da opção. Faça backup dos dados antes de continuar. Para obter mais informações, consulte [Backup, restauração e exportação de dados](CHAP_CommonTasks.BackupRestore.md). 

Para remover a opção `JVM` de uma instância de banco de dados, faça o seguinte: 
+ Remova a opção `JVM` do grupo de opções ao qual ela pertence. Essa alteração afeta todas as instâncias de bancos de dados que usam o grupo de opções. Para obter mais informações, consulte [Remover uma opção de um grupo de opções](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.RemoveOption). 
+ Modifique a instância de banco de dados e especifique um grupo de opções diferente que não inclua a opção `JVM`. Essa alteração afeta uma única instância de banco de dados. Você pode especificar um grupo de opções padrão (vazio) ou criar um grupo de opções personalizado diferente. Para ter mais informações, consulte [Modificar uma instância de banco de dados do Amazon RDS](Overview.DBInstance.Modifying.md). 