Please be aware that the content in SAP SQL Anywhere Forum will be migrated to the SAP Community in August and this forum will be retired.

Hi All,

I am using an Oracle 12C as my consolidated DB and SQLAnywhere 16 as my remote db for syncing some of the data through Mobilink 1. Once the data is synced, I am using the same remote SQLAnywhere16 db as a consolidated DB and I am creating a UDB through Mobilink 2. The architecture is as follows :

Oracle Staging Area (Materialized Views, Stored Procedures, Tables) <-> Mobilink1 <-> SQLAnywhere16 DB <-> Mobilink2 <-> UDB

I am able to do the sync between Oracle and Sybase but when I am trying to create an UDB, I am getting only a partial success. The errors are as follows :

  1. SqlAnywhere DB is frequrently crashing whenever there is a data transfer from Oracle to SQLAnywhere.

  2. The Last Modified and Deleted Column which are being created by Mobilink1 are not getting stored in Oracle. If it gets stored, then it is showing "column already exists" error whenever I do further deployment. This error is coming if I don't do any data changed and deploy also. So, I am writting an Oracle procedure to alter the Oracle tables and drop their columns every time. Is there a neat solution for this ?

  3. The Last Modified and Deleted flag of Remote SqlAnywhere DB is not updated to Oracle and because of this I always gets a synchronization failure stating that "expecting X columns but found Y columns" in all of my tables. Is there a way to fix this issue too ?

Is there a easier / neat way to do the sync rather than this double mobilink solution ?

Please Help.

Software version Used :

Oracle : 12C SqlAnywhere : 16.0.0 Mobilink : 16.0.0 Ultralite DB : 16.0.0 OS : RedHat Linux 6.5 Oracle and SQLAnywhere are running on different machines. SQLAnywhere and Mobilink are running on same machine. Apache relay is not yet configured. All these are running in an intranet.

Regards, BDK.

asked 26 Jun '14, 13:05

bdk's gravatar image

accept rate: 0%


What build of SQL Anywhere 16.0.0 are you using? You should be using

What are the exact error messages you are getting?

What is the reason you are using three-tier synchronization, rather that directly synchronizing between Oracle and UltraLite with one MobiLink server in between?

People sometimes use a SQL Anywhere database to help them generate an UltraLite database, but they usually do that only in development, not production. Actual three-tier synchronization (with two MobiLink servers and a SQL Anywhere database in between) is possible, BUT it is very rare and it can be quite complex.

What is your level of expertise with MobiLink? Is this your first project?

(26 Jun '14, 14:31) Breck Carter

Hi Carter,

Thanks for your response :)

We are using SQL Anywhere

The Error Messages are : 1. "Expecting 15 columns and found 17". 2. Network service process gets killed.

We are using 3 tier architecture for the following reasons : 1. We have 3500 remote Users who are doing sync from their UDB. 2. Every UDB will be getting an average data of 100 MB to it. 3. This solution is implemented in a low network area where network will be disconnected from the Hand Held device now and then. 4. Mobilink starts processing the respective users data once it gets request from a particular user. Suddenly the network of the device went down. Mobilink will not come back to user until it completes the data processing. If all the users try to sync at same time, Mobilink and Oracle DB will have a high load which can make the server to go down. Since Oracle DB is speaking with many other Legecy servers along with SQLAnywhere DB, this will be a potential threat for us in terms of DB crash.

We are working on the UDB <-> Mobilink <-> Oracle also but the above problem can happen. This architecture we have as a back up plan.

I am working on Mobilink, UDB, Apache Relay and SQLAnywhere for the past two years and this is my fourth project on the line with all these tools.

The 3 tier architecture what we are using now is a new architecture for us which we are working for the first time.

I had used UDB <-> Mobilink <-> Oracle in my previous project.

I had used UDB <-> Mobilink <-> SQLAnywhere <-> Webservices <-> oracle in two of our projects.

Regards, BDK.

(27 Jun '14, 04:06) bdk
Replies hidden

What is the 100MB figure? The average size of the UDB database? The size of an average download? The size of an initial download? The size of an average download plus upload?

The important numbers are, the size of the average download, and the size of the average upload.

(27 Jun '14, 08:49) Breck Carter

> Mobilink and Oracle DB will have a high load which can make the server to go down.

Please show us the exact error messages or symptoms when this happens.

(27 Jun '14, 08:50) Breck Carter is very old and suffers from the Heartbleed flaw. Build 1915 is recommended.

The error message "Expecting 15 columns and found 17" signifies a flaw in the MobiLink setup, not a bug in SQL Anywhere or the MobiLink server... but if you are trying to use the Sybase Central MobiLink wizard to generate your scripts the problem may originate there (the wizard has many limitations, especially when life gets "interesting" as it does with three-tier synchronizing.)

High load should not cause a database server to crash. 3500 remote users is not (by itself) a reason to introduce three-tier synchronization... it may be a reason to build a MobiLink server farm, and enforcing limits on the number of simultaneous syncs (which mlsrv16 does quite well).

A three-tier setup is generally used when there is a need for a group of remote databases to pass data between themselves via a local consolidated database, when the local network is not connected to the top-level Oracle database... as in a team of workers in a remote location who are out of touch with head office but need to communicate with one another.

If all the data uploaded from the remotes must eventually be sent to Oracle, and all the data downloaded to the remotes originally comes from Oracle, I don't see how a three-tier architecture is going to solve performance and reliability problems. If the middle layer filters or hides or summarizes data, sure, but not if all the data is passed through.

A three-tier setup WILL introduce several new points of possible failure, as well as making development and administration harder.

permanent link

answered 27 Jun '14, 08:39

Breck%20Carter's gravatar image

Breck Carter
accept rate: 20%

...and having said all that :)

Please show us the mlsrv16 -o output containing the error message "Expecting 15 columns and found 17". The mlsrv16 -vcefhkmnopstuU option is highly recommended (as opposed to -v+ which is useful when one is truly desperate).

Show us more rather than less... nine times out of ten, folks trim too much out of the mlsrv16 -o output when posting it :)

(27 Jun '14, 08:44) Breck Carter

Hi Carter,

We are going with the simple architecture as per your suggestion and as per our suggestion and as follows :

UDB <-> Mobilink <-> Oracle SA(Staging Area) <-> Oracle

Now, we are able to get rid of all these issues :)

Thanks for your support :)

Regards, BDK.

(01 Jul '14, 08:49) bdk
Your answer
toggle preview

Follow this question

By Email:

Once you sign in you will be able to subscribe for any updates here



Answers and Comments

Markdown Basics

  • *italic* or _italic_
  • **bold** or __bold__
  • link:[text]( "title")
  • image?![alt text](/path/img.jpg "title")
  • numbered list: 1. Foo 2. Bar
  • to add a line break simply add two spaces to where you would like the new line to be.
  • basic HTML tags are also supported

Question tags:


question asked: 26 Jun '14, 13:05

question was seen: 3,033 times

last updated: 01 Jul '14, 08:56