Se você já instalou o Oracle 12c na seu desktop e decidiu liberar o Schema HR para estudar um pouco mais sobre Oracle, porém se você está acostumado com as outras versões do Oracle, como a 11g ou a 10g, tento apenas desbloquear o usuário pelo SQL*PLUS acabou não conseguindo e não sabe o motivo para isso acontecer.
Isso acontece porque a arquitetura do Oracle Database foi muito modificada no 12c. E foi uma mudança em tanto. Agora a Oracle trabalha com CBD – Containers Database e você deve estar se perguntando …
O que vamos falar nesse artigo!
O que são Containers Databases!
Esta é a nova arquitetura do Oracle Database onde é possível otimizar muito o espaço de um servidor. Isso porque o Oracle passou a distinguir as informações entre o Banco de Dados e as aplicações, através do dicionário de dados, e com isso criar um “Container” de um banco de dados e plugar esse container para ativar ele. Dessa forma você consegue otimizar o seu espaço usando apenas uma estrutura de dicionário de dados otimizando assim os seus recursos de infra-estrutura de um servidor e utilização de recursos.
Como liberar o Schema HR no Oracle 12c
Bom agora que você já teve uma explicação macro do que são os containers no 12c vamos a tão esperada liberação do HR no Oracle 12c.
Passo 01: Descobrir o nome do banco de dados e o serviço que você está conectado
Para fazer isso você precisa estar conectado ao banco de dados com o usuário sys ou system como sysdba. Este passo é muito simples só seguir o descritivo abaixo:
- Abrir a linha de comando do windows, CMD
- digitar sqlplus
- digite o usuário: sys as sysdba
- digite a sua senha
Após fazer estes passos se você instalou corretamente o Oracle 12c você vai ter conectado ao banco de dados e a partir daí será necessário fazer o comando SHOW con_name, descrito abaixo para mostrar o container em que o seu banco de dados está conectado.
SHOW con_name;
Este último passo é necessário porque no 12c você não específica nenhum serviço, container ou banco de dados ligado (Plugado), então o Oracle por padrão nos conecta no CBD$ROOT. Com o comando acima você consegue verificar o nome da sua conexão. Agora para verificar os banco de dados disponíveis você precisa consultar view v$pbds, conforme na consulta abaixo.
SELECT name, con_id FROM v$pdbs;
Nessa consulta vamos mostrar todos os nomes e Containers_IDs dos PDBs (PDB – Pluged Data Base), com isso conseguimos associar facilmente os containers_id dos banco de dados plugados.
Nessa consulta retornaram 2 Banco de dados:
- PDB$SEED: Esse é o PDB padrão do Oracle, o id dele é 2. Ele é usado como template para PDBs pelo sistema. Ele sempre tem o nome de PDB$SEED (Semente de Banco de dados plugados, vamos plantar pessoal 🙂 ).
- PDBORCL: Esse é o banco de dados que foi criado na instalação do Oracle 12c, se você deixou o nome padrão o ORCL na instalação este será o nome do seu banco de dados.
Para descobrir o nome do serviço, você precisa acessar a view $active_services. Eu descobri fazendo esta matéria que este nome pode mudar, mas não falaram para qual, então fique tranquilo se você seguiu o padrão este será o nome.
Agora vamos fazer uma consulta que retorne o nome do serviço do container PDBORCL (con_id = 3).
SELECT name FROM v$active_services WHERE con_id = 3;
Na maioria dos casos o serviço é criado com o mesmo nome do bando de dados e comigo não foi diferente e acredite com você também não vai ser, por isso o nome do serviço é PDBBORCL.
Esses dados (Nome do serviço e do Banco de Dados)serão usados para alterar o arquivo de TNS. Nós usamos este banco de dados para liberar o schema HR porque por padrão o Banco de Dados criado na instalação já vem com o schema HR dentro dele.
Atualizando o Arquivo de TNS no 12c
Para continuar com a liberação do Schema HR é necessário alterar o arquivo tnsname.ora. Isso é necessário para fazer com o nosso listener possa achar o nosso serviço e fazer a devida conexão com o nosso banco de dados. Como nas versões anteriores este arquivo está localizado no diretório ORACLE HOME\NETWORK\ADMIN.
Se os seus parâmetros forem iguais aos apresentados nesse post, então você deverá incluir o seguinte código no seu TNS.
PDBORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = pdborcl)
)
)
Após isso o seu arquivo vai ficar semelhante ao da imagem abaixo.
Alterando o container de CBD$ROOT para PDBORCL
Para fazer isso é necessário você se logar com o usuário sys como sysdba, seguindo os passos abaixo:
- Abrir a linha de comando do windows, CMD
- digitar sqlplus
- digite o usuário: sys as sysdba
- digite a sua senha
Depois de logar você precisa alterar a sua sessão, conforme código abaixo:
ALTER SESSION SET CONTAINER = pdborcl;
Para verificar se a alteração foi feita com sucesso você pode verificar o container que está conectado na sessão atual.
SHOW con_name;
Liberar o PDB PDBORCL com o comando OPEN
O mais legal desse tutorial para mim é que estou aprendendo vários comandos novos que não existiam antes do 12c e um desses comandos é o OPEN. Com ele você consegue liberar o seu PDB para uso.
Mas antes de liberar você pode verificar se o seu PDB já está liberado pelo comando
SELECT name, open_mode FROM v$pdbs;
Se ele estiver no modo MOUNTED, então você deve executar o comando abaixo para liberar o PDB.
ALTER PLUGGABLE DATABASE open;
Liberando o Schema HR
Após todas essas alterações chegou finalmente a hora de liberar o schema HR dentro do nosso PDB. Agora você já pode executar o comando que já é conhecido em outras versões do Oracle o ALTER USER para desbloquear o usuário HR.
ALTER USER hr IDENTIFIED BY hr ACCOUNT unlock;
Acessando o Schema HR
No Oracle 12c você consegue definir o serviço ao qual você vai se conectar com o caracter @ 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 @pdborcl;
Erros Comuns que podem acontecer
Caso 01: ORA- 12154: TNS: could not resolve the connect identifier specified.
Se este erro acontecer foi porque o arquivo TNS foi configurado errado ou ele não existe. Lembre-se este arquivo tem estar dentro do seguinte caminho –> HOME\NETWORK\ADMIN .Se o arquivo não existir nessa pasta, dentro dela vai existir uma pasta chama SAMPLE que tem um modelo de arquivo tnsname.ora, então altere ele e copie e cole e deixe na pasta ADMIN.
ORA- 01033: ORACLE initialization or shutdown in progress.
Esse erro acontece quando o banco de dados não está aberto, isso pode ser causado por falta de atenção. Para resolver esse problema você deve executar o comando abaixo.
ALTER PLUGGABLE DATABASE open;
Conclusão
O Oracle 12c já é uma realidade no mercado e se a sua empresa ainda não migrou vai migrar em breve, com ele vem muito inovação em sua arquitetura e o seu trabalho vai mudar de certa forma. Por isso você como um profissional que se mantém atualizado deve estar preparado para as novidades e a instalação do 12c e liberação do usuário HR para estudos é o primeiro passo.
Eu sinceramente espero que este artigo tenha ajudado você a descobrir como liberar o schema HR no Oracle 12c e se ele ajudou deixe um comentário abaixo, só com a frase me ajudou, só para eu saber se eu realmente te ajudei.
Link permanente
Obrigado!
Link permanente
Muito bom artigo!!!
Com ele consegui liberar o schema HR.
Só uma dúvida, eu consigo usar esse schema no SQL Developer?
Quando tento conectar ele da erro: ORA-01017: invalid username/password.
Link permanente
Consegui usar o schema no SQL Developer..
Eu alterei o tipo de conexão de “básico” para “TNS”..
Link permanente
Oi Breno,
Perfeito 🙂
Link permanente
Professor você e demais, sou seu fá.
Link permanente
Me ajudou muito, pronto para seguir com o curso de DBA Junior.
Link permanente
Oi Rafael,
Ficamos muito feliz mesmo com o seu comentário!
abs
William Miranda
Link permanente
Ajudo
Obrigado
Link permanente
Oi Jeferson,
Ficamos muito felizes em ter te ajudado, espero que você aprenda muito mais com nosso portal.
abs
William Miranda
Link permanente
Bom Dia
Seu tutorial me ajudou muito a iniciar o estudo, mais ao reiniciar meu servidor não consegui conectar a instancia pdborcl, então depois de muita pesquisa descobri que temos que salvar a estado da instancia;
Please check the following and let me know
SQL> alter pluggable database save state;
Link permanente
Oi Henrique, tudo bem?
Fico muito feliz com o seu comentário e que ajudamos você a iniciar os seus estudos.
Como eles estão agora?
abs
William Miranda