Operating System Specific Tips

In This Chapter
Microsoft Windows
Linux
Solaris
AIX
HP-UX

Microsoft Windows

In This Section
Installation Error Due to XML Encoding
Windows Vista Network AutoTuning Parameters
Configuring 32-bit ODBC Drivers on 64-bit Windows Versions
Connecting to Microsoft 64-bit SQL Server 2005 using a 32 bit ODBC driver
Slow Windows Network Traffic

Installation Error Due to XML Encoding

While installing FairCom DB on Windows, the installation program may report display an alert reporting an "Unspecified XML file encoding." This error may occur while the installer is configuring XML files. It is the result of the encoding used in your system's .NET machine.config file.

The first line of the machine.config file indicates the encoding. An example of UTF-8 is shown below:

<?xml version="1.0" encoding="UTF-8"?>

The FairCom installer supports the following encodings:

  • UTF-8
  • UTF-16
  • ASCII
  • ISO-8859-1 (Latin-1)

If you are using an encoding other than those listed above, you will need to use a .zip file for installation. The .zip file is available from FairCom.

Windows Vista Network AutoTuning Parameters

The symptoms exist due to the new re-written TCP stack in Windows Vista that aims to take full advantage of hardware advances such as gigabit networking. Among the new feature in Windows Vista TCP/IP is Receive Window Auto-Tuning for TCP connections. TCP AutoTuning enables TCP window scaling by default and automatically tunes the TCP receive window size for each individual connection based on the bandwidth delay product (BDP) and the rate at which the application reads data from the connection, and no longer need to manually change TcpWindowSize registry key value which applies to all connection. Theoretically, with TCP auto-tuning, network connection throughput in Windows Vista should be improved for best performance and efficiency, without any registry tweaks. However, this is not always the case, and may cause some Internet related issues and problems.

A workaround to the above problem is to disable the TCP/IP AutoTuning in Windows Vista. Disabling auto tuning of TCP Windows Size should not cause any negative effects, only that the TCP Window Size will always be the default value without ability for optimization to each connection.

A microsoft TechNet article describing the feature is here:

Microsoft TechNet - Vista Network Performance Improvements

Disable AutoTuning

  1. Open an Elevated Command Prompt (see below)
  2. Enter the following command to disable auto-tuning

Microsoft Windows

In This Section
Installation Error Due to XML Encoding
Windows Vista Network AutoTuning Parameters
Configuring 32-bit ODBC Drivers on 64-bit Windows Versions
Connecting to Microsoft 64-bit SQL Server 2005 using a 32 bit ODBC driver
Slow Windows Network Traffic

Installation Error Due to XML Encoding

While installing FairCom DB on Windows, the installation program may report display an alert reporting an "Unspecified XML file encoding." This error may occur while the installer is configuring XML files. It is the result of the encoding used in your system's .NET machine.config file.

The first line of the machine.config file indicates the encoding. An example of UTF-8 is shown below:

netsh interface tcp set global autotuninglevel=disabled

Enable AutoTuning

If you find disabling auto-tuning doesn’t fix your problem, re-enable it as follows:

  1. Open an Elevated Command Prompt
  2. Enter the following command to enable auto-tuning
netsh interface tcp set global autotuninglevel=normal

AutoTuningStatus

To view the state of your current TCP parameters, use this command:

netsh interface tcp show global

Elevated Command Prompt

  1. Click on the Start button.
  2. In the search box, type in “cmd” or “Command Prompt” - Do not press Enter.
  3. cmd.exe or Command Prompt will show in the search results (depending on what you searched for).
  4. Right click cmd.exe (or Command Prompt) in the search results and select “Run as Administrator”.
  5. Enter the administrator credentials when prompted.

Configuring 32-bit ODBC Drivers on 64-bit Windows Versions

