Solucionado (ver solução)
Solucionado
(ver solução)
6
respostas

Aula - Preparando o ambiente

Olá, depois de ter concluído a formação de SQL Server agora estou fazendo esta de Oracle.

Estou achando um pouco esquisito o fato de o Oracle chamar o banco de dados de conexão, pelo menos é o que entendi; por exemplo, até o momento não vi ser executado o comando CREATE DATABASE, e as tabelas já foram criadas!

Agora, na aula Preparando o Ambiente, o professor abre o SQL Plus e começa a popular o banco sem dar um comando USE NOME_DO_BANCO. Ou seja, começo a executar vários scripts, mas sequer tenho um comando para dizer onde o Oracle deverá fazer as alterações. Ele vai sortear uma conexão ou banco de dados e vai começar a executar o script? Não pode ser assim né?!

Esse detalhe é fundamental em outros bancos de dados, mas como isso funciona no Oracle?

6 respostas

Olá Bruno, tudo bem?

Quando realizamos a instalação do Oracle, automaticamente é criado o banco de dados:

criando o banco de dados

E no momento da instalação é definido a senha para os usuários administrados do banco de dados:

criando as senhas para os usuários

Por esse motivo no momento que foi criado a conexão com o banco de dados com o usuário SYSTEM, as tabelas já estavam criadas. Se for criada uma nova conexão com um novo usuário, como o instrutor faz em alguns cursos da formação, não vai existir nenhuma tabela , pois esse usuário não é um administrador do banco dados.

Por exemplo, se você criar duas conexão diferentes mas com o mesmo usuário e senha, você terá acesso as mesmas tabelas nas duas conexões:

Conexão 1:

USUARIO01

Conexão 2: USUARIO 02

Por este motivo quando é utilizado o SQL Plus, e apenas digitando o usuário e senha ele automaticamente identifica qual conexão estamos acessando. Você pode ver mais detalhes de como funciona esse processo no Oracle, acessando a documentação.

Espero ter ajudado, qualquer nova dúvida é só falar :) ! Bons estudos!

Oi Daniele, obrigado pela resposta! Acontece que eu posso usar o usuário SYSTEM em várias conexões, que apontam para diferentes bancos de dados, então como que o SQL Plus vai selecionar a conexão a partir do usuário e senha apenas? Eu deveria em algum momento ter como informar em qual banco, ou conexão desejo executar os scripts, e isso é feito com o comando USE em alguns bancos, quando se trata de terminal principalmente, mas isso não foi necessário no Oracle. Talvez, por só existir o banco criado na instalação, ele deve ter entendido que os scripts seriam executados nele. Eu teria que criar mais um banco pra ver como seria o comportamento...

Sim Bruno, você pode usar o usuário SYSTEM em várias conexões, porém você terá acesso aos mesmos dados em todas elas, o que for feito em uma conexão, você terá acesso na outra, pois é o mesmo usuário e é por esse motivo que o SQL Plus consegue se nortear, pois o acesso é feito pelo usuário e como o usuário é único, se ele tiver várias conexões a informação vai ser acessada em todas elas.

Espero ter ajudado!

Danielle, o cerne da questão é por que o comando USE DATABASE não é necessário no Oracle?

Esse comando existe em outros bancos de mercado, no Oracle não. Por quê?

No Oracle automaticamente é criado um banco de dados quando realizamos a instalação e juntamente é criado os arquivos de configuração onde são armazenados os dados de conexão, como o nome de serviço, e através destes dados os usuários criam as conexões para acessar o banco de dados.

Ao realizar a criação de um novo banco de dados pelo Assistente de Configuração de Bancos de Dados, será criado também um novo SID e um novo nome de Serviço nos arquivos de configuração para que seja realizada a conexão com este banco de dados, e por este motivo o USE DATABASE não é necessário no Oracle, pois o acesso ao banco de dados é feito através de conexões.

Durante a formação Oracle, o instrutor demonstra a criação de um novo banco de dados no Curso de Administração do Oracle Database: Criação e gerenciamento do banco.

Espero ter ajudado e bons estudos!

solução!

Danielle, estou entendendo. O Oracle conceitualmente é muito diferente de outros bancos.

Vou compartilhar um link aqui de uma dúvida parecida com a minha no StackOverflow, e que me ajudou a entender melhor, acho que pode ser útil para outros: https://stackoverflow.com/questions/10461861/use-database-command-on-sql-plus-oracle-11gr1.