Duvidas sobre FIREBIRD

Fórum sobre Banco de Dados e RDDs para Clipper/[x]Harbour.

Moderador: Moderadores

Avatar do usuário
helio
Usuário Nível 3
Usuário Nível 3
Mensagens: 175
Registrado em: 04 Ago 2004 10:36
Localização: São Bento do Una-PE
Contato:

Duvidas sobre FIREBIRD

Mensagem por helio »

Pessoal gostaria de saber se tem algum comando que possa devolver a quantidade de pessoas que estao acessando o banco FIREBIRD naquele momento.
Uso Xharbour 0.99.7 e o SQLRDD.

Valeu pela Atencao antecipadamente,

Helio Beltrao Jr.
Helio Beltrao Jr.
msn: helio@htisistemas.com
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Re: Duvidas sobre FIREBIRD

Mensagem por sygecom »

Eu estava procurando algo assim ! Até achei que o proprio SQLRDD tinha isso proprio, você consegui resolver ?
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Re: Duvidas sobre FIREBIRD

Mensagem por Maligno »

Que eu saiba, o único jeito é usar a API de serviços do Firebird (isc_database_info). Existe na net função C pra isso. É o caso de baixar e adaptar para o [x]Harbour.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Re: Duvidas sobre FIREBIRD

Mensagem por Maligno »

Aliás, um adendo: me parece que funcionalidade desse tipo estava para ser incluída no projeto para ser acessada via comando SQL. Mas acho que ainda não existe.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Re: Duvidas sobre FIREBIRD

Mensagem por sygecom »

Obrigado Maligno,
Eu consegui resolver, isso já está disponivel na versão 2.1, e como não pretendo usar versão menor que essa, para min ficou perfeito:

Código: Selecionar todos

Function Cont_users
Local aret := {}
Local vCONT:=0

   IF eTIPO_SQL="POSTGRESQL"
      cSQL := "select count(*) from pg_stat_activity"
   ELSEIF eTIPO_SQL="MYSQL"
      cSQL := "SELECT * FROM information_schema.`PROCESSLIST`"
   ELSEIF eTIPO_SQL="FIREBIRD"
      cSQL := "SELECT MON$USER, MON$REMOTE_ADDRESS, MON$REMOTE_PID, MON$TIMESTAMP FROM MON$ATTACHMENTS WHERE MON$ATTACHMENT_ID <> CURRENT_CONNECTION"
   ENDIF
   oSql := SR_GetConnection()
   osql:exec(cSQL ,,.t.,@aret)
   IF eTIPO_SQL="POSTGRESQL"
      vCONT=(aret[1,1]/2)
   ELSEIF eTIPO_SQL="MYSQL"
      vCONT=(len(aret)/2)
   ELSEIF eTIPO_SQL="FIREBIRD"
      vCONT=(len(aret)-1)
      IF vCONT=0
         vCONT=1
      ENDIF
   ENDIF
Return(vCONT)
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Re: Duvidas sobre FIREBIRD

Mensagem por Maligno »

Isso mesmo. Depois que encontrei algo sobre as tabelas virtuais de monitoramento do Firebird. Aliás, uma documentação mais completa:

http://fisheye1.atlassian.com/browse/~r ... ing_tables

Muito embora MON$ATTACHMENTS não tenha nenhum recurso para dizer diretamente quantos ou quais usuários estão conectados à uma determinada tabela. Acho que se deve trabalhar em cima do campo MON$ATTACHMENT_NAME. Rodei uma string no IBExpert e esse campo retornou o nome de caminho completo do banco de dados, o que é compreensível, haja vista que é a única forma de identificar um banco de dados. Se constasse apenas o nome, seria um erro.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Re: Duvidas sobre FIREBIRD

Mensagem por sygecom »

Aproveitando o topico, como você está fazendo a manutenção das base de dados em Firebird, lhe pergunto por que conforme vai sendo usado muito a base de dados vai crescendo e se usar o GBAK para fazer o backup e restore ele diminui significativamente o tamanho da base de dados.
Com isso fiquei com duas duvidas.
1º-Como fazer para saber se a Base de dados pode ser diminuida, se tem como calcular algo via comando SQL da porcentagem que posso diminuir.
2º-Eu fiz o teste usando o GBAK com Backup e Restore para poder diminuir o tamanho alocado pelo Firebird e vi que demorou muito para restaurar a base dados, será que teria alguma outra maneira mais rapida de fazer essa manutenção na base de dados ?

Desde já agradeço qualquer dica.
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Re: Duvidas sobre FIREBIRD

Mensagem por Maligno »

O tamanho do banco de dados dependerá do tamanho da página escolhida no momento da criação. Para uma aplicação que tem muitas inserções, maior a página. Se o banco for mais utilizado para pesquisa, menor. Acontece que a cada inclusão, o servidor mantém essa página mais ou menos do tamanho especificado. Assim, ficam "buracos" no arquivo, o que facilita e acaba aumentando a velocidade de inclusões futuras. O ideal é não esquentar a cabeça com o tamanho do arquivo. Na dúvida, usa-se o tamanho default de 4KB para as páginas.

Quanto ao GBAK, nunca usei porque nunca precisei. Só fiz alguns testes para quando um dia precisar. Não sei dizer se é rápido ou é lento, porque só usei em arquivos pequenos. Aí é rápido mesmo. Mas é preciso tomar cuidado para não ter ninguém "logado" no banco, porque senão pode corromper o arquivo.

Que eu saiba, não há recurso para pesquisar o servidor sobre o tamanho do arquivo. Acredito que não deve ter nada disso. Muito menos por SQL. Talvez por alguma função da API. Mas não sei dizer. O que você pode fazer para diminuir o ritmo de crescimento do arquivo é diminuir o tamanho da página. Mas se for um sistema com muitas conexões concorrentes, pode haver perda de velocidade em inclusões.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Re: Duvidas sobre FIREBIRD

Mensagem por sygecom »

Obrigado pelas dicas.
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Responder