Pular para o conteúdo
  • Este tópico contém 2 respostas, 2 vozes e foi atualizado pela última vez 10 anos, 4 meses atrás por Avatar de Tércio CostaTércio Costa.
Visualizando 3 posts - 1 até 3 (de 3 do total)
  • Autor
    Posts
  • #106007
    Avatar de Tércio CostaTércio Costa
    Participante

      Estou com um problema com a minha aplicação java usando o Oracle XE 11g.

      Após um determinado tempo, percebi que está aumentando muito o número de processos no banco de dados e como ele tem um limite a aplicação para de funcionar, somente liberando esses processos se eu fechar o programa. o erro do Oracle é o ORA-12516.

      Já aumentei esses processos para 300, mas quando chega a esse número a aplicação para, sendo necessário fechar. Não sei se estou fazendo correto as minhas conexões, estou usando o Oracle UCP para gerenciar um pool. vou colar aqui a classe:

      package util;

      import java.sql.Connection;
      import java.sql.PreparedStatement;
      import java.sql.ResultSet;
      import java.sql.SQLException;
      import oracle.ucp.jdbc.PoolDataSourceFactory;
      import oracle.ucp.jdbc.PoolDataSource;

      public class PoolConnectionDB {

      private PoolDataSource pds;
      private String ip, usuario, senha;

      public PoolConnectionDB() {
      this.setDados();
      this.configurar();
      }

      //configurações do pool
      public void configurar() {

      try {
      //cria o pool
      pds = PoolDataSourceFactory.getPoolDataSource();

      //propriedades
      pds.setConnectionFactoryClassName(“oracle.jdbc.pool.OracleDataSource”);
      pds.setURL(“jdbc:oracle:thin:@//”+ip+”:1521/XE”);
      pds.setUser(usuario);
      pds.setPassword(senha);

      //quantidade de conexões
      pds.setInitialPoolSize(1);
      pds.setMinPoolSize(1);
      pds.setMaxPoolSize(5);

      //validar a conexão borrowed do pool
      pds.setValidateConnectionOnBorrow(true);
      pds.setSQLForValidateConnection(“SELECT sysdate FROM dual”);

      }
      catch(SQLException e) {
      System.out.println(“Erro ao configurar o pool, mensagem: “+e.getMessage());
      }
      }

      //retorna conexão com o banco
      public Connection getConexao() {
      try {
      return pds.getConnection();
      }
      catch(SQLException e) {
      System.out.println(“Erro ao pegar conexao, mensagem: “);
      e.printStackTrace();
      }
      return null;
      }

      public void liberaRecurso(Connection conn, PreparedStatement ps) {
      try {
      if(conn != null) {
      conn.close();
      conn = null;
      }
      if(ps != null) {
      ps.close();
      ps = null;
      }
      }
      catch(SQLException e) {
      System.out.println(“Erro ao liberar recurso, mensagem: “+e.getMessage());
      }
      }

      public void liberaRecursoFULL(Connection conn, PreparedStatement ps, ResultSet rs) {
      try {
      if(conn != null) {
      conn.close();
      conn = null;
      }
      if(ps != null) {
      ps.close();
      ps = null;
      }
      if(rs != null) {
      rs.close();
      rs = null;
      }
      }
      catch(SQLException e) {
      System.out.println(“Erro ao liberar recurso, mensagem: “+e.getMessage());
      }
      }

      public void setDados() {
      ip = Variaveis.ip;
      usuario = “system”;
      senha = “123456”;
      }

      }
      ao fazer uma query eu sempre coloco no bloco finally para liberar os recursos.

      Qual será o problema?

      #106008
      Avatar de Fábio PradoFábio Prado
      Participante

        @Terciosc, vc sempre fecha conexão após acessar o BD?

        Veja se o link abaixo te ajuda:
        https://forums.oracle.com/thread/362226

        []s

        Fábio Prado
        http://www.fabioprado.net

        #106025
        Avatar de Tércio CostaTércio Costa
        Participante

          sim, estou sempre fechando com o metodo liberarecurso

          e quando faço a query select count(*) from v$session; o número está sempre aumentado!

          e ao fazer um:
          pds.getStatistics().getTotalConnectionsCount()
          está sempre retornando 1!

        Visualizando 3 posts - 1 até 3 (de 3 do total)
        • Você deve fazer login para responder a este tópico.
        plugins premium WordPress