obiee 10g teradata 13.10 deployment on Solaris 64-bit

obiee contains two types of DB connection libraries:

  • native libraries are included with the obiee product and configured at installation time.
    Examples:  Oracle Client Library (OCI), essBase and DB2 Client.
    The libraries are written by the OBIEE team using the database vendor's API.
    These libraries are initialized at nqsserver startup and the DB server version is recorded in nqsserver.log. 
  • odbc libraries are supplied by the DB vendor, are not included with obiee, and must be manually configured.
    ODBC clients require an ODBC manager;   obiee distributes a licensed manager using Data Direct by Merant.  The Oracle supplied Merant manager must be used for DB vendor supplied odbc client libraries.

Installation of odbc drivers requires close attention to a lot of details.   The tricky bits for a vendor to get right are:

  • Thread safety.  The library should not corrupt common storage in the nqsserver process.
  • Thread efficiency.  The library should not cause performance problems with abusive thread programming
  • Proper loading of odbc driver dependent libraries.  nqsserver will load a single driver;  it is up to the vendor to provide the means for loading any additional dependent libraries.
  • Proper signal handling.  The client library cannot subvert the signal handling in the server application.  It is a client providing DB access, not the server.

Teradata is a development partner with Oracle, and has steadily improved the stability of the client library across multiple platforms in support of obiee.   We recommend Teradata Version 13.10 be installed at the latest Teradata  release level.

 This topic may be too large to cover succinctly in a blog.   The details are specific to Solaris, but the principles  and diagnostic techniques apply across all unix platforms. The deployment details are different for obiee 11g.

Contact Oracle Tech Support if you need assistance with your deployment.

Vendor Documentation References:

obiee 10g product certification:  pg 24-25 Teradata V2R5.1.x - V2R6.2, Client 13.10, certified 10.1.3.4.1
obiee 10g documentation: Deployment Guide, Server Administration, Install/Config Guide
obiee overview:

teradata connectivity downloads:
( requires registration )
solaris odbc drivers:
sparc 13.10
Choose 13.10.00.04  ( ReadMe )
sparc 14.00:
This version might work, but it is not certified by Oracle on obiee 10g

I assume:

  • Top level installation directory for all products is /opt  ( OracleBI, teradata, oracle ) 
  • obiee 10.1.3.4.1 is installed. 10.1.3.4.2 would be a better choice.  

Teradata odbc install

  • requires root for Solaris pkgadd
  • Only 1 version of Teradata odbc can be installed; we use 13.10.
    Teradata installer creates symbolic links in /usr/lib for the current version dependent libraries

The nqsserver shared library deployment looks like this

OBIEE Server <-> DataDirect Manager <-> Teradata Driver <-> Teradata Database

nqsserver startup

$ cd $BI/setup
$ . ./sa-init64.sh
$ run-sa.sh autorestart64

run-sa.sh and nqsserver reference the following files at startup:
  .variant.sh
  user.sh
  NQSConfig.INI
  DBFeatures.INI
  $ODBCINI ( odbc.ini )
  sqlnet.ora

How does nqsserver connect to Teradata?

A teradata DSN is created in the RPD ( eg., TD71 )
setup/odbc.ini contains:

[ODBC Data Sources]
 TD71
=tdata.so

[TD71]
Driver=/opt/teradata/client/ODBC_64/lib/tdata.so
Description=Teradata V7.1.0
DBCName=###.##.##.###
LastUser=
Username=northwind
Password=northwind
Database=
DefaultDatabase=northwind

setup/user.sh contains

LD_LIBRARY_PATH\
=/opt/OracleBI/server/Bin64\
:/opt/OracleBI/odbc/lib64\
:/opt/oracle/product/10.2.0/client/lib\
:/opt/teradata/client/ODBC_64/lib\
:/opt/teradata/teragss/solaris-sparc/client/lib\
:/opt/OracleBI/web/bin64

export LD_LIBRARY_PATH

setup/.variant.sh contains

if [ "$ANA_SERVER_64" = "1" ]; then
  ANA_BIN_DIR=${SAROOTDIR}/server/Bin64
  ANA_WEB_DIR=${SAROOTDIR}/web/bin64
  ANA_ODBC_DIR=${SAROOTDIR}/odbc/lib64

setup/sa-run.sh  contains

. ${ANA_INSTALL_DIR}/setup/.variant.sh
. ${ANA_INSTALL_DIR}/setup/user.sh
logfile="${SAROOTDIR}/server/Log/nqsserver.out.log"
${ANA_BIN_DIR}/nqsserver -quiet >> ${logfile} 2>&1 &

nqsserver creates/updates  $SAROOT_DIR/server/Log/nqsserver.log
At startup, the native database drivers connect and record DB versions.

tdata.so is not loaded until a Teradata DB connection is attempted,
so the Teradata DB version number will not appear in the log with native drivers ( oracle DB).


Teradata odbc client installation

As root, start with the Teradata download:
tdodbc__solaris_sparc.13.10.00.04.tar.gz

$ sudo su
# mkdir odbc
# cd odbc
#
gzip -dc ../tdodbc__solaris_sparc.13.10.00.04.tar.gz | tar -xf -

Accept all the defaults for pkgadd.   Install in /opt.
# pkgadd -d . TeraGSS
# pkgadd -d . tdicu1310
# pkgadd -d . tdodbc1310

Check the results:  You should see:
$ ls /opt/teradata
client teragss

$ ls /opt/teradata/client
13.10 odbc ODBC_32 ODBC_64
$ ls  /opt/teradata/client/ODBC_64
include lib locale odbc.ini odbcinst.ini

