centos 6.4 + tdodbc 15 getting error: 110 Unable to get catalog string.

Connectivity
Enthusiast

centos 6.4 + tdodbc 15 getting error: 110 Unable to get catalog string.

Hi all, hoping someone can help. I've got a clean CentOS 6.4 box and I'm trying to connect it to Teradata. My first step is to install ksh then I install the tdodbc 15 packages: tdicu, tdodbc, TeraGSS. Then I copy the /opt/teradata/client/ODBC_64/odbc*.ini files to my home dir, prepending the '.' and edit the files for my Teradata credentials and DBC.

I test the connection using /opt/teradata/client/15.00/odbc_64/bin/tdxodbc and I'm returned this error:

adhoc: (SQL Diagnostics) STATE=HYT00, CODE=110, MSG=[Teradata][Unix system error]  110 Unable to get catalog string.

What should I try next? Thanks in advanced. 

Tags (2)
8 REPLIES
Enthusiast

Re: centos 6.4 + tdodbc 15 getting error: 110 Unable to get catalog string.

So, with a bit more research, I determined that the message indicates the catalog file can't be found: https://stackoverflow.com/questions/22793620/teradata-unable-to-get-catalog-string-error-when-using-...

So, now:

[slyon@x-7447 ~]$ find /opt/teradata/ -name "*.cat"
/opt/teradata/client/15.00/odbc_32/msg/tdodbc.cat
/opt/teradata/client/15.00/odbc_64/msg/tdodbc.cat
[slyon@x-7447 ~]$ export NLSPATH=/opt/teradata/client/15.00/odbc_64/msg/tdodbc.cat
[slyon@x-7447 ~]$ /opt/teradata/client/15.00/odbc_64/bin/tdxodbc

Enter Data Source Name: jonny
Enter UserID: slyon
Enter Password:

Connecting with SQLConnect(DSN=jonny,UID=slyon,PWD=*)...

adhoc: (SQL Diagnostics) STATE=HYT00, CODE=110, MSG=[Teradata][Unix system error] 110 Socket error - No response received when attempting to connect to the Teradata server

ODBC connection closed.
Enthusiast

Re: centos 6.4 + tdodbc 15 getting error: 110 Unable to get catalog string.

So then I added DSNTraceEnable=Yes to my .odbc.ini file and was able to capture the tdxodbc connection attempt's trace output.

   36     TS:790:[139713758390048] *** LCC:  socket(5) created.  Total sockets created:1   [ cwinsock.cpp 1322 ]

37 TS:790:[139713758390048] *** LCC: select() waiting for 0.240000 seconds. 1 active connections [ cwinsock.cpp 1203 ]
38 TS:3190:[139713758390048] *** LCC: select() TIMEDOUT [ cwinsock.cpp 1237 ]
39 TS:3190:[139713758390048] *** LCC: Fetching address 2 of jonnycop5.xxx.xxx.xxx [ CNode.cpp 214 ]
40 TS:3190:[139713758390048] *** LCC: socket(6) created. Total sockets created:2 [ cwinsock.cpp 1322 ]
41 TS:3190:[139713758390048] *** LCC: select() waiting for 0.240000 seconds. 2 active connections [ cwinsock.cpp 1203 ]
42 TS:5600:[139713758390048] *** LCC: select() TIMEDOUT [ cwinsock.cpp 1237 ]
43 TS:5600:[139713758390048] *** LCC: Fetching address 3 of jonnycop5.xxx.xxx.xxx [ CNode.cpp 214 ]
44 TS:5600:[139713758390048] *** LCC: socket(7) created. Total sockets created:3 [ cwinsock.cpp 1322 ]
45 TS:5600:[139713758390048] *** LCC: select() waiting for 0.240000 seconds. 3 active connections [ cwinsock.cpp 1203 ]
46 TS:8000:[139713758390048] *** LCC: select() TIMEDOUT [ cwinsock.cpp 1237 ]
47 TS:8000:[139713758390048] *** LCC: Fetching address 4 of jonnycop5.xxx.xxx.xxx [ CNode.cpp 214 ]
48 TS:8000:[139713758390048] *** LCC: socket(8) created. Total sockets created:4 [ cwinsock.cpp 1322 ]
49 TS:8000:[139713758390048] *** LCC: select() waiting for 0.240000 seconds. 4 active connections [ cwinsock.cpp 1203 ]
50 TS:10400:[139713758390048] *** LCC: select() TIMEDOUT [ cwinsock.cpp 1237 ]
51 TS:10400:[139713758390048] *** LCC: Fetching address 5 of jonnycop5.xxx.xxx.xxx [ CNode.cpp 214 ]
52 TS:10400:[139713758390048] *** LCC: socket(9) created. Total sockets created:5 [ cwinsock.cpp 1322 ]
53 TS:10400:[139713758390048] *** LCC: select() waiting for 0.240000 seconds. 5 active connections [ cwinsock.cpp 1203 ]
54 TS:12800:[139713758390048] *** LCC: select() TIMEDOUT [ cwinsock.cpp 1237 ]
55 TS:12800:[139713758390048] *** LCC: Fetching address 6 of jonnycop5.xxx.xxx.xxx [ CNode.cpp 214 ]
56 TS:12800:[139713758390048] *** LCC: socket(10) created. Total sockets created:6 [ cwinsock.cpp 1322 ]
57 TS:12800:[139713758390048] *** LCC: select() waiting for 0.240000 seconds. 6 active connections [ cwinsock.cpp 1203 ]
58 TS:15200:[139713758390048] *** LCC: select() TIMEDOUT [ cwinsock.cpp 1237 ]
59 TS:15200:[139713758390048] *** LCC: Fetching address 7 of jonnycop5.xxx.xxx.xxx [ CNode.cpp 214 ]
60 TS:15200:[139713758390048] *** LCC: socket(11) created. Total sockets created:7 [ cwinsock.cpp 1322 ]
61 TS:15200:[139713758390048] *** LCC: select() waiting for 0.240000 seconds. 7 active connections [ cwinsock.cpp 1203 ]
62 TS:17610:[139713758390048] *** LCC: select() TIMEDOUT [ cwinsock.cpp 1237 ]
63 TS:17610:[139713758390048] *** LCC: Fetching address 8 of jonnycop5.xxx.xxx.xxx [ CNode.cpp 214 ]
64 TS:17610:[139713758390048] *** LCC: socket(12) created. Total sockets created:8 [ cwinsock.cpp 1322 ]
65 TS:17610:[139713758390048] *** LCC: select() waiting for 0.240000 seconds. 8 active connections [ cwinsock.cpp 1203 ]
66 TS:20010:[139713758390048] *** LCC: select() TIMEDOUT [ cwinsock.cpp 1237 ]
67 TS:20010:[139713758390048] *** LCC: application/user set LoginTimeout elapsed [ cwinsock.cpp 943 ]
68 TS:20010:[139713758390048] *** LCC: Deleting Resolver [ ConnectToHost.cpp 215 ]
69 2 TS:20010:[139713758390048] DBC::SocketError(0x0) [ dbccli.cpp 291 ]
70 TS:20010:[139713758390048] [SetDiagStatusRec][HYT00][S1T00][110][[Teradata][Unix system error] 110 Socket error - No response received when attempting to connect to the Teradata server] [ sqlerror.cpp 1280 ]
71 TS:20010:[139713758390048] MessageBox was passed an unusable parent handle: 0xA1C3F758 [ connect.cpp 6904 ]
72 TS:20010:[139713758390048] SQLGetDiagRec(fHandleType 2, hHandle 2, iRecNumber 1, [ results.cpp 4134 ]
73 TS:20010:[139713758390048] szSqlState, pfNativeErrorPtr, szMessageText, 1026, pcbTextLengthPtr)
[ results.cpp 4199 ]
74 TS:20010:[139713758390048] SQLGetDiagRec returns 0 [ results.cpp 4215 ]
75 TS:20010:[139713758390048] SQLGetDiagRecW SQLGetDiagRec2 returned 0 [ SQLWFunctions.cpp 1321 ]
76 TS:20010:[139713758390048] SQLGetDiagRecW returns 0 to the DM [ SQLWFunctions.cpp 1337 ]
77 TS:20010:[139713758390048] SQLGetDiagRec(fHandleType 2, hHandle 2, iRecNumber 1, [ results.cpp 4134 ]
78 TS:20010:[139713758390048] szSqlState, pfNativeErrorPtr, szMessageText, 1026, pcbTextLengthPtr)
[ results.cpp 4199 ]
79 TS:20010:[139713758390048] SQLGetDiagRec returns 0 [ results.cpp 4215 ]
80 TS:20010:[139713758390048] SQLGetDiagRecW SQLGetDiagRec2 returned 0 [ SQLWFunctions.cpp 1321 ]
81 TS:20010:[139713758390048] SQLGetDiagRecW returns 0 to the DM [ SQLWFunctions.cpp 1337 ]
82 TS:20010:[139713758390048] SQLGetDiagField(fHandleType 2, hHandle 2, iRecNumber 1, fDiagIdentifier 8, [ results.cpp 3330 ]
83 TS:20010:[139713758390048] pvDiagInfoPtr, 1026, pcbStringLengthPtr)
[ results.cpp 3604 ]
84 TS:20010:[139713758390048] SQLGetDiagField(fHandleType 2, hHandle 2, iRecNumber 1, fDiagIdentifier 9, [ results.cpp 3330 ]
85 TS:20010:[139713758390048] pvDiagInfoPtr, 1026, pcbStringLengthPtr)
[ results.cpp 3604 ]
86 TS:20010:[139713758390048] SQLGetDiagField(fHandleType 2, hHandle 2, iRecNumber 1, fDiagIdentifier 10, [ results.cpp 3330 ]
87 TS:20010:[139713758390048] PriorToV2R2OrDefault 0, 1026, 22) --> SQL_SUCCESS
[ results.cpp 3536 ]
88 TS:20010:[139713758390048] SQLGetDiagField(fHandleType 2, hHandle 2, iRecNumber 1, fDiagIdentifier 11, [ results.cpp 3330 ]
89 TS:20010:[139713758390048] , 1026, 0) --> SQL_SUCCESS
[ results.cpp 3579 ]
90 TS:20010:[139713758390048] SQLGetDiagRec(fHandleType 2, hHandle 2, iRecNumber 2, [ results.cpp 4134 ]
91 TS:20010:[139713758390048] szSqlState, pfNativeErrorPtr, szMessageText, 1026, pcbTextLengthPtr)
[ results.cpp 4199 ]
92 TS:20010:[139713758390048] SQLGetDiagRec returns 100 [ results.cpp 4215 ]
93 TS:20010:[139713758390048] SQLGetDiagRecW SQLGetDiagRec2 returned 100 [ SQLWFunctions.cpp 1321 ]
94 TS:20010:[139713758390048] SQLGetDiagRecW returns 100 to the DM [ SQLWFunctions.cpp 1337 ]
95 TS:20010:[139713758390048] Entering SQLFreeHandle [ connect.cpp 792 ]
96 TS:20010:[139713758390048] SQLFreeHandle: SQL_HANDLE_DBC [ connect.cpp 800 ]
97 TS:20010:[139713758390048] FreeConnect(hdbc2) [ connect.cpp 5882 ]
98 TS:20010:[139713758390048] CToTeradataLanMessage::operator delete (p=0x207DC50) [ ctlanmsg.cpp 522 ]
99 TS:20010:[139713758390048] doing delete on CFromTeradataLanMessage [ ctlanmsg.cpp 854 ]
100 TS:20010:[139713758390048] Entering SQLFreeHandle [ connect.cpp 792 ]
101 TS:20010:[139713758390048] SQLFreeHandle: SQL_HANDLE_ENV [ connect.cpp 796 ]
102 TS:20010:[139713758390048] FreeEnv(henv2) [ connect.cpp 5944 ]
103 TS:20010:[139713758390048] ...Message texts file closed [ connect.cpp 5966 ]
104 TS:20010:[139713758390048] ...AddressOfEntryPoint failed for DestroyAllShellWidgets due to NULL so_handle [ ../unix/csharedobj.cpp 359 ]
105 TS:20010:[139713758390048] CSharedObject being destroyed [ ../unix/csharedobj.cpp 120 ]
106 TS:20010:[139713758390048] : successful [ ../unix/csharedobj.cpp 136 ]
107 TS:20010:[139713758390048] ...Connection dialog shared object released [ connect.cpp 5988 ]