With 64-bit versions of Windows, the previous 32-bit ODBC Driver Manager is now located in a different location, and is not used by default. To configure a 32-bit driver on these systems, use the following steps:

  • Execute: %WINDIR%\syswow64\odbcad32.exe
  • Create a DSN using the 32-bit version of the Administrator

See Also

Connecting to Microsoft 64-bit SQL Server 2005 using a 32 bit ODBC driver

  • First configure your 32-bit driver as described in this article:

Configuring 32-bit ODBC Drivers on 64-bit Windows Versions

  • Using the SQL Server Import and Export Wizard, you will get a pop-up screen that is asking for a Data Source.
  • You will not see the 32-bit DSN in the drop down menu. Select ".Net Framework Data Provider for ODBC". On most systems it's probably the top one in the list, however, you need to scroll up to see it as the list usually displays in the middle.
  • Enter further connection information on the resulting dialog screens.
  • Under NamedConnection String there is a field for "dsn". In this field put the name of the DSN created in Step 1.
  • Click on Next and follow the rest of the instructions to copy the desired data.

Slow Windows Network Traffic

Communication with a server on a local network can be substantially slower than expected when newer Windows computers (Windows Vista and later) attempt to access older Windows computers. Although the communication works eventually, you may experience slow response times.

The problem may be due changes in the was the system handles Link Local Multicast Name Resolution (LLMNR) protocol. LLMNR is based on the Domain Name System (DNS) protocol. It provides name resolution for addresses on the same local network without the need for a DNS server.

The multicast used by LLMNR is not supported by all systems. If your network contains a mix of old and new systems, some systems may be attempting to use a protocol that others do not support. After a timeout, the computer will use other means to perform the operation, so the process works...slowly.

Solutions:

  1. Disable LLMNR on the newer computers.
  2. Avoid a DNS lookup be doing either of the following:
    • Specify an IP address in the connection string instead of a domain name.
    • Edit the hosts file on the newer machine to include the name and IP address of the older machine.
  3. And, of course, if you can replace the older computers you will eliminate this problem and possibly improve performance in other areas at the same time.

To turn off LLMNR on a server:

  1. From the Windows Start menu, type GPEdit.msc in the search box and press Enter. The Local Group Policy Editor will appear:
  • Using the Console Tree on the left, navigate to:
    Local Computer Policy > Computer Configuration > Administrative Templates > Network > DNS Client
  • In the DNS Client folder, double-click Turn off Multicast Name Resolution and set State to Enabled.

Linux

In This Section
CPUs Report Different Times on Linux, Causing Unexpectedly Long sleep() Times
Compiling FairCom DB SQL PHP on Linux/Unix
Memory Use of Linux Processes

CPUs Report Different Times on Linux, Causing Unexpectedly Long sleep() Times

On a multi-core system running CentOS Linux, calls to sleep() were observed to take an unexpectedly long time. It is believed the system time reported by the CPUs varies, as was confirmed by this experiment:

The Linux taskset utility can be used to run a process on specified CPUs. The date on each CPU differed:

taskset -c 0 date
taskset -c 1 date
taskset -c 2 date
taskset -c 3 date
Mon Aug  8 11:20:04 CDT 2011
Mon Aug  8 11:20:19 CDT 2011
Mon Aug  8 11:20:16 CDT 2011
Mon Aug  8 11:20:20 CDT 2011

The Hyper-V VM was used in this case and it was found that adding the following boot options resolved the problem, as described here:

http://hardanswers.net/correct-clock-drift-in-centos-hyper-v

divider=10 clocksource=acpi_pm (for 32bit kernel)

Compiling FairCom DB SQL PHP on Linux/Unix

FairCom DB SQL PHP is provided as a ready to go driver for currently available versions of PHP. However, PHP regularly advances, and new versions out pace current support quickly. In that case, you usually have to rebuild the PHP driver to match the specific version of PHP in your environment.

Usually, you can simply execute our provided build script from the /src directory of your FairCom DB SQL PHP driver installation:

> phpize
> ./configure --make-ctsql
> make
> make install

However, you may find that the configure scripts don't always match the current autotools version of your Linux flavor. In that case, you need to regenerate the ./configure script. Consider the following sequence. Actual steps may differ slightly depending on your autotools version and Linux flavor. Check with the autotools documentation for details.

> phpize
> libtoolize
> aclocal
> autoreconf -i
> ./configure --make-ctsql
> make
> make install (optional)

The driver will be in the newly created /modules folder. You are free to copy this to an appropriate library location in your environment.

Note: You may need elevated privileges to install this into /lib or other system locations.

 

Memory Use of Linux Processes

When examining memory use for a Linux process, there are utilities available in addition to top. A recommended utility found useful in determining actual memory usage is pmap.

pmap -x <ctree_pid>

Here's top output for a ctreesql process:

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
 1493 fctech    17   0  515m 227m 4836 S  0.0 11.3   0:00.28 ctreesql

Here's pmap output for this process. In this case, the VIRT and RES values shown by top are close to the Kbytes and RSS values from pmap. The "[ anon ]" mappings are likely to be the most common ones. FairCom DB allocations from the heap will show up as that type.

1493:   ./ctreesql

Address           Kbytes     RSS   Dirty Mode   Mapping

0000000000400000       4       4       0 r-x--  ctreesql

0000000000600000       4       4       4 rw---  ctreesql

000000000b8ec000  238152  220112  220112 rw---    [ anon ]

0000003403e00000     112     100       0 r-x--  ld-2.5.so

000000340401c000       4       4       4 r----  ld-2.5.so

000000340401d000       4       4       4 rw---  ld-2.5.so

0000003404200000    1340     500       0 r-x--  libc-2.5.so

000000340434f000    2048       0       0 -----  libc-2.5.so

000000340454f000      16      16       8 r----  libc-2.5.so

0000003404553000       4       4       4 rw---  libc-2.5.so

0000003404554000      20      20      20 rw---    [ anon ]

0000003404600000       8       8       0 r-x--  libdl-2.5.so

0000003404602000    2048       0       0 -----  libdl-2.5.so

0000003404802000       4       4       4 r----  libdl-2.5.so

0000003404803000       4       4       4 rw---  libdl-2.5.so

0000003404a00000     520      64       0 r-x--  libm-2.5.so

0000003404a82000    2044       0       0 -----  libm-2.5.so

0000003404c81000       4       4       4 r----  libm-2.5.so

0000003404c82000       4       4       4 rw---  libm-2.5.so

0000003404e00000      88      80       0 r-x--  libpthread-2.5.so

0000003404e16000    2048       0       0 -----  libpthread-2.5.so

0000003405016000       4       4       4 r----  libpthread-2.5.so

0000003405017000       4       4       4 rw---  libpthread-2.5.so

0000003405018000      16       4       4 rw---    [ anon ]

0000003405200000      28      16       0 r-x--  librt-2.5.so

0000003405207000    2048       0       0 -----  librt-2.5.so

0000003405407000       4       4       4 r----  librt-2.5.so

0000003405408000       4       4       4 rw---  librt-2.5.so

0000003405600000      80      12       0 r-x--  libz.so.1.2.3

0000003405614000    2044       0       0 -----  libz.so.1.2.3

0000003405813000       4       4       4 rw---  libz.so.1.2.3

0000003405a00000      84      44       0 r-x--  libselinux.so.1

0000003405a15000    2048       0       0 -----  libselinux.so.1

0000003405c15000       8       8       8 rw---  libselinux.so.1

0000003405c17000       4       4       4 rw---    [ anon ]

0000003405e00000     236      20       0 r-x--  libsepol.so.1

0000003405e3b000    2048       0       0 -----  libsepol.so.1

000000340603b000       4       4       4 rw---  libsepol.so.1

000000340603c000      40       0       0 rw---    [ anon ]

0000003406e00000     628      68       0 r-x--  libglib-2.0.so.0.1200.3

0000003406e9d000    2044       0       0 -----  libglib-2.0.so.0.1200.3

000000340709c000       8       8       8 rw---  libglib-2.0.so.0.1200.3

0000003407200000      84      24       0 r-x--  libnsl-2.5.so

0000003407215000    2044       0       0 -----  libnsl-2.5.so

0000003407414000       4       4       4 r----  libnsl-2.5.so

0000003407415000       4       4       4 rw---  libnsl-2.5.so

0000003407416000       8       0       0 rw---    [ anon ]

0000003408200000       8       8       0 r-x--  libcom_err.so.2.1

0000003408202000    2044       0       0 -----  libcom_err.so.2.1

0000003408401000       4       4       4 rw---  libcom_err.so.2.1

0000003408600000      68      20       0 r-x--  libresolv-2.5.so

0000003408611000    2048       0       0 -----  libresolv-2.5.so

0000003408811000       4       4       4 r----  libresolv-2.5.so

0000003408812000       4       4       4 rw---  libresolv-2.5.so

0000003408813000       8       0       0 rw---    [ anon ]

0000003408a00000     580      88       0 r-x--  libkrb5.so.3.3

0000003408a91000    2048       0       0 -----  libkrb5.so.3.3

0000003408c91000      16      16      12 rw---  libkrb5.so.3.3

0000003408e00000       8       4       0 r-x--  libkeyutils-1.2.so

0000003408e02000    2044       0       0 -----  libkeyutils-1.2.so

0000003409001000       4       4       4 rw---  libkeyutils-1.2.so

0000003409600000      32      16       0 r-x--  libkrb5support.so.0.1

0000003409608000    2044       0       0 -----  libkrb5support.so.0.1

0000003409807000       4       4       4 rw---  libkrb5support.so.0.1

0000003409a00000     176      40       0 r-x--  libgssapi_krb5.so.2.2

0000003409a2c000    2048       0       0 -----  libgssapi_krb5.so.2.2

0000003409c2c000       8       8       8 rw---  libgssapi_krb5.so.2.2

0000003409e00000     144      28       0 r-x--  libk5crypto.so.3.1

0000003409e24000    2044       0       0 -----  libk5crypto.so.3.1

000000340a023000       8       8       8 rw---  libk5crypto.so.3.1

0000003412000000      52      36       0 r-x--  libgcc_s-4.1.2-20080825.so.1

000000341200d000    2048       0       0 -----  libgcc_s-4.1.2-20080825.so.1

000000341220d000       4       4       4 rw---  libgcc_s-4.1.2-20080825.so.1

0000003416c00000     920     412       0 r-x--  libstdc++.so.6.0.8

0000003416ce6000    2044       0       0 -----  libstdc++.so.6.0.8

0000003416ee5000      24      24      20 r----  libstdc++.so.6.0.8

0000003416eeb000      12      12      12 rw---  libstdc++.so.6.0.8

0000003416eee000      72       8       8 rw---    [ anon ]

0000003417000000     312      44       0 r-x--  libncurses.so.5.5

000000341704e000    2048       0       0 -----  libncurses.so.5.5

000000341724e000      56      12       8 rw---  libncurses.so.5.5

000000341725c000       4       0       0 rw---    [ anon ]

000000394a800000    1204     232       0 r-x--  libcrypto.so.0.9.8e

000000394a92d000    2044       0       0 -----  libcrypto.so.0.9.8e

000000394ab2c000     132      16       8 rw---  libcrypto.so.0.9.8e

000000394ab4d000      16       8       8 rw---    [ anon ]

000000394ac00000     288      52       0 r-x--  libssl.so.0.9.8e

000000394ac48000    2048       0       0 -----  libssl.so.0.9.8e

000000394ae48000      24      12      12 rw---  libssl.so.0.9.8e

00002ab7f38ed000       8       8       8 rw---    [ anon ]

00002ab7f38ef000   11532    2836       0 r-x--  libctreedbs.so

00002ab7f4432000    2048       0       0 -----  libctreedbs.so

00002ab7f4632000     404     328     324 rw---  libctreedbs.so

00002ab7f4697000   56368     660     652 rw---    [ anon ]

00002ab7f7dba000    5188      44      40 rw---    [ anon ]

00002ab7f82ec000    8244    6188    6188 rw---    [ anon ]

00002ab7f8b10000      40      24       0 r-x--  libnss_files-2.5.so

00002ab7f8b1a000    2044       0       0 -----  libnss_files-2.5.so

00002ab7f8d19000       4       4       4 r----  libnss_files-2.5.so

00002ab7f8d1a000       4       4       4 rw---  libnss_files-2.5.so

00002ab7f8d1b000       4       0       0 -----    [ anon ]

00002ab7f8d1c000    1536      12      12 rw---    [ anon ]

00002ab7f8e9c000       4       0       0 -----    [ anon ]

00002ab7f8e9d000    1536       8       8 rw---    [ anon ]

00002ab7f901d000       4       0       0 -----    [ anon ]

00002ab7f901e000    1536      12      12 rw---    [ anon ]

00002ab7f919e000       4       0       0 -----    [ anon ]

00002ab7f919f000    1536       8       8 rw---    [ anon ]

00002ab7fc000000     832     688     688 rw---    [ anon ]

00002ab7fc0d0000   64704       0       0 -----    [ anon ]

00002ab800000000     144      16      16 rw---    [ anon ]

00002ab800024000   65392       0       0 -----    [ anon ]

00002ab804000000       4       0       0 -----    [ anon ]

00002ab804001000    1536      12      12 rw---    [ anon ]

00002ab804181000       4       0       0 -----    [ anon ]

00002ab804182000    1536      12      12 rw---    [ anon ]

00002ab804302000       4       0       0 -----    [ anon ]

00002ab804303000    1536      16      16 rw---    [ anon ]

00002ab804483000       4       0       0 -----    [ anon ]

00002ab804484000    1536      16      16 rw---    [ anon ]

00002ab804604000       4       0       0 -----    [ anon ]

00002ab804605000    1536      16      16 rw---    [ anon ]

00002ab804785000       4       0       0 -----    [ anon ]

00002ab804786000    1536      16      16 rw---    [ anon ]

00002ab804906000       4       0       0 -----    [ anon ]

00002ab804907000    1536      20      20 rw---    [ anon ]

00002ab804a87000       4       4       4 rw-s-    [ shmid=0x3d9f0008 ]

00002ab804a88000       4       0       0 -----    [ anon ]

00002ab804a89000    1536       8       8 rw---    [ anon ]

00002ab804c09000       4       0       0 -----    [ anon ]

00002ab804c0a000    1536       8       8 rw---    [ anon ]

00002ab804d8a000       4       4       4 rw-s-    [ shmid=0x3d9f8009 ]

00007ffff783e000      84      44      44 rw---    [ stack ]

00007ffff79fd000      12       4       0 r-x--    [ anon ]

ffffffffff600000    8192       0       0 -----    [ anon ]

----------------  ------  ------  ------

total kB          536032  233324  228496

Solaris

In This Section
Heap Debugging on Solaris 9+ Operating Systems

Heap Debugging on Solaris 9+ Operating Systems

You can enable heap debugging for the FairCom DB process by setting these environment variables before startup.

export LD_PRELOAD=libumem.so.1
export UMEM_DEBUG=default
export UMEM_LOGGING=transaction 

This is a low overhead malloc() debugging method, suitable for a production environment experiencing possible heap corruption. With the above options, it will check some guard zones for memory overwrites on alloc/free.

It also has many commands when a core generated with libumem is used with the mdb debugger.

::umem_status and ::umem_verify are useful, and the complete list of dcmds can be found in mdb by executing:

> ::dmods -l libumem.so.1

man umem_debug has more details.

watchmalloc is another malloc debugging library on Solaris that detects memory overwrites more reliably, however, runs very slowly and is not useful in a production environment.

AIX

In This Section
IBM AIX Multicore/CPU Performance Tuning Options
IBM AIX 32-bit FairCom Servers Require EXTSHM ON for Correct Shared Memory Usage
IBM AIX Large Page Support
IBM AIX Mutex Performance Tuning Options
Activation Failures (Error 26) on AIX 6

IBM AIX Multicore/CPU Performance Tuning Options

Doubling FairCom DB workload on an IBM AIX system has been observed to more than double CPU utilization or generate very high CPU utilization. An AIX environment variable can be changed and the server restarted to compare performance.

The following environment variable is used:

AIXTHREAD_SCOPE=S

IBM AIX 32-bit FairCom Servers Require EXTSHM ON for Correct Shared Memory Usage

We found that 32-bit c-treeSQL Server on AIX requires EXTSHM ON to be set in the environment before it is started, otherwise attaching to a shared memory region may fail with a "too many files" error (EMFILE, system error code 24). With FairCom Servers V12 and later a message is also logged for 32-bit AIX environments with this tip included. The following message is now logged to CTSTATUS.FCS when this error occurs:

Wed Oct 21 08:21:05 2020
User# 00024 FSHAREMM: at_SessionReallocCommBuffer: shmat for comm mem resize
failed: 24 Verify that EXTSHM ON is set in the environment before starting the  process.

IBM AIX Large Page Support

When running a 64-bit FairCom DB Server on AIX, it was suspected memory pages were being "stolen" by another process or the file system cache. The key diagnostic indicator in this case was to monitor RSS memory of the FairCom DB process (ps v PID) and see if it drops at times of poor performance.

It was found that the FairCom DB executable and/or the system needed to be set for large page support.

The instructions found on the following page were followed:

http://dbasrus.blogspot.com/2009/06/size-sometimes-does-matter.html

The following commands were then run as root:

  • Enable pinned memory
vmo -p -o v_pinshm=1 -o lru_file_repage=0 
  • Allocate 256 MB for large page support
vmo -p -o lgpg_size=16777216 -o lgpg_regions=16
  • Allow the user account that runs the ctreesql process to lock memory and use large pages
chuser capabilities=CAP_BYPASS_RAC_VMM,CAP_PROPAGATE fctech
  • Enable the ctreesql executable to use large pages
ldedit -b lpdata ctreesql

IBM AIX Mutex Performance Tuning Options

There have been sporadic reports of poor FairCom DB performance when running on AIX operating systems. Symptoms reported include:

  • Low disk / CPU utilization at times of poor performance;
  • Contention on internal process mutexes as examined from process stack dumps

It may be possible to improve performance, in some cases, by adjusting the AIX environment variables SPINLOOPTIME and YIELDLOOPTIME, which change mutex behavior.

The IBM Infocenter says that SPINLOOPTIME defaults to 40 and YIELDLOOPTIME defaults to 0.

Try setting SPINLOOPTIME=650 and YIELDLOOPTIME=10, restart the server and see if this improves the situation. Further tuning may give greater benefits.

Activation Failures (Error 26) on AIX 6

A previously activated server was found to not be activated with a newly provided activation key. The fcactvat utility failed with system error 26 "Text file busy or in use".

AIX 6 can cache shared objects, in this case ctreedbs.so, and fcactvat can then not stamp the binary. An AIX 6 utility, slibclean, is available on that platform that releases the object from the cache allowing successful stamping.

HP-UX

In This Section
Moving a HP-UX FairCom DB SQL Database to Windows

Moving a HP-UX FairCom DB SQL Database to Windows

FairCom DB is a flexible database engine capable of running on many platforms and system architectures. It is frequently useful to move a database from a Unix based high low architecture to a Windows low-high Intel architecture. There are a couple issues with doing so:

  • File headers
  • Binary data

