Neste tutorial e vídeo aula, aprenderemos como desbloquear o usuário / Schema HR no Oracle Database 18c, 12c, 11g e versões anteriores.
O HR é um esquema de uma aplicação de Recursos Humanos, criado pela Oracle, que tem como objetivo principal armazenar os registros de empregados de uma organização.
Este schema é ideal para estudar Oracle e é bastante utilizado para demonstrar exemplos, exercícios de cursos e sites da internet.

Vídeo Aula : Liberação Usuário HR no Oracle Database
Nesta vídeo aula, apresentamos todo processo para liberar o usuário HR no Banco de dados Oracle, tanto para as versões 11G e anteriores quanto para o Oracle 12c e Posteriores.
Conteúdo desta vídeo aula
🕐 Clique nos links de marca de tempo abaixo para assistir o conteúdo de interesse :
⏺ Liberação Usuário HR Oracle 11g e Versões anteriores : 1:55
⏺ Liberação Usuário HR Oracle 12c e versões posteriores : 2:33
⏺ CDB – Containers Database x PDBs Pluggable Databases : 3:29
⏺ Etapas liberação usuário HR no Oracle 18c : 3:58
⏺ Etapa 1 : Descoberta do ID do contêiner : 4:42
⏺ Etapa 2 : Descoberta do nome do serviço / Service Name : 6:22
⏺ Etapa 3: Criação de entrada no arquivo “TNSNAMES.ora” : 7:13
⏺ Etapa 4 : Alternar do CDB para o PDB : 9:08
⏺ Etapa 5 : Desbloquear o usuário de HR : 10:05
Habilitação do Schema HR Oracle.
Os schemas / usuários de amostra por padrão são bloqueados na instalação do banco de dados Oracle e para utiliza-los é necessário desbloqueá-los como veremos a seguir
Liberação Schema HR Oracle 11g e versões anteriores
Nas versões 11c do Oracle e anteriores, para ativar o usuário HR, bastava se conectar no banco via SQLPLUS ou SQL Developer com os usuários sys ou system e executar o comando:
ALTER USER hr IDENTIFIED BY sua senha ACCOUNT UNLOCK;
Onde sua senha seria uma senha a ser escolhida por você.
Rodando o comando acima no Oracle 11g e versões anteriores o esquema HR já estará liberado e pronto para uso.
Porém a partir do Oracle 12c, novas funcionalidades foram lançadas na arquitetura deste banco de dados.
Liberação Usuário HR Oracle 12c e versões posteriores
Para efetuar a liberação do HR no Oracle 12c e versões posteriores é necessário entender o conceito da nova arquitetura Oracle Multitenant
Nesta tutorial, utilizamos a versão 18c, mas a partir da versão 12c já temos esta nova arquitetura implementada.
A partir desta versão, foram incluídas as funcionalidade de CDB – Containers Database que é uma espécie de banco de dados principal ou raiz que é capaz de abrigar um ou mais banco de dados plugáveis (PDBs)
Os PDBs (Pluggable Databases) ou banco de dados plugável é um banco de dados de usuário ou aplicação que pode ser clonado ou transferido de um CDB para outro.
Nova arquitetura Oracle Multitenant : CDB – Containers Database x PDBs – Pluggable Databases
Fazendo uma analogia da arquitetura Oracle Multitenant com um navio de carga.
Imagine que o navio seria o CDB – Containers Database e as cargas ou contêiners de cargas seriam os PDBs Pluggable Databases que podem ser clonados ou transferidos de um CDB para outro CDB.

Um CDB abriga diversos PDBs que podem ter administradores distintos.
Referência: https://docs.oracle.com/database/121/CNCPT/cdbovrvw.htm#CNCPT89242
Etapas liberação usuário HR no Oracle 18c

