Fórum Duvida na conexão com oracle #401943

29/05/2011

0

Colegas,percebi que na minha conexão eu não passei o nome do meu banco de dados "Treinamento", passei XE, e quando mudo para Treinamento da uma mensagem de erro. Abaixo o codigo da conexao.

Caused by: oracle.net.ns.NetException: Listener refused the connection with the following error:ORA-12505, TNS:listener does not currently know of SID given in connect descriptor  at oracle.net.ns.NSProtocol.connect(NSProtocol.java:386) at oracle.jdbc.driver.T4CConnection.connect(T4CConnection.java:1054) at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:308)
[CODE]    public Connection getConnection() {        try {                                            Class.forName("oracle.jdbc.OracleDriver");           Connection cx = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:XE",teste","teste");                                return cx;        } catch (Exception ex) {            Logger.getLogger(GenericaDao_Proc.class.getName()).log(Level.SEVERE, null, ex);            return null;        }    }[/CODE/
Nilo Souza

Nilo Souza

Responder

Posts

29/05/2011

Anthony Accioly

Oi Nilo,

O Oracle adota um padrão um pouco diferente de outros bancos para a questão de databases e schemas. Um database é simplesmente uma coleção de arquivos. O Oracle XE só permite o uso de um database, que, por default, possui o SID XE. Se você quiser mudar o SID, siga essas instruções: http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:963124000346653522. (Não se esqueça de fazer um backup de tudo e tomar cuidado ao executar esses passos, se alguma coisa der errado você corre um sério risco de perder o database inteiro).

Bom, dito isso, é com certeza possível ter vários databases "lógicos" no Oracle XE. O truque aqui é o uso de schemas. Cada usuário possui seu próprio schema. Assim, fazendo uma simplificação burra para fins explicativos, você pode entender que um usuário funciona como um "database" separado.
É claro que é possível dar permissões para outros usuários usarem objetos do seu schema: http://www.oracleoverflow.com/questions/862/grant-access-to-all-objects-in-a-schema-to-another-user-schema, de forma a compartilhar tabelas, stored procedures, etc entre múltiplos usuários, mas acho que isso foge ao escopo da sua pergunta.

Abraços,
Responder

Gostei + 0

29/05/2011

Nilo Souza

Deixa eu ver se eu entendi.Eu alem da minha conexão no sql developer chamada Treinamento, fui e criei outra de teste chamada petshop, mas até ai tudo bem, ele deixou eu criar, mas quando eu for fazer a conexão jdbc por ser XE (free) ele não permitira especificar o banco? E essas instruções que vc me passou é para conseguir fazer isso?
Eu uso o linux qual seria melhor, oracle ou sql server? Alias, acho que não  é possivel instalar o sq server 2008 no linux certo?
Responder

Gostei + 0

29/05/2011

Anthony Accioly

Nilo,

Não. O que eu quis dizer é que uma das limitações do Oracle XE é que você só pode ter um database por instalação, cujo SID inicialmente é XE. Você pode sim fazer quantas conexões simultâneas a instância aguentar. De fato, se você abrir as propriedades da sua nova conexão no SQL Developer verá que sua conexão com o petshop também está apontando para a mesma instância física (cujo SID é XE).

Isso não é uma limitação para conexões JDBC ao Oracle. É uma limitação do banco em si.

As instruções que eu passei foram para explicar que no Oracle usuários usam por padrão schemas separados, de forma que você não precisa realmente de múltiplos SIDs apenas para separar seus objetos (tabelas, procedures, etc), basta criar um usuário novo. Faça um teste: Crie um usuário separado para o petshop. Você verá que as tabelas dele estarão separadas das tabelas que você usa com o usuário teste.


Em relação ao melhor database, isso é muito relativo. Depende de gosto / contrato e necessidade.
O Oracle XE é um excelente SGBD se você puder conviver com as limitações dele: http://download.oracle.com/docs/cd/B25329_01/doc/install.102/b25143/toc.htm#BABIECJA.
Só permite a criação / uso de um database
Máximo de 4 Gb de armazenamentoSó usa um núcleo do processador
Não usa mais do que 1 Gb de RAM
Não recomendo a "instalação" de SQL Server em ambiente linux a não ser que seja extremamente necessário (da última vez que fiz isso foi necessário virtualizar uma instalação do Windows e esbarrei em um monte de problemas).

O principal ponto aqui é: Para que você vai usar a database? Se for para aprender PL/SQL, então fique no Oracle. Se você está tentando aprender sobre triggers e stored procedures em geral, você tem outras excelentes opções Open Source como o MySQL e o PostgreSQL.
Eu sou sempre a favor do "mínimo possível / mais portátil possível". Por essa lógica, se você estiver apenas tentando aprender JDBC eu recomendo fortemente o H2 (um banco de dados de menos de 1 mb, escrito puramente em Java, com suporte a triggers, stored procedures e um monte de outras coisas: http://a.accioly.7rtc.com/2011/03/satisfacao-imediata-com-o-banco-de.html ). Com o H2 você pode simplesmente colocar o jar dentro do seu projeto e carregá-lo onde for necessário (Linux, Windows, OS X... etc), sem necessidade de instalação, configuração, etc. Eu pessoalmente estou com umas 10 "instâncias" do H2 contendo exercícios de meus alunos no Pen Drive hehehe.

Abraços,
Responder

Gostei + 0

30/05/2011

Nilo Souza

Na verdade eu quero comercializar, claro, quero ir aprendendo mas já dentro de um banco que eu vou usar como que "definitivo" a comercialização entende. Gosto do firebird mas a ferramente de desenvolvimento dele "flamerobin" é muito ruim e no netbeans aparecem um monte de tabela de systemas. Gostei do oracle, mas ao mesmo tempo é cheio de coisa tb. Indica algum para desktop e web?
Responder

Gostei + 0

30/05/2011

Nilo Souza

Baixei o banco de dados. Tem alguma ferramenta grafica para ele?Se tiver algum tutorial de como criar a banco e tambem adicionar no classpath do linux te agradeço.
Responder

Gostei + 0

30/05/2011

Nilo Souza

Baixei o banco de dados. Tem alguma ferramenta grafica para ele? Se tiver algum tutorial de como criar a banco e tambem adicionar no classpath do linux te agradeço.
  Outra coisa, tem como instalar esse bando de dados no pendrive
Responder

Gostei + 0

30/05/2011

Davi Costa

Tem como fzer um backup do banco no pendrive, mas instalar o Oracle não.

att Davi
Responder

Gostei + 0

30/05/2011

Nilo Souza

Na verdade estou testando o banco de dados h2 orientado pelo amigo Anthony. Mas uso no pendrive pq a aqui na empresa vou estudando na hora do almoço.
Responder

Gostei + 0

30/05/2011

Anthony Accioly

Se a idéia é usar o banco só para desenvolvimento você pode baixar uma versão mais completa do Oracle sob licença OTN: (http://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html?ssSourceSiteId=ocomen). Mas lembre-se que se você desenvolver para Oracle / SQL Server, estará automaticamente limitando o produto final a clientes que tem ou podem comprar uma licença.
Existem milhares de grandes projetos em produção usando MySQL e PostgreSQL também.

Quanto ao H2: http://a.accioly.7rtc.com/2011/03/satisfacao-imediata-com-o-banco-de.html
Além do ambiente web com code completion você pode conectar o Netbeans ou qualquer outra ferramenta de desenvolvimento a ele via JDBC.

Abraços
Responder

Gostei + 0

30/05/2011

Anthony Accioly

Na verdade estou testando o banco de dados h2 orientado pelo amigo Anthony. Mas uso no pendrive pq a aqui na empresa vou estudando na hora do almoço.


Sim. É só mover o jar do banco e todos os arquivos gerados de cada instância para o pen drive.
Eu geralmente já deixo tudo dentro de um projeto Eclipse / Netbeans usando caminhos relativos para a conexão. Exemplo: jdbc:h2:./DB/MeuBanco/MeuBanco;AUTO_SERVER=TRUE. Assim dá para abrir em qualquer lugar com qualquer OS que roda uma VM. Basta abrir o projeto e mandar bala.

Abraços,
Responder

Gostei + 0

30/05/2011

Nilo Souza

Estive pensando em usar para deskotp o firebird e para web postgres. O que acha?
Responder

Gostei + 0

30/05/2011

Anthony Accioly

Estive pensando em usar para deskotp o firebird e para web postgres. O que acha?


São boas escolhas. Não tenho muita experiência com firebird mas todo mundo que eu conheço de Delphi diz que é o puro creme do milho. Em relação ao PostgreSQL, é um banco de excelência. O resto vai de gosto (pessoalmente, eu gosto mais do MySQL).

Abraços,
Responder

Gostei + 0

30/05/2011

Nilo Souza

Pra fechar. Este banco que me disse h2, é um banco somente para aprendizado ou serve tb para alta produção (comercialização)?
Responder

Gostei + 0

30/05/2011

Anthony Accioly

Pra fechar. Este banco que me disse h2, é um banco somente para aprendizado ou serve tb para alta produção (comercialização)?


Minha opinião sobre o assunto no post que enviei do meu blog hehehe.
Dúvido que a maioria das aplicações esbarrem em limitações técnicas do banco. Porém, se por comercializável você quer dizer, ter alguma empresa que o cliente possa comprar licenças / suporte / processar, então o H2 não é a melhor opção. Se você vai precisar instalar um cluster gigante (a maioria das aplicações não requer algo assim) então o H2 não é uma opção.
Por outro lado, conforme seus estudos forem avançando você vai aprender sobre Hibernate / JPA. Com essas ferramentas migrar de banco / desenvolver uma solução que funcione em todos os bancos "padrão de mercado" não é realmente um problema.
Em projetos pessoais eu várias vezes desenvolvi com H2 migrando para MySQL depois.

Abraços,
Responder

Gostei + 0

30/05/2011

Nilo Souza

Se entendi, vc pode desenvolver em h2 (trigger, procedures) e depois migrar para outro banco? Meu problema é mais a ferramenta de desenvolvimento no linux, estou cada dia mais afastado o windows. Não consegui um tutorial que me ensine as sintaxes de procedure, trigger do h2. Tem algum?
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar