Create Vs Convert to Runtime Data Dictionary – when and why?


So being into BaaN, we all must have faced the option of create to run-time or convert to run-time option for tables/domains at least once. Often I have observed people badly stuck in dilemma while it comes to choose the best option between these two.

Today our discussion will try to answer following questions:-

1.Most important. most basic but often ignored question:- why it is required at all?

2.When to choose convert over create run-time and vice-versa?

3. How to troubleshoot issues/errors faced during CRDD (Create/Convert to Run-time Data Dictionary)?

Obviously I’ll be explaining in my own way and will be eagerly expecting suggestions/feedback from your side.

So here we go …….

1. Why it is required at all?

Create/Convert run-time both create/modify the application data into run-time data..okk this is a bit bookish explanation.

In simple term, you create a table via maintain table session, the metadata only gets created at application level.It is of no use until it get’s converted into run-time which the application refers at run-time. So run-time actually brings the application data at file-level in the Operating System under the path ${BSE}/dict  or ${BSE}/../dict [ this one is the traditional path used in BaaN IV, but there is no restriction about where the path should be].

Tables and Domains’s run-time data gets created/converted in the same path.

Once the run-time data is ready it is then ready to get created in the database. Database definition of the table must be always in sync with RTDD( run-time data dictionary) of table, otherwise there is a problem in accessing the table. Error 512 will come up.

2. When to choose convert over create run-time and vice-versa?

Well the answer is pretty simple.

When you create a table / domain for the very first time ( i.e they were not present in application as well as database ) go for create run-time option.

When the table/domain is already existing there is change in that particular table/domain definition go for convert to run-time option.

So what really convert-to run-time does? Is there any extra layer of complexity involved?

Yes, there is a point to worry about….Consider following cases:-

a. suppose your table definition contains 5 fields. There are 1000 rows in the table.

You delete 2 fields. Now after CRDD  the database definition of the table must get synced with RTDD; that implies that in database too, there will be only 3 fields.

So what about those 2 fields and there existing value in the table?

b. Your table definition contains 5 fields again and it is having 1000 rows.

This time you add 2 more fields in the table. What value are you expecting for those 2 fields for each of 1000 rows present , after proper CRDD?

These 2 cases has been taken into account in the underlying functionality of Convert to run-time data dictionary.

Here is how it works,

1. just before starting convert, BaaN takes dump/backup of existing data.

2. It drops the table and drops thr table definition.

3. It creates the table definition as per new definition mentioned in application.

4. It creates the table at database side( it is clear that database definition also gets created as per new definition from RTDD)

5. Then it checks the column/field  mismatch between newly created table in DB and the backup taken in step 1.

6. In case of point a. explained above, it simply discards those two fields and pump data back into table for rest 3 fields.

    In case of  point b. , it checks the domain/data type for those 2 newly added fields and sets there value as per their default value; i.e if the new 2 fields are integer default value will be 0(numeric ZERO) , if they are string default value will be ” “(Blank/Space but not NULL).Again the default value depends on the domain type and the default value set for that domain.

3. How to troubleshoot issues/errors faced during CRDD (Create/Convert to Run-time Data Dictionary)?

Mostly you’ll the error you’ll face during CRDD is : “serious error in bdbreconfig”

This means that not all domain/table could be converted into run-time.

There might be many reason.Some of the most common reasons are:-

1. Your are converting your table without converting the domain linked to the table field.

2.”.new” file generated during reconfig and it could not be removed.

3. Permission problem in the directory path where your RTDD will get stored.

Solution of the problem will depend on the situation, discussing solution of every possible solutions will be a bit lengthy here…instead I’ll give you standard process checklist following which you’ll over come the problem most of the time :

1. before starting CRDD process take seq dump of table and keep it safe with you.

2. make sure domain is always converted/created before you convert table.after converting/creating domain independently logout-login to refresh bshell cache.

3. check access permission of the directory path i.e. ${BSE}/dict/{package_combination}

4. During CRDD if  “.new” file is generated then do the following:-

a. remove the .new file, remove the .old file, rename the existing table-def file .eg:- if during CRDD of tdsls401 .new file is generated then you can see 3 files , tdsls401.old, tdsls401 and tdsls401.new.Remove .old and .new and rename tdsls401 as say tdsls401.fullonbaan.

b. delete entries of this particular table from following table via ttaad4100 (GTM):

ttadv500 – Conversion indicators
ttadv501 – Reconfiguration indicators
ttadv502 – Conversion parameters table def. / domains
ttadv503 – Reconfiguring Restart Data
ttadv504 – Reconfiguring Restart Data II
ttadv505 – Logged changes

c. logout and login. then run CREATE RUNTIME and not convert….

In most of the cases this will help you out.

Obviously there are some cases where you have to go to DB and drop the table and recreate it. At that point of time the seq dump you have taken will come into picture.Obviously you cannot upload it directly then as table definition has changed. So you have to delete/add columns from sew dump manually in order to align the data with current table definition and then upload it.

 

So, you see it’s all pretty simple…try it yourself and let me know what all new things you explore!!

Waiting to hear from you guys soon!!

 

Advertisements