quarta-feira, setembro 21, 2005

PowerBuilder - Visão da Versão 11

No período de 21 a 25 de agosto de 2005, a Sybase apresentou em um congresso nos EUA a previsão de lançamento de produtos para os próximos anos.O que me chamou mais a atenção foi o PowerBuilder 11 e as características que ele terá. Baixo está uma cópia do slide que fala sobre o assunto :

* Early Alpha will start in September.
* Based entirely on .NET 2.0.
* Support Winforms and WebForms.
* Compiles PB code to C#
* Use refactored code from 10.5.
* Import PocketBuilder code line.
* proved Tablet PC support.
* ta Q1 – GA Q3 2006

É interessante chamar a atenção que o PowerBuilder 11 será totalmente DotNet. Quem quiser ver a PPT completa, acesse o site http://files.blog-city.com/files/M05/128508/b/techwave.pps

PowerBuilder - Recuperando a Data e versão de um arquivo

No site do Celso Côrtes tem dois artigos interessantes sobre como recuperar a data e versão de um arquivo.
Entre no site e faça uma pesquisa pela palavra data ou versão.

http://www.celso.cortes.nom.br/
Por : Celso Côrtes

sexta-feira, setembro 16, 2005

DotNet - DataWindow

Recentemente fiz uma avaliação da DataWindow .Net e fiquei muito satisfeito com a ferramenta.

Ela se compõe de dois módulos:

1) Designer
Este modulo é basicamente o PowerBuilder contendo apenas o Painter de DataWindow. Nele, você pode criar qualquer tipo de DataWindow e gravar em uma PBL ou utilizar qualquer datawindow que você possua nos seus sistemas (O impressionante, que funciona com qualquer DataWindow)
2) Viewer
Este modulo é utilizado pelo VisualStudio para exibir a DataWindow. Quando você instala o Software, ele cria uma pasta na barra de ferramentas do VisualStudio. Então, você deve arrastar o objeto para um formulário e utilizá-lo. Muito Fácil.

Bom, deixa-me contar o que achei de mais interessante:
· Utilização de DataWindow na Web : Você pode utilizar qualquer tipo de DataWindow em formulários Windows e Web, para cadastro e consulta. O interessante é que da DataWindow DotNet gera o código em JavaScript, não necessitando utilizar Plugin.
· Programação no DotNet: A Sybase fez um trabalho espetacular, utilizando os nomes das funções já existente no PowerBuilder para se trabalhar em DotNet. Por exemplo, para configurar o objeto transação de uma datawindow, você utiliza a função SetTrans, para buscar valor você utiliza GetItem, para enviar valor você utiliza SetItem. Dessa forma, eles conseguiram que o programador PowerBuilder utilize o VisualStudio sem precisar aprender como programar. Muito Bom.
· Um único fonte: Você pode continuar desenvolvendo a suas DataWindow junto a sua aplicação PowerBuilder e apenas atualizá-las no servidor Web, necessitando de apenas um fonte e manutenção em um ponto único.

O que achei mais interessante, que essa foi a melhor ferramenta que vi para gerar relatórios em Web, mesmo para quem nunca viu PowerBuilder, além de não ter problemas de licenciamento, como ocorre no CrystalReports.

Parabéns a Sybase por essa ferramenta.

PowerBuilder – Soluções que rodam 24 X 7

