Fórum Duvida na conexão com oracle #401943
29/05/2011
0
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
Curtir tópico
+ 0Posts
29/05/2011
Anthony Accioly
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,
Gostei + 0
29/05/2011
Nilo Souza
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?
Gostei + 0
29/05/2011
Anthony Accioly
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,
Gostei + 0
30/05/2011
Nilo Souza
Gostei + 0
30/05/2011
Nilo Souza
Gostei + 0
30/05/2011
Nilo Souza
Gostei + 0
30/05/2011
Davi Costa
att Davi
Gostei + 0
30/05/2011
Nilo Souza
Gostei + 0
30/05/2011
Anthony Accioly
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
Gostei + 0
30/05/2011
Anthony Accioly
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,
Gostei + 0
30/05/2011
Nilo Souza
Gostei + 0
30/05/2011
Anthony Accioly
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,
Gostei + 0
30/05/2011
Nilo Souza
Gostei + 0
30/05/2011
Anthony Accioly
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,
Gostei + 0
30/05/2011
Nilo Souza
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)