Blog criado para documentar e disseminar o conhecimento tecnológico adquirido por Thiago Campos Pereira e colaboradores.
sexta-feira, julho 15, 2005
DIversos - Informações sobre o Google
quinta-feira, julho 14, 2005
PowerBuilder - Empresas que utilizam PowerBuilder no Brasil
2 - AMIL planos de saúde.
3 - ArtInfo - Sistema de Gestão de Recursos Humanos
4 - Attps informática
5 - Banco ABN-AMRO
6 - Banco BBA
7 - Banco BBM
8 - Banco do Nordeste
9 - Banco Finaustria
10 - Banco SAFRA.
11 - Banco Mercantil
12 - Banco Santander
13 - Banco Tokio-Mitsubishi S.A.
14 - Banco Votorantim
15 - Bank Boston
16 - Basf S.A
17 - BCP
18 - BNP - Banque Nationale de Paris
19 - Bovespa - Bolsa de Valores do Estado de São Paulo
20 - Bozano
21 - Caixa Econômica Federal
22 - Carioca Engenharia ( Christiane Nielsen )
23 - Carrefour
24 - Caterpillar do Brasil
25 - CFLCL - Cia de Força e Luz de Cataguases Leopoldina( Primeira empresa a utilizar o PowerBuilder no Brasil)
26 - Cia de Processamento de dados do RS RGE
27 - CITROSUCO PAULISTA S/A ( Maior exportadora de Suco de Laranja do País )
28 - CODIUB - Companhia de Processamento de dados de Uberaba
29 - Companhia Vale do Rio Doce
30 - Confederação Nacional da Indústria
31 - Consorcio RodoBens
32 - Construtora Norberto Odebrecht
33 - Coperguaçu ( Maior Cooperativa de criação de frangos do país )
34 - Credicard S/A
35 - CST - Companhia Ciderurgica de Tubarão
36 - DBMS COMPSIS
37 - DBMS Tecnologia da Informação
38 - Deten Química
39 - DLC CISS - Automação Comercial
40 - ECAD MasterSaf
41 - EDS - Electronic Data Systems do Brasil ( Banco GM )
42 - EDS - Electronic Data Systems do Brasil ( Cartão de Crédito )
43 - EDS - Electronic Data Systems do Brasil ( GM )
44 - EDS - Electronic Data Systems do Brasil ( Visanet )
45 - Energ Power Ltda - Belo horizonte - MG
46 - Ericsson
47 - Firestone
48 - Fornecedora de internet dedicada Unisinos
49 - Fundação Baiana de Cardiologia
50 - Fundação José Silveira
51 - Golden Cross
52 - GoodLife Belo Horizonte
53 - Grupo Luizeni(Corretora) - Patrocinio/MG
54 - Grupo Martins Atacadista - Uberlandia/MG
55 - HSBC
56 - IBGE - Instituto Brasileiro de Geografia e Estatística - RJ
57 - IBM do Brasil
58 - Laboratório Clínico Delboni Auriemo
59 - Line system - Uberlandia
60 - LOGOCENTER
61 - Nutris Tecnologia E Sistemas De Nutrição Ltda
62 - OAB Minas Gerais
63 - Peixoto Atacadista - Uberlandia
64 - Pirelli Cabos S.A.
65 - Pirelli Pneus S.A.
66 - Porto Seguro – Seguros
67 - PowerLogic
68 - Prefeitura Municipal de Uberaba
69 - Procenge - Companhia de Informática de Pernambuco
70 - Prodaub - Processament de dados de Uberlandia
71 - Prodemge - Cia de Processamento de Dado de Minas Gerais
72 - Racional Engenharia
73 - RBS - Afiliada à rede globo - região sul
74 - Redecard S/A
75 - RK Hotéis e Turismo S/A
76 - Seguros de Saúde
77 - Shell do Brasil
78 - Shop Tour
79 - SICS – HELP Informática
80 - softwarehouse Cumerlato & Schuster
81 - softwarehouse InfoSaude
82 - softwarehouse Van Communications
83 - TecBan
84 - Tecnovia Informática
85 - Telefonica ( GuiaMais )
86 - Telematic - Engenharia e Teleinformática Ltda ( Salvador/BA )
87 - Telepar - Telecomunicações Do Paraná S.A. ( Brasil Telecom )
88 - TotalBanco
89 - TQI - Uberlandia
90 - Trans Cearense - Uberlandia / MG
91 - Transportadora Itapemirim S.A
92 - Trends Advance
93 - Tribanco de Uberlandia
94 - UFMG - Universidade Federal de Minas Gerais
95 - UFRGS - Universidade Federal do Rio Grande do Sul
96 - Uma Das Cias Elétricas Do RS Cigna Seguradora
97 - UNESC - Universidade do Extremo Sul Catarinense
98 - União Atacado ( Uberlandia)
99 - Unibanco
100 - Unitech Tecnologia de Informação
101 - Uniub - Universidade de Uberaba
102 - Universidade do Rio dos Sinos Procergs
103 - Unnisa S/A
104 - Visanet Companhia de Meios de Pagamento S/A
105 - Volkswagen do Brasil S/A
106 - Votorantim Mineração e Metais
107 - Xerox do Brasil
108 - Staff Informática
109 - Banco do Estado do Espírito Santo - BANESTES
110 - Compania Docas do ES - CODESA (Porto de Vitória)
111 - MasterSaf
112 - Viação Águia Branca - Transporte de Passageiros
113 - Pif Paf Alimentos
114 - Petrobras
115 - Matera System
116 - Banco BMG
117 - Ápia Consultoria e Sistemas Ltda
PowerBuilder - Problemas no envio de e-mail com o BLAT
O problema ocorre porque o blat utiliza o serviço SMTP (porta 25) para enviar e-mail e a versão do VirusScam 8.0 bloqueia essa porta.
Quem estiver utilizando essa versão do antivírus, vai ter que seguir os seguintes passos para resolver o problema:
1 - Vá ao Console do VirusScam
2 - Clique com o botão direito em Proteção de Acesso e selecione Propriedades
3 - Desmarque a opção Impedir que worms de envio em massa de e-mail.....
4 - Clique em Ok e feche todas as janelas
Em algumas empresas, essa configuração pode ser feita centralmente, no servidor do antivírus.
sexta-feira, julho 01, 2005
Cursor X DataStore
Para explicar as vantagens, primeiro temos que entender como os dois objetos funcionam.
A maioria dos cursores são composto de 4 comandos:
* Declare : Declara a variável e atribui o comando SQL que será executado, não fazendo acesso ao banco de dados.
* Open : Abre o cursor. Neste momento, é enviando um comando ao SGBD que executa a Query e carrega o resultado na memória do SGBD. Existem vários tipos de cursor e cada um funciona de uma forma, mas geralmente, é criada uma imagem do resultado na memória do SGBD.
* Fetch : Recupera o registro. Neste momento, é feito um acesso ao banco de dados, buscando o próximo registro na tabela temporária.
* Close : Fecha o cursor. Neste momento é feito um acesso ao SGBD para fechar e libera a memória que estava sendo utilizada pela tabela temporária.
Como vocês podem perceber, apenas o comando Declare não faz um acesso ao banco de dados. Como cada acesso ao banco de dados gera 2 tráfegos na rede (O envio do pacote com a solicitação e o recebimento do resultado), além de aumentar muita a utilização do processador do cliente, pois todos os pacotes de rede devem ser tratados (empacotados e desempacotados) pelo processador. A quantidade de acesso ao banco de dados degrada a performance do aplicativo, além de aumentar o trafego da rede, prejudicando a performance de outros aplicativos.
Outro ponto negativo do Cursor é que existem comando que fecham o cursor, por exemplo, na maioria dos SGBDs, se os comandos COMMIT e ROLLBACK forem executados com o cursor aberto, eles automaticamente fecham o curso, podendo gerar erro no aplicativo.
Já a DataStore funciona da seguinte forma:
* Quando você executa RETRIEVE na DataStore, o comando SQL é enviado ao banco de dados, processado e todos os dados são recuperados para a DataStore.
Essa solução possui uma perda de performance no primeiro momento, porque todos os dados são transferidos de uma única vez para o cliente, mas possui uma melhor performance se observarmos o processamento total, pois é feito apenas um acesso a base de dados (dois tráfegos de rede).
Outro problema da DataStore é que todos os dados são retornados para a memória da aplicação cliente, por isso, se a quantidade de dados recuperados for muito grande ou a memória do cliente for pouca, pode forçar a máquina a utilizar memória virtual (Paginação), gerando uma perda de performance no aplicativo e até mesmo cancelamento do processando por falta de memória.
Resumindo, os seguintes fatores influenciam a utilização de Cursor ou DataStore:
- Quantidade de usuários conectados ao SGBD (Quanto maior a quantidade de usuários conectados ao SGBD, maior a tendência de utilizar DataStore)
- Memória disponível no cliente (Quanto maior a quantidade memória, maior a tendência de utilizar datastore)
- Quantidade de Dados Recuperados (Quanto menor o número de colunas recuperado por registro, maior a tendência a utilizar a datastore)
- Qualidade da Rede (Quanto mais rápida a rede, maior a tendência a utilizar Cursor)
- Recursos disponíveis no servidor (Memória e processador) (Quanto maior os recurso disponíveis no servidor, maior a tendência a utilizar Cursor)
Sendo, que os recursos que mais degradam a performance são os seguintes, na ordem listados:
- Quantidade de usuários.
- Utilização de espaço alem do disponível na memória física + memória virtual
- Quantidade de dados trafegados pela rede
- Velocidade do Processador no servidor
- Velocidade do Processador no cliente
- Utilização de memória virtual
Na regra geral, devemos adotar que se o cliente tem memória disponível para executar a datastore, devemos utilizar datastore, ao contrário, utilizamos o Cursor. Mas, podemos analisar outros fatores antes de determinar qual objeto utilizar, podendo adotar até uma solução mista, por exemplo, recuperar blocos de registros utilizando datastore.
quarta-feira, junho 15, 2005
Oracle – Criando usuário com acesso Limitado
Como as tabelas foram criadas por outro usuário, você se vê obrigado a utilizar o owner do usuário nos comandos SQL, por Exemplo:
USER_DBO : Usuário com permissão de criar tabela e owner dos seus objetso
USER : Usuário com acesso de consulta e alteração de dados
CREATE TABLE USER_DBO.TB_TESTE
…….
Quando o usuário USER vai tentar fazer o select ele tem utilizar o commando
SELECT * FROM USER_DBO.TB_TESTE
Necessitando incluir o Owner da tabela antes do nome da tabela.
Para resolver o problema na necessidade do owner, existe duas opção:
1) Criar um sinônimo
Você criar um sinônimo com o usuário USER apontando para a tabela USER_DBO.TB_TESTE.
2) Comando Alter Session
Após conectar com o banco de dados, você executa o comando ALTER SESSION SET CURRENT_SCHEMA = USER_DBO;
BOA SORTE
DotNet Error : Visual Studio .NET cannot create or open the application
Eu reinstalei o meu ISS, lembrando de fazer todos os passos necessários para registrar o Framework, mas quando tento criar ou abrir um projeto AspNet, o VisualStudio me exibe a seguinte mensagem:
Visual Studio .NET cannot create or open the application. The likeliestproblem is that required components are not installed on the local webserver. run visual studio.net setup and add the web development componet.
Este problema ocorre pois o compartilhamento do wwwroot foi perdido. Abaixo está a solução para este problema :
From: Harvey Meeker ”Try to check the sharing of the folder that you are hosting the application in. If it is in the WWWROOT folder then that folder needs to be shared as wwwroot$, at least this is what I've experienced on my own machine. This is basically a problem of the share not being properly configured”
sexta-feira, junho 10, 2005
Dotnet error : 'HTTP/1.1 500 Internal Server Error.'
Estou utilizando o VisualStudio 2003 e Windows XP. Estava tudo funcionando e de uma hora para outra começou a aparecer o erro:
"the Web server reported the following error when attempting to create or open the Web project located at the following URL: 'http://localhost/WebApplicaton1'.'HTTP/1.1 500 Internal Server Error.'"
Este erro já me aconteceu N vezes dentro no meu ambiente de trabalho e depois de muito tempo tentando descobrir o que aconteceu, encontrei que na maioria das vezes ocorre devido a uma atualização do windows (Windows Update) que causou a mudança no Framework/IIS ou mudança da senha do usuário ASPNET e o bloqueio do usuário.
Na maioria das vezes, a solução que se encontra no site http://codebetter.com/blogs/peter.van.ooijen/archive/2004/09/08/24756.aspx resolve o problema. Mas se o problema persiste, outra solução possível encontra-se no link http://weblogs.asp.net/jambrose/archive/2004/09/01/224226.aspx
Boa Sorte.
sexta-feira, maio 27, 2005
Oracle - Exemplos de Scripts
Caso você não encontre o script desejado, existem ainda links para outros sites com mais opções de scripts.
Vale a pena navegar.
Oracle – Replicação Avançada
Primeiro vamos analisar quais são as vantagens dessa replicação:
1) Permite alteração nos dois sites;
2) Se o link ou um dos servidores estiver fora do ar, o trabalho continua, e os servidores serão sincronizados no momento que a conexão for restabelecida.
3) Permite configurar a resolução de conflito, ou seja, se um mesmo dado for alterado nos dois sites ao mesmo tempo, você pode definir uma regra para tratar este caso. Por exemplo, vale o registro que foi alterando por último.
4) A replicação é rápida e leve (não causa grande trafego na rede), pois são replicadas apenas as alterações na base de dados e não a tabela inteira, como outras soluções.
5) O processo não é on-line, evitando travamentos devido a lock. Os dados são alterados em um site e só depois da operação concluída, são replicados para o outro site.
6) O tempo de replicação pode ser configurado com o intervalo desejado, ou seja, a replicação pode ocorrer a cada 1 segundo ou de 4 em 4 horas.
7) Você pode definir quais objetos serão replicados e o intervalo de replicação para cada um.
No link que se encontra no título deste artigo, você pode obter todos os scripts necessários para você trabalhar com a replicação avançada.
Para você que vai trabalhar com a replicação avançada pela primeira vez, sugiro que siga os seguintes passos para os primeiros testes:
1) Instale dois servidores Oracle do zero, lembrando de marcar a opção de Replicação Avançada no momento da criação do banco de dados;
2) A configuração GLOBAL_NAMES deve estar marcada ( Arquivo init
3) Os DBLinks devem ter o mesmo nome da configuração da instancia do Oracle (DBlink tem de ser igual ao Global Names da instancia de destino - execute select global_name from global_name no banco de dados de destino do DBLink )
4) Siga o script corretamente (Já montei duas replicações utilizando o Oracle 8.1.7 e funcionam perfeitamente).
Caso você já possua um servidor e deseje habilitar a replicação avançada, você deve seguir os passos do seguinte link http://www-rohan.sdsu.edu/doc/oracle/server803/A53722_01/ch6.htm#1021276 .
Boa Sorte.
Oracle – Problemas com o DBLink
O meu problema foi que o meu DBLink nunca funcionava. Eu possuía a seguinte configuração
Servidor Origem : DB01
Servidor Destino : DB02
Nome do DBLink : TESTE
O Oracle possui uma configuração GLOBAL_NAMES (Arquivo de INIT
A configuração GLOBAL_NAMES = TRUE é necessária em casos que você precisa utilizar alguns recursos avançados do Oracle, entre eles a Replicação, que é o meu caso.
Caso você não utilize estes recursos, pode configurar o GLOBAL_NAMES = FALSE e utilizar o nome que quiser para o DBLink.
quarta-feira, maio 25, 2005
PowerBuilder - Conectando ao Oracle 10
Veja o Link no Título deste Post para mais informações.
terça-feira, maio 24, 2005
SQL Server - Performance 2005 X 2000
Oracle 8 – Perder a Senha do usuário internal ou sys
1 – Vá ao command, na pasta $ORACLE_HOME/bin
2 – Digite o comando orapwd80 file=
Neste ponto será gerado um arquivo que você utilizará para substituir o arquivo do Oracle que armazena este senha criptografado,
3 – vá ao diretório $ORACLE_HOME/database e mud o nome do arquivo PWD
4 – Mude o nome do arquivo que você gerou no passo 2 para PWD
5 – Utilize o novo senha
Boa Sorte.
sexta-feira, maio 20, 2005
Microsoft Visual Source Safe - Melhorando a Performance
Ao instalar o VSS 6, não é feito upgrade da base de dados, o que pode gerar uma perda de performance na utilização do VSS. Para obter uma melhor performance, siga os passos abaixo:
1) Verifique se a sua base já está atualizada. Para isso, verifique se existe a pasta ...\VSS\data\labels . Caso exista, não é necessário seguir este procedimento, pois a sua base já se encontra atualizada
2) Certifique-se que nenhum usuário está utilizando o VSS
3) Faça um backup do VSS
4) Execute o comando “DDUPD \\server\share\vss\data”
Boa sorte.
quinta-feira, maio 19, 2005
Oracle - Respostas para as dúvidas sobre Replicação
PowerBuilder – Implementando Single-Threaded Apartments
Primeiro deixa-me explicar o que é isso? Single-threaded Apartments é o processo de simular MultiThread, ou seja, N processos executarem ao mesmo tempo dentro da mesma aplicação, por exemplo, hoje quando você executa um comando SQL ou uma Procedure a aplicação fica travada até o momento em que a aplicação retorna o resultado do comando SQL. Com MultiThread, a aplicação não fica travada, permitindo você executar N consultas\procedures ao mesmo tempo, trabalhando em paralelo.
A diferença o MultiThread verdadeiro para o Single-threaded apartments é que o primeiro permite utilizar N processadores (Varias threads), pois utiliza área de memória diferente e o segundo utiliza apenas um processador (Uma thread), pois compartilha área de memória.
O processo de implementação do Single-threaded apartments é simples é funciona bem. Na verdade você tem que ter um objeto que é Thread, um para gerenciar o processo e outro para fazer a comunicação entre os dois.Para os interessados no código para essa implementação, me envie um comentário com o e-mail que eu repasso um pequeno exemplo dessa implementação.
SQL Server - Problemas na replicação com troca de nome do servidor.
SQL Server Enterprise Manager could not configure '
Geralmente, este erro ocorre porque o servidor SQL Server foi Renomeado ou foi montado a partir da imagem de outro servidor.Para resolver o problema, clique no Link deste artigo que irá direcioná-lo para a página da Microsoft com a solução para o mesmo.
quarta-feira, maio 18, 2005
PowerBuilder - Pesquisa 2005
http://www.visual-expert.net/survey/survey.php?TEMPL=survey_pb_2005_us.htm
Esta pesquisa é anual, se quiser ver o resultado da pesquisa no ano passado, verifique o link abaixo.
http://www.visual-expert.com/us/info/survey_pb_2004_results.htm.
terça-feira, maio 10, 2005
PowerBuilder – Trace de Banco de Dados
Com o resultado do trace gerado, você pode descobrir um erro que está ocorrendo na base de dados ou melhorar a performance de uma rotina, através dos tempos retornados pelo Trace.
Para habilitar o Trace, você deve incluir a palavra TRACE antes do DBMS na conexão com o banco de dados, por exemplo:
// Profile DBTeste
SQLCA.DBMS = "TRACE O84 Oracle8/8i (8.x.4+)"
SQLCA.LogPass = <*********>
SQLCA.ServerName = "DB_DES"
SQLCA.LogId = "teste"
SQLCA.AutoCommit = False
SQLCA.DBParm = "CommitOnDisconnect='No',DelimitIdentifier='No',PBCatalogOwner='teste'"
Uma dica é adaptar a aplicação de forma que o trace possa ser habilitado através de uma chave do registry, assim você pode habilitar o Trace em qualquer momento, diretamente no executável.
Para analise de performance, desenvolvi um aplicativo que lê o trace e retorna os comandos que gastaram mais tempo. Quem tiver interesse neste aplicativo, envie um e-mail para tpereira@rtconsult.com.br, para que eu possa enviar o aplicativo.
sexta-feira, abril 29, 2005
PowerBuilder - Criação de DataWindow/DataStore Dynamica
string VLSerror_syntaxfromSQL, VLSerror_create, VLSnew_syntax, VLSMsgErr, VLSDescricao, VLSLinha Long VLLRow, VLLCodigo, VLLRet, vltotitens
// botão p/ seleção de ocorrências if dwo.name = 'b_ocorr' then lb_ocorr.Visible = True // sql p exibição das ocorrências no listbox VISnew_sql = 'select distinct mi.num_seq_ocorr_prioritaria codigo, oc.dsc_res_ocorr descricao ' + & 'from movto_inspecao mi, ocorrencia oc ' + & 'where mi.num_seq_ocorr_prioritaria = oc.num_seq_ocorr ' + & 'and mi.num_seq_ocorr_prioritaria is not null ' + & 'and mi.cod_proj = ' + String(VILProjOrig) end if
// botão p/ seleção de impedimentosif dwo.name = 'b_imped' then lb_imped.Visible = True // sql p exibição das impedimentos no listbox VISnew_sql = 'select distinct mi.cod_imp_insp codigo, im.dsc_imp_insp descricao ' + & 'from movto_inspecao mi, impedimento_inspecao im ' + & 'where mi.cod_imp_insp = im.cod_imp_insp ' + & 'and mi.cod_imp_insp is not null ' + & 'and mi.cod_proj = ' + String(VILProjOrig)
end if
// Monta dinamicamente o objeto datastore contendo as ocorrências ou impedimentos p/ seleçãoVLSnew_syntax = wtr_trans.SyntaxFromSQL(VISnew_sql, "", VLSerror_syntaxfromSQL)if Len(VLSerror_syntaxfromSQL) > 0 then VLSMsgErr = 'Erro: '+ VLSerror_syntaxfromSQL f_msg(VLSMsgErr, stopsign!) return 1else VLLRet = VIDSSelecao.Create(VLSnew_syntax, VLSerror_create) if Len(VLSerror_create) > 0 or VLLRet <> 1 THEN VLSMsgErr = 'Erro: '+ VLSerror_create f_msg(VLSMsgErr, stopsign!) return 1 end ifend if
VIDSSelecao.SetTransObject(wtr_trans)VIDSSelecao.Retrieve()