include, lib, locale are all symbolic links to /opt/teradata/client/13.10/odbc_64
For example:
$ ls  -ld /opt/teradata/client/ODBC_64/lib
lrwxrwxrwx 1 root other 38 Jun 4 03:43 /opt/teradata/client/ODBC_64/lib 
                                    -> /opt/teradata/client/13.10/odbc_64/lib 

Teradata odbc download is identified as 13.10.0.4, but teragss is at level 13.10.0.12.
They are installed using the command shown above. ( pkgadd -d . TeraGSS )

64-bit solaris-sparc directory.
$ cat opt/teradata/teragss/solaris-sparc/13.10.00.12/version
13.10.00.12

Previous versions of Teradata libraries were installed in
/usr/teragss/solaris-sparc/13.10.04.01
These are downlevel and should be removed.


Directory Notes:

  • /opt/teradata/client/13.10/odbc_64/lib/tdata.so
    The physical 64-bit obiee library loaded by nqsserver ( symlink ODBC_64 -> 13.10 )
  • /usr/odbc should not be used;  it is a symlink to 32-bit libraries
  • LD_LIBRARY_PATH_64 environment variable should not be used.

Sample Solaris configuration using default Teradata 13.10 install

The following code snippet is placed in obiee 10.1.3.1 setup/user.sh
The customer had not tailored user.sh;  it was entirely comments, as distributed.

#!/bin/sh
# --- Oracle Tech Support 19 Jun 2012
# This file is sourced by run-sa.sh for nqsserver, run-ccs.sh and run-sch.sh scripts
# In NQSConfig.INI, should specify Teradata library as:
# /opt/teradata/client/ODBC_64/lib/tdata.so
# There is no Teradata provision for abstracting tdicu from version 13.10

TD_ICU_DATA=/opt/teradata/client/13.10/tdicu/lib64
  TERA_HOME=/opt/teradata/client/ODBC_64
     COPLIB=/opt/teradata/client/ODBC_64/lib
   ODBCHOME=/opt/teradata/client/ODBC_64
    ODBCINI=/opt/OracleBI/setup/odbc.ini
LD_LIBRARY_PATH\
=/opt/OracleBI/server/Bin64\
:/opt/OracleBI/odbc/lib64\
:/opt/oracle/product/10.2.0/client/lib\
:/opt/teradata/client/ODBC_64/lib\
:/opt/teradata/teragss/solaris-sparc/client/lib\
:/opt/OracleBI/web/bin64

LD_PRELOAD_64=/usr/lib/sparcv9/libmtmalloc.so

unset  LD_LIBRARY_PATH_64
export LD_LIBRARY_PATH LD_PRELOAD_64 TD_ICU_DATA TERA_HOME COPLIB ODBCHOME ODBCINI

#-------- Original obiee user.sh file below ----------  

Caution if you modify user.sh on Windows:

  1. Remove any Windows line-end characters from the file.
    On Solaris,   vi user.sh should not display any ^M characters.
    dos2unix user.sh
  2. There must be no spaces before or after the continuation character (\)
  3. There must be no leading spaces on the lines that follow lines ending in \



Useful bash functions and aliases

export SAROOTDIR=/opt/OracleBI
export TERA_HOME=/opt/teradata/client/ODBC_64 
export ORACLE_HOME=/opt/oracle/product/10.2.0/client

export ODBCINI=$SAROOTDIR/setup/odbc.ini
export TD_ICU_DATA=$TERA_HOME/tdicu/lib64

alias cds="alias | grep '^alias cd' | sed 's/^alias //' | sort"

alias cdtd="cd $TERA_HOME; ls" 
alias cdtdodbc="cd $TERA_HOME/odbc_64; ls -l"
alias cdtdicu="cd $TERA_HOME/tdicu/lib64; ls -l"

alias cdbi="cd $SAROOTDIR; ls"
alias cdbiodbc="cd $SAROOTDIR/odbc; ls -l"
alias cdsetup="cd $SAROOTDIR/setup; ls -ltr"
alias cdsvr="cd $SAROOTDIR/server; ls"
alias cdrep="cd $SAROOTDIR/server/Repository; ls -ltr"
alias cdsvrcfg="cd $SAROOTDIR/server/Config; ls -ltr"
alias cdsvrlog="cd $SAROOTDIR/server/Log; ls -ltr"
alias cdweb="cd $SAROOTDIR/web; ls"
alias cdwebconfig="cd $SAROOTDIR/web/config; ls -ltr"
alias cdoci="cd $ORACLE_HOME; ls"

function md5 {
  _P=$1
  [ -z "$_P" ] && return
  _B=$basename $_P)
  local  _md5sum=$(digest -amd5 $_P |tail -1 |sed 's/.* = //')
  echo "$_md5sum $_B"
  }
pkgfiles() { pkgchk -l $1 |awk  '/^Pathname/ {print $2}'; }
pkgfind()  { pkginfo |egrep -i $1 ; }

Examples:

$ pkgfind td
$ pkgfiles tdodbc1310 | grep 64
$ cds
$ cdtdodbc
$ cdsetup
$ cdsvrlog
$ cdweblog
$ md5 .bashrc


Comments:

Post a Comment:
Comments are closed for this entry.
About

Dick Dunbar
is an escalation engineer working in the Customer Engineering & Advocacy Lab (CEAL team)
for Oracle Analytics and Performance Management.
I live and work in Santa Cruz, California.
I'll share the techniques I use to detect, avoid and repair problems.

Search

Categories
Archives
« April 2014
SunMonTueWedThuFriSat
  
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
   
       
Today