Big things afoot at Sybase, Inc.


It’s coming…

48 hours from now something big is coming!

Share Button

It’s here! The very first issue of MyDatabases!

MyDatabases Volume 1 Issue 1 (July 2008)

MyDatabases Volume 1 Issue 1

Geek Spotlight:  Michael Peppler
Sybase ASE on Ubuntu 8.04
Multicore Processors
VMware Virtualization
Logical Process Manager

Share Button

Making headway on the Sybase::TdsServer and Sybase::RepAgent perl modules

Remember my Sybase Replication Server: custom built RepAgents with Perl! post back last year? Well, not only am I the new maintainer, but I finally have it working in a test environment. It isn’t ready for a new release for Sybase::TdsServer and Sybase::RepAgent, yet, but expect one soon.

My main development environment for these two modules is:

  • Windows XP SP2
  • ActiveState Perl 5.8.8
  • Sybase Workspace 1.7 (Eclipse based)
    1. EPIC Perl plugin
    2. Subclipse (subversion client)

I’m hoping to get out my first CPAN release to the perl testers within the next month or so. Why the delay? My wife and I are expecting family and friends to stay with us for the next few weeks. That’s a very good thing 🙂

Share Button

How to Resync a replicated database using Sybase ASE and Replication Server

This is just one way to resync the replicated database in Sybase
Continue reading “How to Resync a replicated database using Sybase ASE and Replication Server”

Share Button

Sybase Replication Server: custom built RepAgents with Perl!

Data is entered into the primary database and the replication server were send it to all of the replicate databases.  The process that gathers the data (encapsulated in transactions) and sends it to the Replication Server is called a RepAgent (Replication Agent).

Bernd Dulfer a few years ago wrote the perl module Sybase::RepAgent in order to replicate data from arbitrary DBMS’s.  For example, if your legacy application is built on dBase III+, you could with little effort make a RepAgent to send any changes to the dBase files to Replication Server and then off to some other DBMS that you will eventually migrate to.

In the Sybase::RepAgent Cookbook, Bernd Dulfer describes the setup of a simple RepAgent in order to replicate from a Postgres database to a Sybase ASE database.
Even though Sybase::RepAgent uses Sybase’s Openclient, the parser and SQL converter is written in Perl, we can not expect it to keep up with a high load of transactions.  Rewriting the parser and converter in C or some other compiled language may provide a sufficient boost in performance allowing it to be used in high load situations.
I have not been able to contact Bernd Dulfer so the Sybase::RepAgent module may indeed be abandoned.  I’ve contacted the CPAN admins regarding this.
Share Button

Sybase TechWave 2006: Replication Server

I’m in Las Vegas, Nevada for the annual Sybase TechWave Conference at Caesar’s Palace.  The main entertainment will be a private showing of Penn & Teller.  Woohoo!

This year, I’m primarily focusing on Replication Server.  Increasing the performance is of keen interest to me as well as increasing stability of the replication.  There are a number of outstanding issues with Replication Server that I’m hoping to address.  The main one is an issue with firewalls.

This is the environment (very common in large corporations with segmented networks):

ASE (repAgent) tcp/ip connection <-> firewall <-> tcp/ip connection (repagent descriptor) RepServer -> ….

After a period of inactivity on the tcp/ip connection is closed by the firewall

ASE (repAgent) tcp/ip connection <X> firewall X> tcp/ip connection <X> (repagent descriptor) RepServer -> ….

The tcp/ip connection is closed, which will notify both the operating systems containing the primary ASE and replication server.

On the primary Sybase ASE side:

  • os notifies ASE of the disconnected connection. this is mostncommonly reported as a 1608 error (client connection expectedly disappeared).
  • RepAgent is notified within ASE and attempts to reconnect

On the Replication server side:

  • os notifies RepServer of the disconnected connection
  • RepServer either doesn’t handle the message from the os or doesn’t release the repagent descriptor correctly.

When the RepAgent attempts to connect to the Replication Server:

  • RepAgent connection is denied due to Replication Server says that the RepAgent is in the process of disconnecting. So it *appears* to be handling the message from the os but not completely freeing the repagent descriptor for some reason.

This can be easily reproduced with the help of someone that can set up a firewall that will close connections due to both inactivity and maximum time allowed.

Using a heartbeat of say 30secs does reduce the occurances of this issue but there are mandated, from the security group, maximum times that *any* connection can be open regardless of activity. This partial workaround is already in place. Another partial workaround is to have repagent itself disconnect after 20 secs of inactivity but we still run into the maximum connection time limit.

As it is, I’m forced to restart the repserver every 18 to 24 hours. Regardless of how the connection is closed, repserver should release the repagent descriptor fully so that a reconnect from the repagent will go through.

Share Button