FairCom has long provided utilities for doing such data and index file conversions, namely, ctunf1. To apply these to a full FairCom DB SQL database, perform the following steps.

  1. Shutdown the server. Check for a clean shutdown logged in CTSTATUS.FCS with the final messages:
 - User# 00016	Server shutdown completed
 - User# 00016	Maximum memory used was 230102654 bytes
  1. Backup the database directory, making sure to include files ctdbdict.fsd, <dbname>.dbs/*.dat, <dbname>.dbs/*.idx, and <dbname>.dbs/SQL_SYS/<dbname>.fdd.
  2. Copy ctunf1 and convert.sh into the same directory as the server. (See below for convert.sh)
  3. Run ./convert.sh <dbname>
  4. Copy ctdbdict.fsd and the <dbname>.dbs folder to the windows machine if no errors occurred.
  5. Start the Windows FairCom DB Server process.
  6. Use the ctpath utility to change paths from ./<dbname>.dbs/SQL_SYS/ to .\<dbname>.dbs\SQL_SYS\
  7. Use the ctpath utility to change paths from .<dbname>.dbs/ to .\<dbname>.dbs\

convert.sh

In This Section
convert.sh

convert.sh

#!/bin/sh
# usage: convert.sh DATABASE
# runs ctunf1 on a database and session dictionary
# converts from HIGH-LOW to LOW-HIGH ENDIAN-NESS
err(){
	echo ERROR converting file $1
	echo Check convert.log for error code
	exit 1
}
usage(){
	echo usage:
	echo convert DATABASE
	echo runs ctunf1 on DATABASE and session dictionary
	echo converts from HIGH-LOW to LOW-HIGH ENDIANNESS.
	exit 1
}
dbname=$1
echo ${dbname}
if [ ! -d ${dbname}.dbs ]; then
	echo Database ${dbname}.dbs not found
	usage
fi
if [ ! -f ${dbname}.dbs/SQL_SYS/${dbname}.fdd ]; then
	echo Database Dictionary not found
	exit 1
fi
if [ ! -f ctdbdict.fsd ]; then
	echo Session dictionary ctdbdict.fsd not found
	exit 1
fi
echo STARTING DATABASE ENDIAN CONVERSION.
echo ENSURE SERVER WAS SHUTDOWN CLEANLY.
echo ENSURE DATABASE $dbname HAS BEEN BACKED UP.
echo THIS UTILITY CONVERTS FILES IN PLACE.
echo ANY ERROR DURING CONVERSION WILL CORRUPT DATA.
echo PRESS ctrl-z TO EXIT.
echo PRESS ENTER TO CONTINUE CONVERSION.
read
echo CONVERTING DATABASE DICTIONARY
./ctunf1 ./${dbname}.dbs/SQL_SYS/${dbname}.fdd 8 L Y B2 512 >convert.log
if [ $? != 0 ]; then
	err ${dbname}.dbs/SQL_SYS/${dbname}.fdd
fi
echo CONVERTING ALL DATA... Please be patient
for i in ./${dbname}.dbs/*.dat
do
	./ctunf1 $i 8 L Y B2 256 >>convert.log
	if [ $? != 0 ]; then
		err $i
	fi
done
echo DATA FILE CONVERSION SUCCESS!
echo CONVERTING INDEX FILES
for i in ./${dbname}.dbs/*.idx
do
	./ctunf1 $i 8 L Y B2 256 >>convert.log
	if [ $? != 0 ]; then
		err $i
	fi
done
echo INDEX FILE CONVERSION SUCCESS!
echo CONVERTING Session dictionary
./ctunf1 ctdbdict.fsd 8 L Y B2 512 >>convert.log
if [ $? != 0 ]; then
	err ctdbdict.fsd
fi
echo CONVERSION COMPLETE!
exit 0