Em algumas situações, temos que criar aplicações que ficam executando o tempo todo, como monitores de rede, Call Center, Agendas de aplicativos e etc...
Recentemente, eu passei por duas situações (Transferência de arquivos entre sites e Call Center).
Vou pegar como exemplo a primeira aplicação. Deveríamos criar uma aplicação responsável por atualizar os aplicativos que são executados em todas as agências de uma empresa de Energia Elétrica, utilizando a arquitetura cliente/servidor (mais de 70 locais de transferência).
A partir da necessidade e de outras variáveis envolvidas (disponibilidade de Link, distância geográfica entre agencias, disponibilidade de servidores, horário de picos, atualizações urgentes de sistemas, etc...) resolvemos desenvolver um servidor de aplicação que ficariam rodando 24 horas e processando as requisições de cópias feitas pelo usuário.
O sistema foi desenvolvido em PowerBuilder e ficou da forma que desejávamos. Mas, após 24 horas em produção, começamos a deparar com um problema que colocou todo o trabalho de desenvolvimento em questionamento. A aplicação PowerBuilder alocava memória e não liberava a mesma.
Fazendo o monitoramento, percebi que quando instanciávamos os objetos e utilizava DataWindows, os mesmos não liberavam toda a memória alocada. Após 24 horas de processamento, a aplicação travava o servidor por falta de memória.
Após pensarmos em várias soluções e já pensando em outros projetos que teriam o mesmo problema, resolvemos criar um “Gerenciador de Serviços”.
Essa aplicação fica responsável por colocar a aplicação no ar. Após a aplicação no ar, ela faz o processamento necessário e fecha o sistema. Após X tempo que a aplicação fechou (no nosso caso, foi 1 minuto) o gerenciador coloca a aplicação no ar novamente.
Como o gerenciador não utiliza objetos e possui um código muito simples, ele não aloca memória desnecessária e não causa o problema que a aplicação teria.

Essa é uma solução simples, que foi essencial para o sucesso do nosso projeto.

sexta-feira, setembro 09, 2005

Observação sobre o método FIND da DataWindow

Recentemente passei por uma situação que pode afetar outras pessoas, por isso resolvi publicar essa informação.

O método FIND da DataWindow serve para localizarmos uma linha especifica a partir dos valores informados. A sintaxe do comando é

long dwcontrol.Find ( string expression, long start, long end )

Gostaria de chamar a atenção para a posição inicial da pesquisa. Se a posição inicial for maior que a posição final, o PowerBuilder ignora a posição inicial e faz a pesquisa a partir do inicio da datawindow (row = 1). Esta situação pode causar um loop infinito, se o você estiver procurando todas as ocorrências de um valor e existir uma ocorrência no último registro da datawindow.

Por exemplo:

Tenho a seguinte situação que procura a ocorrência de um string em todas as linhas da datawindow:

