Ribo - Tracing TDS trace between IQ and IQ
Tags:
Ribo diagnostic utility can be used to trace TDS protocol stream between TDS client and TDS Server . TDS client include jConnect, JDBC,
isql, dbisql , SAP Sybase Adaptive Server Enterprise and SAP Sybase SQL Anywhere ODBC driver and Open Client.
TDS Servers include SAP Sybase Adaptive Server Enterprise, SAP Sybase SQL Anywhere and SAP Sybase IQ. Ribo
works with TDS 5.x and above. For TDS 5.0 Funcational specs see:
http://www.sybase.com/detail?id=1013412
Ribo can be used in following 3 modes:
- Dump TDS protocol stream to a file
- Translate captured TDS dump to an Ascii format
- Capture a TDS dump to a file and translate the
protocol’s text representation to the screen or a GUI Window
Ribo is located under $SYBASE/jutils-3_0/ribo.
Ribo Syntax:
[sybase@redhead shared]$ $RIBO_HOME/Ribo -h
Capture usage: Ribo [-l <listen_port>] [-s
<server_host>] [-p <server_port>]
-c <capture_file_prefix>] [-t [<trans_file_prefix>]] [-gui] [-d]
[-f<filter_file>] [-h]
-l<listen_port> - port number to listen on, (default: 5005)
-s<server_host> - server hostname, (default: localhost)
-p <server_port> - server port number, (default: 2638)
-c<capture_file_prefix> - prefix is the filename prefix for saving the captured data,
(default: cap)
-t[<trans_file_prefix>] - captured data is translated to a file,
<trans_file_prefix> is the prefix for saving the translated output, (default: %5s)
-gui - use the UI interface
-d - Displays translated data while capturing
-f<filter_file> - filter file for translating TDS
-h - this help message
-v - show version information
Translator usage: Ribo
<input_capture_file> [<output_file>]
<input_capture_file> - capture file to by analyzed
[<output_file>] - filename to save translated output
if ommited, translated data is sent to STDOUT
Steps:
- Set $JAVA_HOME and $RIBO_HOME environment variables
setenv RIBO_HOME $SYBASE/jutils-3_0/ribo
setenv JAVA_HOME $SYBASE/shared/JRE-6_0_24_64BIT
2. Add Ribo entry in $SYBASE/interfaces
Ribo
master tcp ether redhead 5000
query tcp ether redhead 5000
3. Start Ribo
[sybase@redhead data1541]$ $RIBO_HOME/Ribo -s redhead -l 5000 -p 9631 -d &
-s redhead (host machine name)
-l 5000 (Ribo port)
- p 9631 ( IQ 16 port)
So instead of IQ (15.4)->IQ (16.0) we have IQ (15.4) ->Ribo -> IQ (16.0)
4. Create odbc dsn for Ribo in odbc.ini
[Ribo]
DRIVER=/sybase/rel154_iq_esd2/IQ-15_4/lib64/libdbodbc12.so
EngineName=Ribo
CommLinks=tcpip(host=redhead;port=5000)
Userid=DBA
Password=sql
AutoStop=no
DatabaseName=iqdb
5. Add Ribo as remote server
create server Ribo class 'SAODBC' using 'dsn=Ribo'
6. If login on remote server is different then create externlogin
Create externlogin “DBA” to “Ribo” remote login ‘DBA’ identified by ‘sql’
7. Run insert location command
(DBA)> insert t1 location 'Ribo.iqdb' {select * from t1}
Accepting
new connection from: /10.172.104.109
Sending captured traffic to: cap0.tds
2 row(s) inserted
Execution time: 0.385 seconds
(DBA)>
Closing dump file cap0.tds
8. Capture files should be generated in directory from where Ribo wsa started.
9. Convert capn.tds to tds
$RIBO_HOME/Ribo cap0.tds >tds0.out
Same steps can be used to setup Ribo between
ASE and IQ