Connecting to an Oracle Database

Chris Kelleher

Administrator
Staff member
Workgroup DB Ver 9.0b (NT)
Oracle DataServer Ver 9.0b (NT)
Oracle 8 (Unix)

In our application we have to connect a remote oracle db. But when we try to
do so, we encounter the following problems and situations:

1. When we try to connect oracle db from a client, we get error 1043
(Collation table for code page 1254 and collation name BASIC was not found
in convmap.cp" and error 1451 (Failed to connect to ORACLE database
db_name).

2. We have no problem connecting to oracle on the server where the
dataserver is running. When we try to execute a FIND or FOR statement, it
gives us a warning saying "code page conversion table 1254 to utf-8 was not
found in convmap.p", but it finds and displays the contents of the record
with no other problem.

All startup parameters are set to Turkish (1254). Oracle database code page
is 1254.
I have attached the oracle db information file from the dataserver below. In
that file there is a line saying "Database collation: ?". Am I missing
something here?
If anybody encountered a problem of this kind, his/her help will be greatly
appreciated.

Alper ERDEMIR

Contents of the Information File:

18/01/90 00:49:30 PROGRESS Report
Session Information


Currently Selected Database
Connected DBs: 2
Connected: yes
Physical name: KAT
Logical name: KAT
Schema holder: katalog
Database type: ORACLE
Database version: 7
Restrictions: RECID,PREV,LAST,SETUSERID,SET-CURRENT-VALUE
Database User Id: katalog@katalog
Database code page: 1254
Database collation: ?
PROGRESS and Operating System
Operating System: WIN32
Module type: Full
PRO version: 9.0B
DataServers: PROGRESS,ORACLE,AS400,ODBC
Environment/Startup Parameters
-yy century setting: 1950 Decimal point character: .
-d dmy date setting: dmy Thousands separator: ,
Session stream: 1254
Session charset: 1254
PROPATH = .,C:\Program Files\PROGRESS\gui,
C:\Program Files\PROGRESS\gui\adecomm.pl,
C:\Program Files\PROGRESS\gui\adecomp.pl,
C:\Program Files\PROGRESS\gui\adedesk.pl,
C:\Program Files\PROGRESS\gui\adedict.pl,
C:\Program Files\PROGRESS\gui\adeedit.pl,C:\Program Files\PR
Screen
Screen lines: 15
Message lines: 2
Space-taking: no
Terminal type: WIN3


************************************************************
* Alper ERDEMIR
* Project Manager
* E.K.M. K.ligi
* Golcuk/KOCAELI-TURKIYE
* Email: aerdemir@ekm.tsk.mil.tr, aerdemir@hotmail.com
* Tel:+90 262 4146641 x2898 (PBX)
************************************************************
 

Chris Kelleher

Administrator
Staff member
Alper,

When you add a new foreign schema (a new record of _Db table) Progress asks
you about a code page of a foreign database (and stores the value in
_Db._Db-xl-name) but does not ask about a name of its collation table It's
correct because DataServer could not affect a sort order in a foreign
database. So Progress sets _Db._Db-coll-name (that stores a database
collation name) to undefined value. When Progress executes a CONNECT
statement it uses these fields (_Db._Db-xl-name, _Db._Db-coll-name) to check
an existence of the collation table in the convmap.cp file. The undefined
value of _Db._Db-coll-name is treated as "BASIC".

The convmap.cp file supplied by Progress contains the code pages that do not
have a collation table named "BASIC", e.g. all Russian code pages (1251,
ibm866, ...). This causes the problem.

The workarrounds are:
1. In convmap.dat file you can create a copy of any existent collation table
and
name it as "Basic". Then compile the file with proutil.
or
2. For each foreign schema you can change a collation name from undefined to
any existent name, e.g.:
FOR EACH _Db WHERE _Db._Db-local=NO:
ASSIGN _Db._Db-coll-name = "Turkish".
END.

HTH,
George Potemkin
CSBI EE, S.-Petersburg, Russia
 

Chris Kelleher

Administrator
Staff member
Hi George,
Thanks for your reply.
I solved my problem using your first option. But it was good to know the
logic behind (_Db._Db-coll-name).
Thanks again.
Alper
 
Top