Duvidas sobre FIREBIRD
Moderador: Moderadores
- helio
- 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
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.
Uso Xharbour 0.99.7 e o SQLRDD.
Valeu pela Atencao antecipadamente,
Helio Beltrao Jr.
Helio Beltrao Jr.
msn: helio@htisistemas.com
msn: helio@htisistemas.com
- sygecom
- Administrador

- Mensagens: 7131
- Registrado em: 21 Jul 2006 10:12
- Localização: Alvorada-RS
- Contato:
Re: Duvidas sobre FIREBIRD
Eu estava procurando algo assim ! Até achei que o proprio SQLRDD tinha isso proprio, você consegui resolver ?
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
xHarbour.org + Hwgui + PostgreSql
Re: Duvidas sobre FIREBIRD
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!
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!
Re: Duvidas sobre FIREBIRD
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!
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!
- sygecom
- Administrador

- Mensagens: 7131
- Registrado em: 21 Jul 2006 10:12
- Localização: Alvorada-RS
- Contato:
Re: Duvidas sobre FIREBIRD
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:
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
xHarbour.org + Hwgui + PostgreSql
Re: Duvidas sobre FIREBIRD
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.
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!
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!
- sygecom
- Administrador

- Mensagens: 7131
- Registrado em: 21 Jul 2006 10:12
- Localização: Alvorada-RS
- Contato:
Re: Duvidas sobre FIREBIRD
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.
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
xHarbour.org + Hwgui + PostgreSql
Re: Duvidas sobre FIREBIRD
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.
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!
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!