Agora que temos o conhecimento teórico, podemos seguir para desbloquear o usuário HR no Oracle Database 18c.
O Procedimento também válido para o Oracle 12c
Basicamente a liberação do Schema no Oracle é um processo de cinco etapas:
- Descoberta do ID do contêiner.
- Descoberta do nome do serviço / Service Name.
- Criação de uma entrada no arquivo “TNSNAMES.ora”.
- Alternar do CDB para o PDB.
- Desbloquear o usuário de HR
A seguir abordaremos cada uma dessas etapas em detalhes.
Desbloqueio do Schema HR no Oracle 18c
Etapa 1 : Descoberta do ID do contêiner.
Para desbloquear o schema HR, precisamos descobrir o nome do serviço de banco de dados PDB que contém os esquemas de amostra.
Para isso, o primeiro passo é descobrir o ID do contêiner desse banco de dados plugável, anotá-lo para depois descobrirmos o nome do serviço na segunda etapa.
Para isso, vamos sqlplus usando o usuário sysdba.
Sqlplus / as sysdba
Depois de conectar-se ao banco de dados com sucesso usando o usuário sys, é possível consultar a dynamic performance view v$PDBS para saber os nomes e os IDs dos contêiner dos bancos de dados plugáveis criados dentro do contêiner database ao qual você está conectado no momento. Para isso usamos a seguinte query:
SELECT name, con_id FROM v$pdbs;
A saída do select acima mostrará os nomes e os IDs de contêiner de todos os bancos de dados plugáveis criados dentro do banco de dados de contêineres CBD$ROOT.
Nesta consulta anote o nome (name) e o ID do contêiner(con_id) do banco de dados plugável padrão.
O banco de dados plugável padrão é o que criamos durante a instalação do oracle 18c nas vídeo aulas:
Como instalar o Oracle Database 18c no Windows
ou nesta publicação
Instalação Oracle Database 18c XE Linux
Geralmente, o nome desse banco de dados plugável padrão no Oracle Database 18c é XEPDB1
O que é esse banco plugável PDB$SEED?
PDB$SEED é um banco de dados plugável modelo inicial fornecido pelo sistema para criar PDBs.
Eu sugiro que você não mexa com isso.
Referência: https://docs.oracle.com/database/121/CNCPT/cdbovrvw.htm#CNCPT89242
PDB descoberto em nosso Laboratório
Em nossa vídeo aula e exemplo, o nome do banco de dados plugável padrão em que os esquemas de amostra estão localizados é XEPDB1 e seu con_id correspondente é 3.
Etapa 2 : Descoberta do nome do serviço / Service Name
Agora, utilizando o ID do contêiner do banco de dados plugável XEPDB1, descobriremos seu nome de serviço.
Geralmente, o banco de dados plugável e seu Service Name (Nome do Serviço) compartilham o mesmo nome, mas é uma boa prática verificar isso antes.
Para descobrir o nome do serviço correspondente ao nosso banco de dados plugável, Vamos consultar dynamic performance view v$active_services.
SELECT name as “Service Name” FROM v$active_services WHERE con_id =3;
Usando a consulta acima, recuperamos o nome do serviço correspondente ao ID do contêiner = 3.
Este ID do contêiner é correspondente ao PDB padrão XEPDB1 que possui todos os esquemas de amostra.
O Service Name para o banco de dados plugável XEPDB1 é xepdb1.
Etapa 3: Criação de entrada no arquivo “TNSNAMES.ora”
Agora utilizando o nome do nosso PDB padrão e seu nome serviço correspondente, precisamos criar uma entrada para o nosso listener.
Existem duas maneiras de fazer isso: 1 utilizando o utilitário NETCA ou manualmente.
A criação manual de uma entrada no arquivo TNSNAMES.ora é a mais rápida e simples e será a que vamos seguir.
Para criar uma entrada para o listener no arquivo TNSNAMES.ora, primeiro você precisa localizá-lo.
O tnsnames.ora é um arquivo de configuração de rede, portanto, você o encontrará na pasta “network”, que por sua vez está localizada na DB_HOME do banco Oracle.
1- Local do arquivo TNSNAMES.ora
% DB_Home%\network\ admin\tnsnames.ora
Depois de localizar o arquivo tnsnames.ora, crie uma entrada no final do arquivo e salve-a.
A entrada será mais ou menos assim.
XEPDB1 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.11.128)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = xepdb1)
)
)
2 – Editar o arquivo e colocar o service name conforme dados obtidos em nossas querys anteriores
3 – Reiniciar o Listener
Para ativar as novas alterações que acabamos de fazer no arquivo tnsnames.ora, precisamos reiniciar o Listener.
Você pode fazer isso escrevendo este comando abaixo fornecido no prompt de comando. Apenas certifique-se de iniciar seu prompt de comando com privilégios administrativos
lsnrctl reload
Depois para verificarmos se a entrada que fizemos no arquivo tnsnames.ora esta em uso, utilizamos o comando:
lsnrctl status
Caso tenha dúvidas sobre como acessar o prompt de comando com privilégios administrativos, parte desta outra vídeo aula mostra como fazer isso:
Como desativar o Controle de Contas de Usuário (UAC)
Etapa 4 : Alternar do CDB para o PDB
Para esclarecer nosso entendimento até agora, vamos resumir como está estruturado essa nova arquitetura multitenant:
1 – Todos os usuários de alto privilégio, como sys, são colocados dentro de um banco de dados de contêiner
2- Todos os esquemas de amostra são colocados dentro do banco de dados plugável padrão
3 – O que significa que, para desbloqueá-los, precisamos para alternar do banco de dados do contêiner para o banco de dados plugável.
Para alternar do CDB CDB$ROOT para o PDB XEPDB1, podemos usar o comando ALTER SESSION.
Acessar sqlplus:
Sqlplus / as sysdba
utilizar o comando no SQLPLUS:
ALTER SESSION SET container = xepdb1;
Etapa 5 : Desbloquear o usuário de HR
Agora com sessão no banco pdb xepdb1 podemos desbloquear o usuário hr
No entanto, você pode seguir estas etapas para desbloquear qualquer outro usuário de exemplo / amostra que desejar.
Verificar se o pdb padrão está aberto
Agora vamos verificar se o pdb padrão está aberto, pois para executar qualquer DDL ou DML, o banco de dados precisa estar no modo Open (read Write).
Pois pode ocorrer do mesmo estar em estado de MOUNT.
Para verificar o modo de um banco de dados PDB, usamos a seguinte query:
SELECT name, open_mode FROM v$pdbs;
Se o banco estiver montado ou “MOUNTED“ é preciso abri-lo com:
ALTER PLUGGABLE DATABASE open;
Na execução bem-sucedida, essa instrução DDL abrirá seu PDB padrão.
Desbloqueando o Usuário HR
Depois de executar todas as etapas acima e configurar seu banco de dados corretamente, você estará pronto para desbloquear qualquer usuário de exemplo ou amostra que desejar.
Em nosso caso, Vamos desbloquear o usuário de HR.
O comando utilizado para isso será:
ALTER USER hr IDENTIFIED BY hr ACCOUNT UNLOCK;
Acessando o Schema HR
No Oracle você consegue definir o serviço ao qual você vai se conectar com o caractere @ seguido do nome do serviço.
Isso não era possível nas versões anteriores do Oracle.
No nosso caso então para se conectar ao HR é necessário o seguinte comando.
conn hr/hr @xepdb1;
Materiais e leituras que recomendamos para você:
- Como instalar o Oracle Database 18c no Windows
- Como instalar o SQL Developer no Windows
- Instalação Oracle Database 18c XE Linux
- Como Instalar o SQL Developer Oracle no Linux
- Monitorando operações de longa duração no Oracle
- Como listar as maiores tabelas ou objetos Oracle
Obrigado
Espero que este tutorial possa lhe ajudar a liberar o usuário HR seu ambiente Oracle Database 18c Express Edition (XE) no Windows e por consequência apoiá-lo em seu trabalho ou estudo do banco de dados Oracle.
Se você gostou desta publicação, compartilhe com seus amigos ou nos acompanhe pelas redes sociais.
Você pode nos ajudar a criar mais conteúdos como este. Como ?
Prestigie nossos anunciantes conhecendo seus produtos e serviços.
É simples e rápido e você certamente ajuda a gente a crescer.
Obrigado e um grande abraço
Renato Sanches