**** Tracing Disabled at Wed Mar 4 05:40:02 2015 ***
Teradata Employee

Re: centos 6.4 + tdodbc 15 getting error: 110 Unable to get catalog string.

What does the DBCName parameter for your DSN entry look like?

If it's a single name "X" can you ping XCOP1 (with the added suffix)? Can you ping X (with no suffix)?

Enthusiast

Re: centos 6.4 + tdodbc 15 getting error: 110 Unable to get catalog string.

DBCName=jonny.xxx.xxx.xxx

I can ping jonny.xxx.xxx.xxx 

I can ping jonny

I can ping jonnyCOP1

I can ping jonnyCOP1.xxx.xxx.xxx

Teradata Employee

Re: centos 6.4 + tdodbc 15 getting error: 110 Unable to get catalog string.

It looks like you are getting a LoginTimeout at 2 seconds (though the default should be 20). Try specifying a much larger value, e.g. LoginTimeout=120

See if it succeeds or if it just takes longer before it fails.

Teradata Employee

Re: centos 6.4 + tdodbc 15 getting error: 110 Unable to get catalog string.

few points.

- ODBC Driver for Teradata is not supported on CentOS.

- DNS returned multiple IP-addresses for 'jonnycop5.xxx.xxx.xxx'.  And 8 of them not responded to driver's connect request.  You may want to check what are those IP-addresses returned from DNS for 'jonnycop5.xxx.xxx.xxx' and see if they are responding.

- If you have multiple COP names defined and each of them associated with muliple IPs.  You can also check if this is how the DNS configuration should be.

Enthusiast

Re: centos 6.4 + tdodbc 15 getting error: 110 Unable to get catalog string.

I believe it's a network firewall issue. I'll post back after I can confirm.

Enthusiast

Re: centos 6.4 + tdodbc 15 getting error: 110 Unable to get catalog string.

Yup, firewall issue. Thanks to all who chimed in.