FAQ For IBReplicator
|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.
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.
|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...
|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.AsInteger := 2; ExecProc; Free; End; MyDatabase.Commit; End;
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.
|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.