--> Error -23101      Unable to load locale categories.
If you have variables CLIENT_LOCALE and DB_LOCALE set, following files must exist otherwise it will result in error -23101.
- $INFORMIXDIR/gls/lc11/DB_LOCALE's(ll_tt)/(hex value of db's code set).lco
- $INFORMIXDIR/gls/lc11/CLIENT_LOCALE's(ll_tt)/(hex value of db's code set).lco
- $INFORMIXDIR/gls/lc11/CLIENT_LOCALE's(ll_tt)/(hex value of client's-codeset).lco
where ll_tt represents the language and the territory specified by the locale.
Hex value for any code set can be looked up in file $INFORMIXDIR/gls/cm3/registry
say, DB_LOCALE = en_us.ut8 ......................... (hex value for code set utf8 is e01c)
CLIENT_LOCALE = zh_cn.gb18030-2000 ..... (hex value for code set gb18030-2000 is 1570)
following files must exist:
- $INFORMIXDIR/gls/lc11/en_us/e01c.lco Missing any of these files will cause error -23101.
When GL_USEGLU is set (i.e. when using ICU implementation), you need to check the following as well.
- Verify $INFORMIXDIR is set correctly.
- Ensure that ICU files are loaded correctly.
- $INFOMRIXDIR/gls/dll/* ........... (all 4 libraries must exist and have execute permission)
- $INFORMIXDIR/gls/etc/* ........... (all 4 files must exist)
--> Error -23104      Error opening required code-set conversion object file.
Error -23104 is encountered if any of these files are missing:
where cccc is hex value for CLIENT_LOCALE's code set,
dddd is hex value for DB_LOCALE's code set,
assuming code set for CLIENT_LOCALE and DB_LOCALE are not the same.
Having same code set for CLIENT_LOCALE and DB_LOCALE means no code set conversion is involved and hence no -23104 error.
If DB_LOCALE = en_us.ut8 ............................ (hex value of utf8 is e01c)
CLIENT_LOCALE = zh_cn.gb18030-2000 ....... (hex value of gb18030 is 1570)
following files must exist, else it results in error -23104.
--> Error -23197      Database locale information mismatch.
Error -23197 is encountered if ... Seema Kumari
- the code set specified by DB_LOCALE is not same as the code set of database locale.
- the code set of locale_spec used in SET COLLATION sql statement is not same as the code set of database locale.
* Database locale is the locale used when the database was created.
* To know your database locale, you can lookup for dbs_collate value in sysmaster database by
executing following command,
SELECT dbs_collate FROM sysmaster:sysdbslocale WHERE dbs_dbsname = "<your database
* Remember, if DB_LOCALE is not set, CLIENT_LOCALE is used as DB_LOCALE.
The newest version of OpenAdmin Tool for IDS, Version 2.23, has just been released! Download the new version today to get the enhanced SQL Explorer and version 2.0 of the ER Plugin.
New feature highlights:
The SQL Explorer has been newly redesigned. New features include
- Filters and search fields for viewing SQL tracing data.
- Support for different SQL trace levels - global or user - so you can manage what kinds of SQL information are traced for IDS V11.50.xC1 servers.
- Support for suspending and resuming history tracing, without releasing resources, on IDS V11.50.xC1 servers.
ER Plug-in Version 2.0: Version 2.0 of OAT’s ER plug-in includes a new Replicate Explorer and becomes the first step in supporting ER administration graphically through OAT.
- The Replicate Explorer now lets you monitor your replicates and replicate sets.
- The Node Details -> Configuration page now supports the editing and updating of ER configuration parameters
Download OAT Version 2.23 now at https://www14.software.ibm.com/webapp/iwm/web/preLogin.do?lang=en_US&source=swg-informixfpd
For additional information on OpenAdmin Tool for IDS, including feature details, screenshots and demos, go to www.openadmintool.org.
Erika Von Bargen
During the installation of IDS 11.50, Program Group folder is opened and Start Menu shortcuts are added. If, these actions were optional then it would make IDS more embeddable with other applications, which uses IDS in background. Customers who are embedding IDS as part of their software package usually desire near-complete invisibility.
This request was met by adding a new comma-line option “hidden” for instillation. This option will prevent creation of start menu shortcuts and suppress the Program Group folder from popping-up. Users can use this option by invoking the setup.exe (IDS 11.50 installation) from command-line and supplying “–hidden” option with the same command. Command-line Usage:
$ setup.exe -hidden Bhadrik Patel
Previous version of JDBC 3.50 could not be installed on Windows 64-bit using 64-bit JRE. Installing JDBC 3.50 gave an error "Directory not writable" for all directories. Same error message was received, even after running all the process as administrator by turning UAC (User Account Control) off. Workaround for this problem was to use 32-bit JRE on Windows 64-bit to install JDBC 3.50.
This problem was solved in IDS 11.50. Now JDBC 3.50 uses newer version of Install Shield, which allows for JDBC 3.50 to be installed on 64-bit Windows using 64-bit JRE. Now, users no longer have to use 32-bit JRE to install JDBC 3.50 on Windows 64-bit. This makes users life easier, since users do not have to set up 32-bit JRE on 64-bit Windows. Bhadrik Patel
In most cases the Informix error codes are very good at explaining why there is a problem and how to fix it. Finderr(Error Message Utility), is the utility shipped with IBM Informix Dynamic Server and client products(CSDK and IConnect) that’s helps to check an error code and returns error messages corresponding to IBM Informix error numbers.
Problem:Finderr uses WinHelp. The Help for this program was created in Windows Help format, which was used in previous versions of Windows and it is not supported in the newer flavors of Windows Operating Systems like Vista or Windows 2008. Windows Vista and Windows Server 2008 are not shipped with Winhelp application. So you will get error messages popping up while executing finderr utility shipped with IDS 11.50 on Windows Server 2008 and Vista:
The GUI finderr program supplied with CSDK and IConnect also doesn't work on Windows Vista or Windows Server 2008. The execution of finderr utility in client products pops-up the following error messages.
The workaround is to download the Windows Help program (WinHlp32.exe) from the following Microsoft support Web site.
For Windows 2008:
The problem has been fixed in IDS 11.50.xC3 and CSDK-3.50.xC3 releases. So you can always upgrade to these releases to get finderr utility working in newer flavors of Windows Operating System.
Snigdha Sahu[Read More]
In IDS releases prior to 10.00.TC5, the Informix Dynamic Server(IDS) Windows Service was allowed to log on only as user informix. Launching the IDS installation program setup.exe with the -system command line argument (only) will install IDS and create a new instance running as the Windows Local System user, bypassing screens which prompt for informix user password(informix user does not get created when this option is used).
Starting with version 11.50, you can install IDS on Windows as the local system user account by selecting the Local System User option right on the IDS Server configuration Setup panel. This option is available only in custom mode of installation.
Typically this option provides the same privileges as the informix user account; however, it uses an internal account representing a pseudo-user that does not require a password. The local system account is used by the operating system and services running under Windows during the installation of Dynamic Server. The informix user is still created by default.
However user can choose not to create an informix user account at all, but we have to note that Enterprise Replication between Dynamic Server on UNIX and IDS on Windows Operating System will not work if informix user and Informix-Admin group is not present.Along with the “Start database server as Local System User” checkbox another checkbox “Do not create user informix account” is also provided on the same panel which is greyed out unless the user picks the System User option.
Some of the benefits of why people would want to do this:
- if the machine has a password expiry policy and it is not convenient to change the password of the IDS service this will save having to do it
- some security policies require that the informix user not be a member of the Administrators group. If the IDS service logs on as local system user the informix user no longer has to be an administrator.
Snigdha Sahu[Read More]
Suppose you have an application which depends on IDS. Your business requirement is application must starts after a successful IDS memory initialization. Previously there was no way you can validate the return code of oninit process to make a decision whether or not IDS initialize successfully. So, if you have a script that automatically starts IDS and the application respectively, it possible the application may start even though IDS failed to initialize.
A new oninit option has introduced to IDS 11.50 that generate a return code. Based on the return code you can customize the script and automate startup process.
The 'oninit -w' command generates following return codes:
- 0 - when success
- 1 - when initialization fails or exceed the timeout value
The 'oninit -w' command forces IDS to wait until it successfully initializes before returning to a shell prompt. You can also provide an addition argument for timeout value with '-w' option. Without any timeout value with '-w' option, IDS will use the default value e.g. 10 minutes. If IDS cannot initialize within the timeout period, oninit generates return code 1 and writes following error message to the online.log file:
Warning: wait time expired
The syntax of new command as follows:
You can use the '-w' option with combination of any other oninit initialization options.
Couple of points to remember:
- In a high-availability environment, you can only use the 'oninit -w' command on primary server; it is not valid on secondary servers.
- The oninit command returns success when sysmaster, sysutils, sysuser and sysadmin are successfully created.
Sanjit Chakraborty[Read More]
DB_LOCALE and CLIENT_LOCALE are compatible if ...
- the code set for both the locales are identical,
- code set conversion is possible between CLIENT_LOCALE's and DB_LOCALE's code set,
a locale consisting of the language_terriorty from CLIENT_LOCALE and the code set from DB_LOCALE exist
Note: For any code set name, its corresponding code set number and hex value, can be found in following file.
DB_LOCALE = en_us.850 (code set 850, its hex value 0352)
CLIENT_LOCALE = de_de.850
Here, both the locales are using same code set, 850 which is supported by both en_us and de_de, that is, US English and Germany German.
Hence, they are compatible.
CLIENT_LOCALE = fr_ca.850 (code set 850, its hex value 0352)
DB_LOCALE = de_de.cp1252 (code set 1252, its hex value 04e4)
Here, for both the locales to be compatible, there are 2 requirements:
i) Canadian French (fr_ca) must support code set 1252 encoding.
In other words, this locale file must exit.
ii) Conversion between CLIENT_LOCALE's code set, 850 and
DB_LOCALE's code set, cp1252 must be supported.
In other words, these files must exist.
If you have locales fr_ca and de_de, for code set 850 and cp1252, installed on the machine, you
should see the above listed files exists.
Hence, they are compatible locale.
CLIENT_LOCALE = fr_ca.850 (code set 850, its hex value 0352)
DB_LOCALE = cs_cz.8859-2 (code set 8859-2, its hex value 0390)
Here, the locales are not compatible because ...
- Canadian French (fr_ca) does not support 8859-2 encoding, and
- conversion between code set 850 and 8859-2 is not supported.
CLIENT_LOCALE = iw_il.8859-8 (code set 8859-8, its hex value 0394)
DB_LOCALE = en_us.utf8 (code set utf8, its hex value e01c)
Here, even though code conversion is posible between code set 8859-8 and utf8, these locales
are not compatible because Israelian hebrew (iw_il) does not support utf8 encoding.
That is, there is no such locale file to support utf8 encoding by Israelian hebrew.
Note: If a locale file is not available in your INFORMIXDIR, check the Informix International Seema Kumari
Language Suppliment (ILS) to see if that the locale is supported.
The value of locale variable, CLIENT_LOCALE or DB_LOCALE can be broken into 4 parts.
1 2 3 4
<language>_<territory>.<Code set name/Code set number>[@modifier]
-------- -------- ----------------------------- --------
Conventional, I represent this as ll_tt.xxxx@xyz, where ...
ll ............ represents the Language
tt ........... represents the Territory, or cultural convention.
xxxx ....... represents the Code set Name or the Code set Number supported by the locale and
xyz ......... represents the Modifier. This is the only optional part in a locale value.
The modifier, sometimes refered as variant, modifies the cultural-convention settings that the language and territory settings imply. It usually indicates a special localized collating order that the locale supports.
Let us look at an example. Example:
CLIENT_LOCALE = de_at.cp1252@euro, and
CLIENT_LOCALE = de_at.1252@euro
- Here, both CLIENT_LOCALE values represent the same locale.
- 1252 is the Code set number for Code set name, cp1252. We can specify either Code set name or the Code set number in a locale value.
- de ........... represents the German language
- at ............ the territory, Austria
- cp1252 ... the code set used for the encoding and
- euro ....... the modifier used for the locale
So, this is German language locale, for Austria, using cp1252 encoding and euro modifier.
Now, to check if this locale file exists, where to lookup ?
All locale files reside under directory $INFORMIXDIR/gls/lc11
To lookup for locale files for language (ll) and territory (tt), we check under $INFORMIXDIR/gls/lc11/ll_tt directory.
In our example, to lookup for locale files for German language (de), for territory Austria (at), we will lookup $INFORMIXDIR/gls/lc11/de_at directory
Next, under the specified locale directory, look for files with name represented by hex value of the code set name/ code set number, along with modifier name if modifier is specified, with an extension .lco
In our example, hex value for Code set cp1252 is 04e4 and modifier euro is used. So, we will look for file 04e4euro.loc under directory $INFORMIXDIR/gls/lc11/de_at.
How and where to find the hex value for a Code set name ?
For any Code set name, its Code set number and hex value can be looked-up in file $INFORMIXDIR/gls/cm3/registry.
Let us find the hex value for Code set name Latin-3.
We can find the information in file
In the registry file ...
- first coulmn represents the code set name,
- second column is code set number
- third column is the hex value of the code set number, and
- fourth column, is either blank or has comment about the code set.
Let us lookup for code set, Latin-3 in registry file and see what we find.
We get the following value.
Latin-3 57346 0xe002
--------- ------------ ----------- --------------------------------
code set name code set number hex value in this case, there is no comment
- Locale values are case in-sensitive.
DB_LOCALE = de_de.cp1252, DB_LOCALE = de_de.CP1252.
Here, both locale values are valid, representing the same code set.
- You can specify either code set name or code set number in a locale value, but you cannot use the hex value of the code set number.
DB_LOCALE = fr_ca.57372 or fr_ca.utf8, ........ both values are valid and they represent the same code set.
DB_LOCALE = de_de.cp1252 or de_de.1252 .... both values are valid and they represent the same code set
DB_LOCALE = de_de.04e4 ............... this in invalid. Code set's hex value cannot be used in a locale value.
- If modifier is not specified in the locale variable, like say ...
CLIENT_LOCALE = de_at.cp1252
- to locate the locale file, look for .loc under the language_territory directory. In this case, we look for following file ...
- If modifier is specified in the locale variable, like ...
CLIENT_LOCALE = de_at.cp1252@euro
- to locate the locale file, look for .lco file under language_territory directory. In this case, we look for following file ...
- Code set name, its corresponding Code set number and hex value is specified in file
- Locale Territory/ Country code and Language code can be looked up in file
- Conventionally, for LOCALE variable having value ll_tt.xxxx[@xyz], following locale file should exist.
$INFORMIXDIR/gls/lc11/ll_tt/<hex value of xxxx>[xyz].lco
IDS 11.50 introduced a new installation wizard (installer), which makes life easier than in past releases to set up an instance to use a variety of database clients. In this section we will discuss how to set DRDA connection during installation process.
The installation wizard is extremely user friendly and easy to navigate. Options are available with installation wizard to configure a database server alias (DBSERVERALIASES) and a port for clients that use the DRDA protocol. You can easily setup this DRDA connection via a checkbox when creating the demonstration database server instance during installation. We will see some screenshots latter in this section to get a better understanding on DRDA configuration.
There are little differences between UNIX and Windows installation wizard.
- Select option use the default configuration file to able to install database server with DRDA.
- Do not select the option to customize the default configuration file, as this option does not allow setting DRDA.
- By default the server installation includes DRDA setup.
- You must select custom installation to exclude DRDA setup.
On UNIX platform you need to answer 'Yes' for question Do you want to create an IDS demonstration database server instance. Similarly, you need to choose option 2 - Use the default configuration file under demonstration database instance configuration. You may use default server name and server alias values or change those as per your requirement.
Following is a DRDA configuration screenshot on UNIX platform:
On Windows platform the typical installation process (default) automatically include the DRDA configuration. It will set the configuration parameter DBSERVERALIASE as "svc_drda". Custom installation process is required if you want to disable DRDA setup in demonstration server instance.
Following are some DRDA configuration screenshot on Windows platform:
The custom installation process provides controls on initialize the demonstration server. You can exclude the DRDA configuration, if you wish. By default DRDA is selected.
Things to notice if you enable a custom configuration file on windows platform, DRDA support is removed.
By default IDS will configure TCP/IP port 9089 and drtlitcp or drsoctcp connection protocol for DRDA configuration.