ORACLE - Dúvidas

9 respostas
L

Desenvolvi um sistema em java web utilizando o PostgreSQL…

Estava acostumado com a estrutura do postgresql:

banco_X
----schema_A
--------tabelas
--------views
-------- etc…
----schema_B
--------tabelas
--------views
-------- etc…

Porém, um dos clientes exigiu que o software utilizasse o oracle como sgdb…

Baixei o oracle10g xe, instalei e comecei a “futucar”.

Fiquei bastante confuso… quando se cria um banco ele ja vem cheio de schemas e usuários…

No meu sistema, com postgresql, utilizo varios esquemas… um para cada módulo…
ex: schema contabil, schema fiscal, etc…

Tentei fazer isso no oracle… ao ler um pouco, descobri que o oracle cria um schema para cada usuário.

NÃO POSSO CRIAR SCHEMAS SEM VÍNCULO A USUÁRIOS???

NÃO EXISTE TIPO DE DADOS BOOLEANO???

Ainda não consegui reproduzir a minha estrutura do postgresql no oracle.
Sinceramente, a primeira vista, não gostei nenhum pouco do oracle.

Já trabalhei com MySQL, FireBird, PostgreSQL, HSQLDB e alguns outros…
Todos esses divergem pouco em conceitos…
Porém o Oracle me aparece com algumas diferenças, que para mim, até então, não têm significado algum.

Espero que alguém possa me ajudar a compreender melhor o oracle ou me indicar algum material que me ajude a migrar do postgresql para o oracle.

outra duvida… se eu desenvolver pro oracle xe, terei alguma incompatibilidade para que o soft funcione com a versão paga???

9 Respostas

J

sim, cada esquema está associado a um usuário.

os usuários que ele cria automaticamente, são mais para uso do DBA, são schemas com dados sobre o próprio banco. Muito úteis por sinal, porém é um pouco mais avançado, e acredito que vc não as usará, pois se vc quer reproduzir os seu esquema que pelo que entendi, já utilizou em BD’s como MySQL, que não tem absolutamente nada de informações úteis sobre o BD.

sim, oracle não tem um tipo booleano, pois não tem necessidade, vc pode criar o seu tipo booleano na tabela desta forma:

flag char(1) check ( flag in ('Y', 'N'))

//ou

flag int(1) check ( flag in (1, 0))

vc pode achar um pouco complicado trabalhar com oracle, tendo em vista os BD’s que vc já utilizou, pois oracle é um BD bem robusto, para aplicações de grande porte, e grande processamento de dados dentro do próprio SGBD.

[]'s

davidtiagoconceicao

Que eu saiba, o oracle não trabalha com schemas no mesmo conceito do postgre ou do mysql. Os objetos no oracle são vinculados a um usuário (o chamado owner do objeto). Minha sugestão é que que cada schema do seu sistema seja transformado em um owner no Oracle. Atenção apenas às permissões.

Também não existe tipo de dado booleano, não que eu saiba.

L

Acho que ficaria bem mais prático ter um tipo booleano… afinal, é um tipo primitivo.

L

e como ficaria minha conexão no hibernate…??

pois quando eu estava fazendo alguns testes, quando fui fazer modificações de um schema que não era o relacionado ao usuário que eu estava logado, não tive permissão…

precisaria cricar uma conexão para cada schema??

J

não, vc precisa dar permissao de um usario para outro

procura sobre GRANT, e SYNONYM…
assim vc consegue…

bruno.fantin

Tem um ditado de diz. “Oracle é Oracle, o resto é bando de dados”

A principio Oracle é estranho mesmo, mas se você tiver mente aberta para entender a proposta dele, no final você vai falar. “Porque todos os outros não são igual ao Oracle?”

Realmente não existe um campo boolean, mas eu sempre utilizei um number(1) ou char(1) para isso, sei que não é a mesma coisa, mas no final o resultado é o mesmo.

Sim, schema e usuario é a mesma coisa, e se você quiser um schema teoricamente sem usuario, é só tirar o direito de login dele “revoke connect from usuario;”

E um usuario pode acessar objetos de qualquer schema, desde que ela tenho permissão para isso.

Falou.

L

sim, oracle não tem um tipo booleano, pois não tem necessidade, vc pode criar o seu tipo booleano na tabela desta forma:

view plaincopy to clipboardprint?
flag char(1) check ( flag in (‘Y’, ‘N’))

//ou

flag int(1) check ( flag in (1, 0))
flag char(1) check ( flag in (‘Y’, ‘N’))

//ou

flag int(1) check ( flag in (1, 0))

nao tem como criar um tipo e usá-lo quando precisar de boolean ???

L

e se eu precisar fazer uma consulta,
posso utilizar " where flag " ???

L

Mais uma dúvida:

Não encontrei regras de chave estrangeira para a acao de update.
Ao menos no XE, só tem opções para o delete.
Nas versões pagas também é assim?

Criado 13 de janeiro de 2010
Ultima resposta 26 de jan. de 2010
Respostas 9
Participantes 4