Do While VLLROW > 0
VLLROW = DW_1.FIND(VLSFIND,VLLROW + 1,DW_1.ROWCOUNT()
LOOP


Se a última linha da datawindow tiver o valor procurado, na próxima volta do LOOP, VLLROW +1 será maior que ROWCOUNT(). Nesta situação, o PowerBuilder irá ignorar VLLROW +1 e começar a pesquisa a partir da Linha 1, entrando em um LOOP infinito.

Para evitarmos essa situação, devemos alterar o código acima para que fique da seguinte forma:
Do While VLLROW > 0
VLLROW = DW_1.FIND(VLSFIND,VLLROW + 1,DW_1.ROWCOUNT()
IF VLLROW = DW_1.ROWCOUNT() THEN EXIT
LOOP



Estas características estão documentadas no HELP do PowerBuilder. Abaixo se encontra um trecho do Help com a informação sobre o procedimento acima

…When the start value becomes greater than end, the search reverses direction and Find would always succeed, resulting in an endless loop….

quinta-feira, setembro 08, 2005

PowerBuilder – Layout Corrompido

A partir da versão 7, o PowerBuilder permite ao desenvolvedor customizar o ambiente de desenvolvimento, podendo alterar o Layout. Com essa evolução, surgiu um novo problema que ocorre quando você não consegue abrir painter (janela de desenvolvimento) especifico (Window, DataWindow, Database, Menu, etc...).

Para resolver este problema, o usuário tem que voltar ao layout original do objeto. Como essa configuração é armazenada no registro, o usuário deve apagar a chave do registro que armazena essa configuração, voltando a configuração original.

A chave do registro que armazena a configuração encontra-se em HKEY_CURRENT_USER\Software\Sybase\PowerBuilder\\Layout

PowerBuilder - Dicas de intergração com o PowerDesigner

Abaixo está um artigo publicado por Ricardo Couto de Souza

Fiz algumas experiências com o objetivo de ganhar produtividade no design de datawindows para sistemas modelados no PowerDesigner e encaminho minhas conclusões para os que se interessarem:

Ao projetar as colunas no PowerDesigner procurem seguir as seguintes orientações:
preencher o campo "Name" com o título que se deseja que apareça na datawindow;
preencher o campo "Code" com o nome da coluna no banco de dados (óbvio);
preencher o campo "Label" com o conteúdo que se deseja que seja a Tag na datawindow;
Após a execução do Script de criação das tabelas no banco de dados executem no menu do PowerDesigner: Client > Generate PowerBuilder Attributes...

Com isso serão populadas as tabelas do PowerBuilder PBCATCOL,PBCATEDT, PBCATFMT, PBCATTBL e PBCATVLD, que assessoram a criação de datawindows com os dados de colunas, edições, formatos de exibição, tabelas e validações, respectivamente.

A coluna PBC_CMNT da PBCATCOL recebe o conteúdo do campo LABEL' do PD e será usada para "Tag" da coluna para qualquer DW´
A coluna PBC_LABL da PBCATCOL recebe o conteúdo do campo 'NAME' do PD acrescido de ":" e será usada para "Título" da coluna para DW´s FreeForma;
A coluna PBC_HDR da PBCATCOL recebe o conteúdo campo 'NAME' e é usada para "Título" da coluna para DW´s Tabulares
Para que os itens 2 e 3 funcionem é preciso garantir que nos Extenderd Attributes da tela de configuração de colunas do PowerDesigner o campo "Label " seja igual a "%ColumnName%:" e Header seja "%ColumnName%".

O objetivo do meu estudo se restringiu a ganhar produtividade na obtenção automática dos Títulos e Tag´s das colunas nas DW, que utilizam colunas da tabela PBCATCOL. Explorando-se um pouco mais podemos ganhar também nas máscaras, edições e validações.

Por Ricardo Couto de Souza

PowerBuilder - Versão 10.5

No site do Celso Cortes tem este artigo com informações sobre o PowerBuilder 10.5

Informática - O que é UNICODE?

Achei este artigo muito interessante no site do Celso Cortes. Vale a pena dar uma lida.

sexta-feira, julho 15, 2005

quinta-feira, julho 14, 2005

PowerBuilder - Empresas que utilizam PowerBuilder no Brasil

1 - Ambev
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

Recentemente, me deparei com um problema no envio de e-mail utilizando o blat. Em algumas máquina o e-mail não era enviado

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

Apesar de muitas pessoas utilizarem DataStore ao invés de cursor, a maioria não sabe quais são as vantagens e em qual situação o Cursor é melhor que a 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

Em alguns casos, você precisa criar um usuário no Oracle que terá acesso limitado as tabelas de um TableSpace (Apenas consulta ou atualização).
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

No link do título deste artigo, você poderá ter acesso a quase todos os scripts necessários a um DBA Oracle, desenvovidos pela própria Oracle, além de programas desenvolvidos em várias linguagens para facilitar a vida do DBA Oracle.
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

Apesar de causar temores a algumas pessoas, inclusive a mim em um primeiro momento, a replicação avançada do Oracle é fácil de ser configurada e funciona perfeitamente.
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.ora ou configuração da instancia do Oracle).
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

Criar um DBLink é um processo simples e muito utilizado hoje em dia. No link que se encontra no título deste artigo, você pode obter todas as informações necessárias sobre 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.ORA ou gerenciamento da instancia) e se essa configuração estiver como TRUE, que era o meu caso, o nome do DBLink deve ser igual ao nome da instancia do Oracle, ou seja, se estou tentando conectar a instancia DB02, o nome do meu DBLink deve ser DB02.
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.