Licensing Questions

Q1. I need to try IBReplicator, but a license is required .. where I can I get the evaluation license?

A. When you install the Replication Manager on Windows, a readme.txt is created in the IBReplication Manager directory, this readme.txt includes the instructions for installing an Evaluation License:

INSTALLATION OF EVALUATION LICENSE

After creation of the Configuration Database, license keys need to be installed before the software will work.

EVALUATION LICENSE:

  • Run the Replication Manager and connect to your configuration database.
  • Select the Menu Item TOOLS|LICENSE MANAGER
  • Enter 'EVAL' as a license key. This will generate a 14 day license

Q2. I have IBReplicator 2.x Server Lite installed on my laptop. My bi-directional replication worked fine when I had Firebird 1.5. Now that I have Firebird 2 I get a replication error:

Licensing Error: Replication Lite may not Replicate between two remote databases

But only the remote server is remote. On my laptop, the connection is local.

A. The Lite license is not about what protocol is used, but about usage. It was a reduced-price option in versions 2.x, specifically for single-user usage. On a Firebird 2 server, the new XNET local protocol implementation enables the licensing code to detect when Replicator is connecting to a full Firebird server. That usage is correctly denied, as a violation of the Lite licensing terms. It allows connection to an Embedded server only.

If you were using the Lite licence previously with a full server and you need to retain that capability, you should contact IBPhoenix to obtain a fresh key to upgrade to a full server licence. Lite licences are not offered for IBPReplicator 3.

Configuration/Setup

Q3. I am setting up bi-way replication and it seems to keep bouncing transactions back and forth.

A. Make sure that in each TARGET db of your schema you set the username as "REPL". Also, have a REPL user created in Firebird/Interbase on both systems.

The replication will only happen one way with this configuration. For example, you have one schema defined using IB Repl Manager as 'local2remote' and the TARGET db defined in this schema is our remote DB. In the target schema settings we have "REPL" as the username with the password as defined on the remote DB. Another schema defined as 'remote2local'. We do the same as mentioned above but in this case the TARGET is our local DB. The target here also has "REPL" for the username. The order in which these schemata are created is the order they will fire for replication. The local2remote schema is defined first and that is why the local to remote changes get sent first.


Q4. Error message: Cound not create objects in database "source". Both primary key and data columns must be defined for all tables involved before system objects can be created.

A. To replicate a table, it must have both primary keys and data fields.


Q5. I have set up timestamp-based replication and I am always gettting update conflict messages even if the timestamp field in the target database has an earlier value than in the source database.

A. You must include the timestamp field in the list of replicated fields.


Q6. How does time stamped conflict resolution work?

A. When time stamped based conflict resolution is activated, UPDATE queries have an additional condition: '... AND TimeField <= ?'. i.e. it can update only records with lesser values. If, as result, no records are updated, an INSERT is tried. If it fails also, ReplServer concludes that the record exists with a newer timestamp and stops trying to UPDATE/INSERT for that record.


Q7. How do I set up scheduled replications via IBReplicator with the Replicator Server and Scheduler running as services?

A. Before anything else, make sure you have your valid licenses installed. Expired EVAL licenses cause all sorts of problems. Then...

  • Make sure Firebird or InterBase is running and is also installed as a service - startup - automatic.

  • Install the Replication Scheduler - startup is automatic dependent on InterBase/Firebird Service.

  • Start the service. Make sure it is running.

  • You should see the following information in the log file when the scheduler is enabled:

    Scheduler Log File - Created 11/6/2003 11:00:14
    Connected to C:\\ReplTest\\CONFIG.GDB
    
  • Configure a schedule using the Replication Manager.

    1. Using Tools -> Scheduler add an hourly, 5 minutes schedule.
    2. Enable the log file.
    3. Start the scheduler.
  • Your Replicate.log should start showing valid replications based on the interval you have defined in the scheduler.

Environment (Programs, Network, Services)

Q8. I have Firebird/InterBase and the Replicator Server installed as services that automatically start when my XP system starts. However on startup I get the following system error, "IBReplication Service has encountered a problem and needs to close".

A. This problem is caused because there is currently no service dependency defined between InterBase/Firebird and the Replication Server in Services. So when the Replication Server tries to start, it can't read the configuration database, because InterBase/Firebird hasn't properly started yet.

To correct this problem...

Run IBReplicator Configure Services, remove Replication Server, Click Dependent on InterBase/Firebird Server and then install.


Q9. How can I stop and start replication directly from my application?

A. To stop and start the replication server from an application all you need to do is talk to the stored procedure called repl$notify in the configuration database:

CREATE PROCEDURE REPL$NOTIFY
(THETYPE INTEGER)
AS
DECLARE VARIABLE EVENT VARCHAR(20);
BEGIN
  IF (THETYPE = 1) THEN
    POST_EVENT 'RELOAD';
  ELSE IF (THETYPE = 2) THEN
    POST_EVENT 'REPLNOW';
  ELSE IF (THETYPE = 4) THEN
    POST_EVENT 'EXITNOW';
  ELSE IF (THETYPE = 7) THEN
    POST_EVENT 'REPLSTATS';
END

Sample Delphi code:

Procedure ReplicateNow;
Begin
  MyDatabase.StartTransaction;
  with TStoredProc.Create(Self) do
  Begin
    DatabaseName := 'SomeDB';
    StoredProcName := 'repl$notify';
    Prepare;
    Params[0].AsInteger := 2;
    ExecProc;
    Free;
  End;
  MyDatabase.Commit;
End;

Or:

ISQL> EXECUTE PROCEDURE REPL$NOTIFY (2);

Q10. Error connecting to RAS server (date & time) ErrorCode=623, ErrMessage=The system could not find the phone book entry for this connection.

A. Make sure you have RAS configured with the correct 'name' you are using from the Windows 2000 dialup connections in IBReplManager. Go to the DATABASES tab and configure RAS for the database if it is not configured already. The error message looks like the wrong dialup connection data in the configuration (Note it is case sensitive.) Also, set 'keep connection' to FALSE on RAS to make it work properly.


Q11. I'm in the process of replicating to companies, linked by a VPN, both servers behide a firewall. Which port/s do I need to open?

A. Port 3050.


Q12. One of our remote sites replicates to the hub across a dial-up connection. It seems that the main server freezes up completely for the main application users while the replication is going on. Is this normal?

A. It is normal if the client applications are using transaction settings that conflict with those of the Replicator's transaction. Replication uses Concurrency (Snapshot Repeatable Read) isolation with NO WAIT lock resolution. Unfortunately, a lot of user applications, especially those written in Delphi or .NET environments, use transaction defaults that are guaranteed to cause blocking situations on a WAN. For example, the default settings of the Firebird/InterBase .NET Provider are Read-Write, Wait, Read Committed, No Record Version, about the worst possible settings you could have for a networked application.

Utilities

Q13. Is there a method for copying the contents of one database's tables to another?

A. There is: In Replication Manager: Replication -> Default Settings -> General - Synchronization. Allows you to synchronize two databases by emptying a target and filling it with data retrieved from a source database or vice-versa if reverse synchronization is selected. Use synchronization to populate a new empty target database, or one which has been restored from backup.

  • If you need to synchronize databases ensure that the Enabled check box is checked.
  • If a target database has been off-line there is no need to use synchronization as the Replicator will catch up with the outstanding backlog of changes.